Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7171012
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类: 架构设计与优化

2015-08-07 12:56:13

Docker下基于flannel的overlay网络分析

[日期:2015-08-06] 来源:Linux社区  作者:xue777hua [字体:  ]

近期公司的flannel网络很不稳定,花时间研究了下并且保证云端自动部署的网络能够正常work。

1.网络拓扑

拓扑如下:(摘抄自Google搜索)

容器网卡通过docker0桥接到flannel0网卡,而每个host对应的flannel0网段为 10.1.x.[1-255]/24,而flannel所组成的一个跨host的网段为10.1.x.x/16,而flannel0则为flanneld进程虚拟出来的网卡。

docker0的地址是由 /run/flannel/subnet.env 的 FLANNEL_SUBNET 参数决定的。

2.HostA的Container1和HostB的Container2如何通信

host A的container1请求host B的container2的的数据时,流程如下: 根据host A的路由规则 "10.1.15.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0“ 数据交给docker0处理。

docker0会收到数据,然后根据路由规则 ”10.1.0.0 0.0.0.0 255.255.0.0 U 0 0 0 flannel0" 数据被交由给flannel0网卡处理。 flanneld会把数据封包然后送给eth0,用udp协议发送到对方host的eth0网卡。

host B的 eth0网卡收到后,根据路由规则 10.1.0.0 0.0.0.0 255.255.0.0 U 0 0 0 flannel0" 则交给flannel0网卡处理。

flanneld会把数据解包,根据路由规则 “10.1.20.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0" 交给docker0处理。

则host B的container 2 将会收到数据。

至此网路通信解释完毕。

3.自动部署程序中添加物理机需要注意的地方

基于上,故而:

网卡docker0、flannel0网卡的正确建立。

路由被正确配置!10.1.x.[1-255]/24 和 10.1.x.x/16 两个网段的正确路由配置。

我们的网络环境检查都基于此。通常情况下,以上两者可以自动正确建立成功,但有时候会出现异常。

添加物理机时候检查网络环境 ifconfig docker0 和 flannel0并且需要正确配置路由规则。

Ubuntu 15.04下安装Docker  

配置 Docker 镜像下载的本地 mirror 服务  

Docker安装应用(CentOS 6.5_x64) 

在 Docker 中使用 MySQL 

在Ubuntu Trusty 14.04 (LTS) (64-bit)安装Docker 

Docker安装应用(CentOS 6.5_x64) 

Ubuntu 14.04安装Docker  

阿里云CentOS 6.5 模板上安装 Docker 

Docker 的详细介绍请点这里
Docker 的下载地址请点这里

本文永久更新链接地址

阅读(1341) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~