轻量负载均衡健康检查异常排查方法

更新时间:
复制 MD 格式

轻量应用负载均衡通过健康检查来判断后端服务器的业务可用性,开启健康检查功能后,当某台后端服务器健康检查出现异常时,轻量应用负载均衡会自动将新的请求分发到其他健康检查正常的后端服务器上,避免了局部后端服务器异常对总体服务的影响从而保证业务高可用。当出现健康检查异常时,您可参考本文进行排查解决。

问题描述

在轻量负载均衡绑定后端实例后,健康检查状态不健康

问题原因

可能原因如下:

  • 后端轻量应用服务器未安装80服务或未开启80端口

  • 缺少配置10网段网卡

  • 缺少配置10.16.0.0/12路由

排查思路

您可以根据以下方案排查问题,后端实例的操作系统以Alibaba Cloud Linux 3为例。

步骤一:排查后端轻量服务器是否安装监听80端口的Web服务并放行80端口

轻量应用负载均衡的健康检查功能默认检查HTTP请求的80端口,请确保您后端实例的防火墙放行了80端口,且后端实例内已安装了NginxWeb服务(选择系统镜像创建的轻量应用服务器,默认没有安装Web服务,您需要自行安装Web服务)。

  1. 远程连接绑定的后端轻量应用服务器。具体操作,请参见远程连接Linux服务器

  2. 执行以下命令,检查后端轻量应用服务器是否已安装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
  3. 执行以下命令,测试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端口,具体操作,请参见防火墙设置

  4. 在轻量应用服务器的控制台刷新后端实例列表,查看健康检查状态是否已恢复为健康

步骤二:排查后端轻量服务器是否存在10网段的新网卡

  1. 远程连接绑定的后端轻量应用服务器。具体操作,请参见远程连接Linux服务器

  2. 执行以下命令,查看后端轻量服务器是否存在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
  3. 在轻量应用服务器的控制台刷新后端实例列表,查看健康检查状态是否已恢复为健康

步骤三:排查是否存在10.16.0.0/12路由配置

当轻量应用服务器未配置10.16.0.0/12路由时,也会导致轻量应用负载均衡收不到健康检查探测的数据包,造成健康检查异常。

  1. 远程连接绑定的后端轻量应用服务器。具体操作,请参见远程连接Linux服务器

  2. 执行以下命令,查看后端轻量服务器是否存在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地址。

  3. 在轻量应用服务器的控制台刷新后端实例列表,查看健康检查状态是否已恢复为健康