轻量应用负载均衡通过健康检查来判断后端服务器的业务可用性,开启健康检查功能后,当某台后端服务器健康检查出现异常时,轻量应用负载均衡会自动将新的请求分发到其他健康检查正常的后端服务器上,避免了局部后端服务器异常对总体服务的影响从而保证业务高可用。当出现健康检查异常时,您可参考本文进行排查解决。
问题描述
在轻量负载均衡绑定后端实例后,健康检查状态为不健康。
问题原因
可能原因如下:
-
后端轻量应用服务器未安装80服务或未开启80端口
-
缺少配置10网段网卡
-
缺少配置
10.16.0.0/12路由
排查思路
您可以根据以下方案排查问题,后端实例的操作系统以Alibaba Cloud Linux 3为例。
步骤一:排查后端轻量服务器是否安装监听80端口的Web服务并放行80端口
轻量应用负载均衡的健康检查功能默认检查HTTP请求的80端口,请确保您后端实例的防火墙放行了80端口,且后端实例内已安装了Nginx等Web服务(选择系统镜像创建的轻量应用服务器,默认没有安装Web服务,您需要自行安装Web服务)。
-
远程连接绑定的后端轻量应用服务器。具体操作,请参见远程连接Linux服务器。
-
执行以下命令,检查后端轻量应用服务器是否已安装80服务。
sudo su netstat -nplt-
如果回显信息类似如下所示,表示已安装并运行Nginx服务。
[root@iZbp1cw nyZ admin]# netstat -nplt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 6906/nginx: master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1084/sshd tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 553/systemd-resolve tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::80 :::* LISTEN 6906/nginx: master tcp6 0 0 :::5355 :::* LISTEN 553/systemd-resolve -
如果显示类似如下信息,表示后端轻量服务器没有开启80服务。
[admin@iZbp1******nui3nyZ ~]$ sudo su [root@iZbp1******nui3nyZ admin]# netstat -nplt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1084/sshd tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 553/systemd tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::5355 :::* LISTEN 553/systemd-resolve请执行以下命令,安装(如果未安装)并启动80服务。本示例以安装并启动Nginx为例。
sudo yum install -y nginx sudo systemctl start nginx
-
-
执行以下命令,测试80端口是否开启。
telnet 47.98.XX.XX 80其中:47.98.XX.XX需要替换为轻量应用服务器的公网IP地址。
当出现类似如下信息,表示80端口已开启。
[root@iZbp1cxxx ui3nyZ admin]# telnet 47.xxx.29 80 Trying 47.xxx.29... Connected to 47.xxx.29. Escape character is '^]'.如果端口不通,请在轻量应用服务器控制台放行80端口,具体操作,请参见防火墙设置。
-
在轻量应用服务器的控制台刷新后端实例列表,查看健康检查状态是否已恢复为健康。
步骤二:排查后端轻量服务器是否存在10网段的新网卡
-
远程连接绑定的后端轻量应用服务器。具体操作,请参见远程连接Linux服务器。
-
执行以下命令,查看后端轻量服务器是否存在10网段的新网卡。
ifconfig-
如果存在类似的回显信息,表示存在10网段的新网卡。
[root@xxx admin]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.53.223 netmask 255.255.192.0 broadcast 172.17.63.255 inet6 fe80::216:3eff:fe03:620e prefixlen 64 scopeid 0x20<link> ether 00:16:3e:03:62:0e txqueuelen 1000 (Ethernet) RX packets 328446 bytes 123840881 (118.1 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 337718 bytes 47299352 (45.1 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.26.9.104 netmask 255.255.0.0 broadcast 10.26.255.255 inet6 fe80::216:3eff:fe41:a11b prefixlen 64 scopeid 0x20<link> ether 00:16:3e:41:a1:1b txqueuelen 1000 (Ethernet) RX packets 143994 bytes 8782433 (8.3 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 143421 bytes 7309714 (6.9 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 -
如果回显信息中不存在10网段的新网卡,则依次执行以下命令,配置网卡脚本。
wget https://image-offline.oss-cn-hangzhou.aliyuncs.com/multi-nic-util/multi-nic-util-0.6.tgz tar -zxvf multi-nic-util-0.6.tgz cd multi-nic-util-0.6 sudo bash install.sh sudo systemctl restart eni.service
-
-
在轻量应用服务器的控制台刷新后端实例列表,查看健康检查状态是否已恢复为健康。
步骤三:排查是否存在10.16.0.0/12路由配置
当轻量应用服务器未配置10.16.0.0/12路由时,也会导致轻量应用负载均衡收不到健康检查探测的数据包,造成健康检查异常。
-
远程连接绑定的后端轻量应用服务器。具体操作,请参见远程连接Linux服务器。
-
执行以下命令,查看后端轻量服务器是否存在
10.16.0.0/12路由。route-
如果存在类似回显信息,表示存在
10.16.0.0/12路由。[root@iZbp1cwaxxxxx admin]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default _gateway 0.0.0.0 UG 100 0 0 eth0 default _gateway 0.0.0.0 UG 101 0 0 eth1 10.16.0.0 _gateway 255.240.0.0 UG 0 0 0 eth1 10.28.0.0 0.0.0.0 255.255.0.0 U 101 0 0 eth1 172.17.0.0 0.0.0.0 255.255.192.0 U 100 0 0 eth0 -
如果回显信息中不存在
10.16.0.0/12路由,则需要依次执行以下命令,配置路由脚本。sudo ip route add 10.16.0.0/12 via 172.17.XX.XX dev eth1 sudo sed -i 's/network.service/NetworkManager.service/g' /usr/lib/systemd/system/eni.service sudo systemctl daemon-reload sudo systemctl restart eni.service其中:172.17.XX.XX需要替换为服务器实际的私网IP地址。
-
-
在轻量应用服务器的控制台刷新后端实例列表,查看健康检查状态是否已恢复为健康。