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 条评论
登录 后参与评论

相关文章

来自专栏腾讯NEXT学位

小程序iOS客户端框架——控件事件逻辑框架与控件原生化(上)

? 小程序自发布以来,为开发者和用户提供了一种轻量级的App。作为一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打...

1321
来自专栏葡萄城控件技术团队

HTML5 & CSS3初学者指南(3) – HTML5新特性

介绍 本文介绍了 HTML5 的一些新特性。主要包含以下几个方面: Web 存储 地理位置 拖放 服务器发送事件 Web存储 HTML5...

2278
来自专栏不二小段

【爬虫军火库】AnyProxy安装使用【Windows】

分析网络请求详情是写爬虫应用的初始步骤,抓包便是一种十分强大的分析手段,尤其是对手机App进行抓包,往往能收获到Web端没有的API接口。抓包的工具多种多样,功...

1.6K6
来自专栏BeJavaGod

搜索服务solr 一二事(1) - solr-5.5 使用自带Jetty或者tomcat 搭建单机版搜索服务器

solr,什么是solr,就是你要吃的东西“馊了”,不能吃了,out of date~ 嘛。。。开个玩笑,发音就是‘搜了’,专门用于搜索的一个开源框架,lunc...

3136
来自专栏腾讯开源的专栏

无需后台接入?带你玩转VasSonic 2.0里的Local Server

腾讯手Q增值团队于今年8月份正式开源了VasSonic,一个轻量级高性能的Hybrid框架。VasSonic框架使用并行加载、动态缓存、增量更新等手段,实现了终...

3980
来自专栏Coco的专栏

【nodeJS爬虫】前端爬虫系列 -- 小爬「博客园」

1568
来自专栏工科狗和生物喵

搭建你自己的网站--LAMP架构(Ubuntu 16.04)

笔者目前算是一个WEB方向的踽踽前行的小菜鸟,但是也是现在手上有两台云服务器在手的人了,网站也做了两个了,所以,今天接着昨天的话题,我们来搭建一个自己网站,这样...

7455
来自专栏别先生

雅虎Yahoo 前段优化 14条军规

Yahoo 14条 雅虎十四条 腾讯前端设计的Leader推荐我背熟的。请大家都能好好学习,不要像我一样一扫而过,好好的记下来!不仅仅是晓得一些CSS x...

19310
来自专栏张戈的专栏

Linux下通过rdesktop连接Windows远程桌面

在家手痒,又把本本的系统换成了 Linux。收到公司服务器的报警之后,突然想起需要用 VPN 远程处理。只好又折腾下 linux 下的远程桌面了。 下面简单的记...

4987
来自专栏地方网络工作室的专栏

打造前端 Deepin Linux 工作环境——安装配置 atom 编辑器

打造前端 Deepin Linux 工作环境——安装配置 atom 编辑器 好,我个人推荐大家使用 atom 编辑器,第一是免费,第二是好看,第三是好用。 安装...

3858

扫码关注云+社区