专栏首页码代码的陈同学Rancher某环境所有主机网络瘫痪问题
原创

Rancher某环境所有主机网络瘫痪问题

欢迎访问陈同学博客原文

Rancher 1.6.14 OS:Ubuntu 16.04

本文记录Rancher整个环境因一台主机网络问题导致环境中所有主机网络瘫痪,无法跨主机通讯问题。

发现问题

收到故障预警邮件,网站无法访问。

为了便于介绍,先画个请求处理的简图:

请求由nginx做第一层转发,haproxy是Rancher提供的标准Loader Balance组件,可以将请求根据规则代理到特定的应用,如果应用多实例,同时会做负载均衡。

排查问题

  • ping 域名,能通 => 说明网络正常
  • 访问网站地址,nginx日志中请求状态为502504 => 说明请求到达了nginx,后续网关出现了问题

注:502 Bad Gateway; 504 Gateway Time-out

  • 查看Rancher中所有主机,发现所有Rancher网络容器 healthcheck 组件处于 initializing 状态,且不同主机之间的容器无法ping通 => 证实Rancher网络出现了问题

所有主机的healthcheck状态如下截图:

<img width="60%"src="https://media.chenyongjun.vip/2018/06/26/6fa73d3128a2400d829dd616c03a4603.png"/>

  • 查看 healthcheck、rancher-agent、rancher-server、network-manager 这些容器的日志,毫无收获 => 陷入尴尬,对于使用的第三方工具,若未深入了解,遇到问题就非常被动
  • 想起上次处理过的rancher网络问题, Rancher无法启动healthcheck和lb,根据rancher官方步骤进行排查:
  • 主机未启用 UFW 服务,排除防火墙干扰
  • 检查控制台主机IP是否正确,发现端倪,如下图:

一台主机的IP变成了 172.17.0.1,这不是机器的正常IP,一般是 docker0 网桥的IP

<img width="60%" src="https://media.chenyongjun.vip/2018/06/26/4941b27646624b84a7bf71ef210b35d7.png">

  • ifconfig 检查问题主机IP,172.17.0.1 为 docker0的IP。Rancher官网说遇到IP不对需要重新注册主机

这下GG了,只能把主机上的容器移走或stop

docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 0.0.0.0
        inet6 fe80::42:9cff:fea1:bc40  prefixlen 64  scopeid 0x20<link>
        ether 02:42:9c:a1:bc:40  txqueuelen 0  (Ethernet)
        RX packets 144756223  bytes 17497382352 (16.2 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 124049363  bytes 79629803176 (74.1 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 将这台问题主机移除后,重启其他主机的healthcheck服务,各主机通讯恢复正常。至此,问题排查结束。

解决方式

移除问题主机,并重新添加,这台问题主机恢复正常。

注:忘了这是第几次处理Rancher网络问题了,Rancher一个个版本升级上来,也是踩坑不少

问题重现

且不管问题因何引发,好奇的是一台主机的IP不对怎么会引发所有主机雪崩?尝试重现该问题。

重现方式:在一个网络正常的环境中添加一台IP为 docker0 网桥上的主机,IP为: 172.17.0.1

重现结果:添加IP为 172.17.0.1 的主机后,整个环境的网络立马异常,主机之间无法通讯,复现了上述问题

问题探索

为什么主机IP会变成172.17.0.1?

在Rancher官网 FAQs cross host communication 讲述:

Every so often, the IP of the host will accidentally pick up the docker bridge IP instead of the actual IP. These are typically 172.17.42.1 or starting with 172.17.x.x. If this is the case, you need to re-register your host with the correct IP by explicitly setting the CATTLE_AGENT_IP environment variable in the docker run command.

即每隔一段时间,偶尔会使用docker网桥IP来替换主机实际IP,这些IP通常是172.17.42.1或以172.17.x.x开始。如果遇到这种情况,需要重新添加主机。

todo: 疑惑待解决

为什么一台主机出问题会影响全部主机?

todo: 疑惑待解决

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Rancher无法启动healthcheck和lb

    一个新产品临近上线,全部采购了腾讯云ECS服务器,安装了Rancher 1.6.17做容器编排。在添加主机到服务器集群时,rancher的 healthchec...

    码代码的陈同学
  • Procedure Call and Stack

    最近查资料时,偶然在youtobe看到了华盛顿大学自然科学与工程一位老师 关于 Procedure & Stacks 的课程,深入讲解了基于Stack的过程调用...

    码代码的陈同学
  • 高性能应用之理解JVM堆内存

    译者前言:由于译者已翻译 JVM 栈和栈帧、JVM内存管理,本文将只翻译部分不重叠的内容,同时将翻译下面2篇文章的部分内容.

    码代码的陈同学
  • 顺序容器之vector

    这就是vector的内存结构模型,这里最需要注意的是end()是指向最后一个元素的下一个位置,不是刚好指向最后一个元素

    用户5426759
  • PAT 1008

    The highest building in our city has only one elevator. A request list is made u...

    week
  • 记一次数据库的分析和优化建议(r6笔记第24天)

    数据库的巡检是DBA工作中的一部分,有时候我们还是希望能够在巡检的基础上发现一些潜在的问题,把尽可能多的问题解决在初始阶段。 今天来给大家举一个数据库巡检和性能...

    jeanron100
  • Bioscience Reports接收meta分析的分子生物学sci期刊

    该杂志偏重收录以下研究方向:肿瘤、分子生物学、细胞生物学、基金、蛋白、信号、代谢、免疫等。

    微点
  • Python中COM口的调用

    py3study
  • 文本编码转换工具iconv 附批量转换文件编码命令

    网络上下载的好多文本是GBK的编码,在mac电脑上打开是乱码 除了下载有多种编码的文本编辑器外,通过终端也可以进行转码 iconv -f GBK -t UTF-...

    Albert陈凯
  • 互联网公司掘金bd助理面试

    牛客网

扫码关注云+社区

领取腾讯云代金券