内容纲要
概要描述
在安装、升级、卸载重装 TDH,或者服务器系统打补丁或升级等场景下,重启 TOS 时会遇到启动失败的问题。检查启动页面的报错详细信息会发现是 haproxy 启动失败,本文就来对几类错误进行归纳。
详细说明
TDH 升级、卸载重装时 TOS 启动失败
该类场景下,启动 TOS 相关角色时失败,systemctl status haproxy
或 journalctl -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 的启动参数里的异常如下图,路径不对:
正常 TOS 的 haproxy 角色该启动参数应为:/etc/tos/conf/haproxy.cfg
解决:
-
修改
/usr/lib/systemd/system/haproxy.service
,或者从正常节点拷贝一个到有问题的节点。
-
重启 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 *:*