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

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

    • 1.1. 1. 问题背景
    • 1.2. 2. 问题排查
    • 1.3. 3. 根因分析
    • 1.4. 4. 附带影响
    • 1.5. 5. 解决方法
    • 1.6. 5.后续安排
    • 1.7. 6. 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

iptables加载顺序问题及优化方法相关推荐

  1. java静态方法加载顺序_java中类以及方法的加载顺序

    先看下面的代码: public class Test { public static int a =0 ; static { a = 10; System.out.println("静态代码 ...

  2. easyui datagrid数据加载缓慢问题,优化方法

    问题:数据列表展示,主从表展示,多表展示.每个表10行,10-20列.谷歌浏览器.页面加载速度大于5S 解决方法1:列宽度设为固定值,取消自适应.页面加载速度低于2S 参考于:http://www.o ...

  3. DevExpress ChartControl大数据加载时有哪些性能优化方法

    DevExpress ChartControl加载大数据量数据时的性能优化方法有哪些? 关于图表优化,可从以下几个方面解决: 1.关闭不需要的可视化的元素(如LineMarkers, Labels等) ...

  4. php 扩展加载顺序,关于PHP中extension加载顺序问题的解决方法

    有的php扩展,加载是有先后顺序的,如果搞错了,会导致扩展无法加载. 1.pdo_sqlsrv是sqlserver扩展,如果在pdo扩展之前加载就会报以下错误:PHP Warning: PHP Sta ...

  5. 异步加载js的三种方法

    js加载时间线 : 它是根据js出生的那一刻开始记录的一系列浏览器按照顺序做的事,形容的就是加载顺序,可以用来优化什么东西,理论基础,背下来. 1.创建Document对象,开始解析web页面.解析H ...

  6. springboot配置文件加载顺序_「SpringBoot系列」配置文件加载优先级解析

    SpringBoot提供了外部分配置功能,可以使用属性文件(properties).YAML(yml)文件.环境变量和命令行参数来进行处部参数配置,并t以特定的顺序来处理配置,以便于允许合理的覆盖值. ...

  7. 浏览器的加载顺序与页面性能优化

    详情参考:浏览器的加载与页面性能优化 例子: 一:DNS:在header中添加 <link rel="dns-prefetch" href="//HOSTNAME. ...

  8. JAVA方法加载顺序

    JAVA方法加载顺序 类加载机制 类加载器的任务就是根据一个类的全限定名来读取次类的二进制字节流到JVM转换成 java.lang,class类 类加载过程:加载.验证.准备.解析和初始化. 双亲委托 ...

  9. Java类中方法的加载顺序

    1 父类 public class Father {static {System.out.println("父类静态初始化块1");}public static int fsm = ...

最新文章

  1. zabbix1.8和2.0版本通用的安装脚本
  2. 20175221 MyCP(课下作业,必做)
  3. 4G室内直放站_室内信号不太好,安装一个手机信号放大器,有效果吗?
  4. Maximum Subarray leetcode java
  5. Spring Cloud中的@EnableDiscoveryClient注解和@EnableEurekaClient注解
  6. 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。...
  7. [修复] Eclipse – Java编译器级别与已安装的Java项目构面的版本不匹配
  8. IntelliJ IDEA 新版本又来了,修复严重 bug!
  9. mac启动rabbitmq_从0到1学习Flink—— Flink 读取 Kafka 数据写入到 RabbitMQ
  10. \r,\n,\r\n的问题分析
  11. maple里面怎么搜索_教你用Maple全局优化工具寻找最值
  12. 用matlab画指定点与点之间的连线
  13. mysql PT工具
  14. 【算法】算法之会议安排问题(C++源码)
  15. 【软件需求工程】北理的恶龙们04——项目成果总结
  16. 【python】【爬虫】爬取电子书《红星照耀中国》
  17. vue + ElementUI + BMap 百度地图实现地图选址定位并获取地址信息
  18. JavaScript - 正则(RegExp)判断文本框中是否包含特殊符号
  19. 动态规划算法 | 最长递增子序列
  20. [官方Flink入门笔记 ] 三、开发环境搭建和应用的配置、部署及运行

热门文章

  1. OpenSUSE 13.1 和 OpenSUSE 12.3 用户如何安装 Cinnamon 2.2 桌面
  2. 兼容IE,chrome 等所有浏览器 回到顶部代码
  3. Android App截包工具
  4. 常用maven插件总结
  5. [转]12款最佳Linux命令行终端工具
  6. MyBatis 之 动态SQL
  7. Xcode6中添加pch文件
  8. Hadoop权威指南阅读笔记
  9. 禁止冒名顶替Exchange用户发送邮件
  10. 微软发布 Mobile Express for Microsoft Dynamics CRM 4.0