iptables加载顺序问题及优化方法

1. 问题背景

近期, 在跟进存储节点升级 RAID 卡固件的事情时, 发现部分集群在重启机器后, 有极大的概率出现 client request block 的问题, block 时业务受到影响, 但隔一小段时间后, 故障能自行恢复. 问题重现机率高, 影响面大, 所以深入进一步排查.

2. 问题排查
  1. 通过 OSD 日志发现, 故障期间 OSD 日志有报出连接问题, 并在问题连接最终断开并重新连上后, 故障恢复
  2. 检查所有节点的网络通迅, 路由表, MTU, 防火墙, 均无发现问题
  3. 线索1: 在解决部分 block request 时, 为解决 block request, 停了全部 OSD; 发现全停了 OSD 后, 再次启动后并没有出现 block request, 获得线索1 
    • 线索1: 重新启动的 OSD 表现正常, 并多次验证依然如此, 推测第一次 OSD 启动时, 可能有部分设置有问题导致故障
  4. 根据线索1, 第一时间想到了 /etc/rc.local 中最后加载的配置, 其中存储节点只有防火墙及 sysctl 配置加载
  5. 验证: 注释 rc.local, 进行重启, 确认没有出现 block request, 问题原因缩小到防火墙及 sysctl 配置差异
  6. 一开始怀疑到 sysctl 最后才加载, 导致前面 OSD 节点在并发启动 OSD 服务时, backlog等网络参数过小, 导致丢包或连接丢失问题
  7. 排除验证: 通过对 /etc/rcS.d 的过滤, 确认在 ceph 服务启动前, sysctl 已经由系统内置的加载过一遍
  8. 钩子验证: 通过在 /etc/init.d/ceph 的启动配置中, 加入输出 sysctl 配置的操作, 进一步验证了 sysctl 的配置已经是加载过(在 /etc/rcS.d/S11procps 中加载)
  9. 至此基本可以确认防火墙的加载导致故障, 但尚未进行根因分析
3. 根因分析

这段时间正好遇到新上的一波计算节点出现不少节点的 nova 服务异常故障, 一联想可能是同个问题导致, 并做进一步的根因分析

  1. 拿两台有问题的计算节点, 一台注释防火墙加载, 一台保持原配置, 重启机器, 观察到不加载防火墙的计算节点nova-compute服务正常, 而加载了防火墙的节点 nova-compute 服务异常 
    • 表现: nova-compute 服务异常时, 日志不定时刷新, 但从master的nova service-list 以及 rabbitmap的状态中, 却能观察到正常的心跳及连接
  2. 通过观察防火墙规则, 初步判断为 TCP 连接的建立先于 conntrack 规则的加载, 导致 conntrack 规则加载后, 原来已经握手完成的 TCP 数据包被识别为异常数据包, 进而被 Drop, 导致 网络连接状态异常

    • 这也就可以解释为什么重启一次服务后, 又能正常, 因为此次 conntrack 规则已经生效中
    • 这也就可以解释为什么nova-compute服务异常后, 还能有正常的心跳反馈出去(因为这只是出去的包, 无限制)
  3. 通过开启iptables的 LOG, 进行debug, 确认该猜测, 原因明确

root@cld-acc162-32:/etc/rcS.d# dmesg | grep 'DROP' | grep '10.200.12.102' [ 140.173826] INPUT:DROP IN=eth0 OUT= MAC=9c:dc:71:64:9e:b0:5c:b9:01:d0:9e:c0:08:00 SRC=10.200.12.102 DST=10.200.13.135 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=47100 DF PROTO=TCP SPT=5672 DPT=40445 WINDOW=59 RES=0x00 ACK PSH URGP=0 [ 140.381274] INPUT:DROP IN=eth0 OUT= MAC=9c:dc:71:64:9e:b0:5c:b9:01:d0:9e:c0:08:00 SRC=10.200.12.102 DST=10.200.13.135 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=47101 DF PROTO=TCP SPT=5672 DPT=40445 WINDOW=59 RES=0x00 ACK PSH URGP=0 [ 140.589186] INPUT:DROP IN=eth0 OUT= MAC=9c:dc:71:64:9e:b0:5c:b9:01:d0:9e:c0:08:00 SRC=10.200.12.102 DST=10.200.13.135 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=47102

转载于:https://www.cnblogs.com/lifei02/p/9892675.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值