背景:客户报障CLB部分机器出现健康检查异常,流量掉零。本文章简单总结腾讯云IPV6排查思路。
产品特性
IPv6 负载均衡是基于 IPv6 单栈技术实现的负载均衡,和 IPv4 负载均衡协同工作,实现 IPv6/IPv4 双栈通信。IPv6 负载均衡绑定的是云服务器的 IPv6 地址,并对外提供 IPv6 VIP 地址。
健康检查逻辑(IPV6 CLB)
监听器健康检查主要两种方式,TCP通过使用SYN包,HTTP通过使用http请求方式。
TCP 健康检查机制如下(本次故障用到的场景):
- 负载均衡向后端 CVM(内网IP 地址 健康检查端口)发送 SYN 连接请求报文。
- 后端 CVM 收到 SYN 请求报文后,若相应端口处于正常监听状态,则会返回 SYN ACK 响应报文。
- 若在响应超时时间内,负载均衡收到后端 CVM 返回的 SYN ACK 响应报文,则表示服务运行正常,判定健康检查成功,并向后端 CVM 发送 RST 复位报文中断 TCP 连接。
- 若在响应超时时间内,负载均衡未收到后端 CVM 返回的 SYN ACK 应报文,则表示服务运行异常,判定健康检查失败,并向后端 CVM 发送 RST 复位报文中断 TCP 连接。
健康检查要求(IPV6 CLB)
1、安全组要求:
- CLB安全组:
作用于CLB实例,具备有状态的数据包过滤功能,控制实例级别的出入流量。CLB的安全组属性有两个模式:开启默认放通状态/关闭默认放通状态。开启放通功能后,后端的CVM安全组可以不需要放通Client IP 和服务端口。默认情况下,IPv6 CLB 安全组默认放通为开启状态,且无法关闭。
CVM安全组:
关闭默认放通状态情况下,需要对IPV6请求放开;
开启默认放通状态,不需要设置;
2、云主机设置
需要配置IPV6 ip,如果是传统账户,则要求配置IPV6外网带宽;
后端服务,需要支持IPV6监听;
故障回顾
【问题描述】
客户反馈同一个CLB上有CVM出现健康检查异常,但机器应用是正常的。
【初步排查】
- 检查安全组;
CLB安全组上,开启了默认放通的功能,且未对client等做了IP限制;
CVM安全组上,未对CLB VIP做限制;
2、CVM配置:
CVM ipv6配置已生效,客户账户是非系统账号,CLB支持下,云主机可以不需要配置外网带宽;
应用服务正常,客户反馈该端口同时提供ipv4和ipv6应用,目前ipv4服务是正常的。
3、CLB集群检查
CLB集群服务正常,集群流量、QPS等未出现突降等情况,可用性探测正常;
【排查受限】
客户生产机器,客户侧也无法登陆机器,提供排查信息,无法抓包等操作配合排查;走流程申请权限需要时间。
【临时恢复方案】
健康检查异常的机器,已自动剔除。现网业务不影响,建议客户侧暂时将该机器剔除。
【深入排查】
- 抓取探测包信息:抓包点:CLB集群、CVM硬件网卡:都只收到了SYN包,CVM未能相应SYN ACK;
CVM抓到了CLB给过来的SYN包,奈何没有相应;
2、Ng服务器日志排查
请求没有进入应用层,没有日志生成;
综合以上,怀疑是路由问题,路由没有到达应用层。
3、排查路由
确认路由缺少默认路由,导致机器无法达到下一跳。
【规避措施】
- 给机器添加上默认路由;default dev eth0
- 梳理IPV6机器配置
配置文件一:/etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
配置文件二:/etc/sysconfig/network-scripts/ifcfg-eth0
DHCPV6C=yes
配置文件三:/etc/sysconfig/network-scripts/route6-eth0
default dev eth0 via fe80::feee:ffff:feff:ffff或者是default dev eth0
PS:文章部分截图取自腾讯云官网。