前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Rancher某环境所有主机网络瘫痪问题

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

原创
作者头像
码代码的陈同学
发布2018-06-26 22:12:47
2.6K1
发布2018-06-26 22:12:47
举报

欢迎访问陈同学博客原文

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

代码语言:txt
复制
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 讲述:

代码语言:txt
复制
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: 疑惑待解决

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 发现问题
  • 排查问题
  • 解决方式
  • 问题重现
  • 问题探索
    • 为什么主机IP会变成172.17.0.1?
      • 为什么一台主机出问题会影响全部主机?
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档