欢迎访问陈同学博客原文

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状态如下截图:

  • 查看 healthcheck、rancher-agent、rancher-server、network-manager 这些容器的日志,毫无收获 => 陷入尴尬,对于使用的第三方工具,若未深入了解,遇到问题就非常被动

  • 想起上次处理过的rancher网络问题, Rancher无法启动healthcheck和lb,根据rancher官方步骤进行排查:

    • 主机未启用 UFW 服务,排除防火墙干扰
    • 检查控制台主机IP是否正确,发现端倪,如下图:

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

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

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

docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.1  netmask 255.255.0.0  broadcast 0.0.0.0inet6 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 0TX 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: 疑惑待解决

Rancher某环境所有主机网络瘫痪问题相关推荐

  1. 在 Docker 中运行 MySQL:多主机网络下 Docker Swarm 模式的容器管理

    本文将以多主机网络环境为基础,探讨如何利用内置编排工具 Docker Swarm 模式对各主机上的容器加以管理. Docker Engine – Swarm 模式 在多台主机之上运行 MySQL 容器 ...

  2. docker多主机网络方案

    本文探讨Docker多主机网络的性能. 在过去的博文里,我测试过 Docker的网络 . MySQL服务器团队 提供了他们自己的结果,和我的观察是一致的. 本文里一系列的测试,想更多关注使用多主机的D ...

  3. Docker初学乍练之单主机网络

    一.Docker bridge network Docker 桥接网络使用软件桥接, 该软件桥接允许连接到同一桥网的容器进行通信, 同时提供与未连接到该桥网络的容器的隔离.Docker 桥接驱动程序会 ...

  4. docker swarm MySQL_容器与云|在 Docker 中运行 MySQL:多主机网络下 Docker Swarm 模式的容器管理...

    本文将以多主机网络环境为基础,探讨如何利用内置编排工具 Docker Swarm 模式对各主机上的容器加以管理. Docker Engine – Swarm 模式 在多台主机之上运行 MySQL 容器 ...

  5. 目前网络环境介绍目前网络环境

    目前网络环境介绍目前网络环境 • 公司介绍 – 一家网络服务的IT公司 知 识 讲 解 – 公司位于北京有80多台服务器 – 通过NAT技术将web服务器发布给Internet 公司 服务器集群 服务 ...

  6. docker单主机网络类型

    作为小笔记参考!!! 这个文主要写了docker 单主机网络类型 none host container bridge 前面三个是简单的带过 最后会详细的说下bridge网络 docker安装的时候会 ...

  7. docker跨主机网络——overlay与macvlan

    docker的跨主机网络 前言 这篇文件分两种方式介绍docker跨主机通信,overlay和macvlan,macvlan的方式给大家做个参考,生产环境下不推荐大家使用这种方式

  8. VMware虚拟机银河麒麟服务器系统与物理windows主机网络设置相互ping通处理方案之桥接

    关于虚拟机与物理主机网络设置的相互ping通问题,我已经踩过无数个坑了,于是,在经历再一次各种ping不通之后,忍无可忍,我决定将整个步骤以及注意的事项记录下来,以便后续的翻阅以及大家参考. 本次配置 ...

  9. 多主机网络下 Docker Swarm 模式的容器管理

    导读 本文将以多主机网络环境为基础,探讨如何利用内置编排工具 Docker Swarm 模式对各主机上的容器加以管理. Docker Engine – Swarm 模式 在多台主机之上运行 MySQL ...

  10. Neutron VxLAN + Linux Bridge 环境中的网络 MTU

    1. 基础知识 1.1 MTU 一个网络接口的 MTU 是它一次所能传输的最大数据块的大小.任何超过MTU的数据块都会在传输前分成小的传输单元.MTU 有两个测量层次:网络层和链路层.比如,网络层上标 ...

最新文章

  1. ccf json解析 java,【求助】e4a json解析 求助大佬帮忙老看下怎么取?
  2. 简单的页面表格导出Excel
  3. python发邮件给多个人发送消息_python发送邮件(带附件)、发送给多人、抄送给多人的示例...
  4. spyder python调试查看类信息_Python调试工具-Spyder
  5. Shader玉石效果
  6. 软件测试 | 测试开发 | 3年测试经验跳槽成功拿下30W+年薪
  7. python 转百分比_编程要从娃娃抓起,北乔治亚大学教授的python编程指南在此
  8. 微信小程序使用mqtt mpvue mosquito
  9. 时代和人民的精神脉动
  10. 管理员发布小程序,却显示自己不是项目成员
  11. input 关于不显示上下箭头
  12. 全球奶粉业正在进行认知重构、格局重构
  13. HTML5实现视频直播功能思路详解
  14. 提升app粉丝活跃度趣谈:app嵌入h5游戏活跃粉丝的优势
  15. golang 引入包报错package xxx is not in GOROOT
  16. 求解填字游戏问题(回溯)
  17. kubeedge系列之Beehive(二)
  18. Incorrect string value: : “\xE6\x9D\x8E\xE6\xBA\x90‘ for column ‘username‘
  19. 一图get新一代英特尔 至强 D 处理器
  20. 整车CANFD、CAN、LIN总线通信及诊断培训

热门文章

  1. Codecademy.com学习Python
  2. 教资之教育知识与能力 第一章第四节
  3. qgc地面站如何导入离线地图_离线地图
  4. 波士顿大学计算机硕士排名,波士顿大学计算机工程硕士排名第28(2020年TFE Times排名)...
  5. 3D游戏模型师的日常工作内容
  6. 去银行当程序员是一种什么体验
  7. dmp格式怎么转换_DMP文件怎么打开
  8. kali中rarcrack命令爆破rar压缩包密码
  9. 适合程序员学习的国外网站推荐
  10. 情有独钟,迷情电子三五年(七)