haproxy 启动失败问题归纳

内容纲要

概要描述


在安装、升级、卸载重装 TDH,或者服务器系统打补丁或升级等场景下,重启 TOS 时会遇到启动失败的问题。检查启动页面的报错详细信息会发现是 haproxy 启动失败,本文就来对几类错误进行归纳。

详细说明


TDH 升级、卸载重装时 TOS 启动失败

该类场景下,启动 TOS 相关角色时失败,systemctl status haproxyjournalctl -u haproxy | egrep -i "fail|error" 出现如下类似错误:

--
Failed at step EXEC spawning /usr/sbin/haproxy-systemd-wrapper:No such file or directory
--

分析:该问题可能是安装时缺失文件导致

解决:以 Centos7 为例,可用如下方法解决

# 备份 haproxy.service 文件
[root@amen01-7 ~]# mv /usr/lib/systemd/system/haproxy.service{,.rpmsave} 

# 重装 haproxy
[root@amen01-7 ~]# yum erase -y haproxy && yum install -y haproxy

# 把备份好的 haproxy.service 还原
[root@amen01-7 ~]# mv -f /usr/lib/systemd/system/haproxy.service.rpmsave /usr/lib/systemd/system/haproxy.service 

# 重启 haproxy
[root@amen01-7 ~]# systemctl daemon-reload && systemctl restart haproxy && systemctl enable haproxy


服务器系统打补丁或升级后,TOS 启动失败

该类场景下启动 TOS 相关角色时,TOS slave 能启动成功,但是其余 TOS 角色启动失败,排查线索如下:

# K8s 连接 apiserver 被拒
[root@amen01-7 ~]# kubectl get po -n kube-system
The connection to the server 127.0.0.1:6443 was refused - did you specify the right host or port?

# 查看 6443 端口没在监听
[root@amen01-7 ~]# ss -lanp | egrep 6443 | grep -i listen
[root@amen01-7 ~]# 

# 查看 haproxy 状态正常 running
[root@amen01-7 ~]# systemctl status haproxy.service 
● haproxy.service - HAProxy Load Balancer
   Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-07-22 16:47:57 CST; 12min ago
--

但可以看到 haproxy 的启动参数里的异常如下图,路径不对:
file

正常 TOS 的 haproxy 角色该启动参数应为:/etc/tos/conf/haproxy.cfg

解决

  • 修改 /usr/lib/systemd/system/haproxy.service,或者从正常节点拷贝一个到有问题的节点。
    file

  • 重启 haproxy,以 Centos7 为例,可以看到 6443 端口已经处于 LISTEN 状态,然后再重试启动 TOS

    [root@amen01-7 ~]# systemctl daemon-reload && systemctl restart haproxy && ss -lanp | egrep 6443 | grep -i listen
    tcp    LISTEN     0      1024      *:6443                  *:* 

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。