OpenvSwitch实现多主机间通信

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenvSwitch实现多主机间通信相关的知识,希望对你有一定的参考价值。

参考技术A 单个主机上容器之间如果要实现网络互通比较容易实现,一种常见做法是把需要通信的容器网络接口桥接到相同的主机网络接口,这样容器就处在相同的广播域,它们的网络地址是由Docker来负责分配管理,所以会获得同一网段的IP地址,网络互通所需的条件全部满足。
当容器处在不同的主机,情况就大不相同,因为主机的网络环境隔离了容器的网络环境,此时要实现网络互通,就需要做更多的工作。本文依赖OpenvSwitch实现多主机容器间网络通信。
1,使用GRE接口
实验拓扑如下:

用比较通俗的说法解释上图,Host 1上的Container 1连接交换机docker0,docker0连接路由器ovs-br,Host 2上的Container2同理。然后两台路由器ovs-br通过GRE隧道相连。用隧道的原因是容器间的流量必须承载在Host 1和Host 2的网络之上。
配置Host 1:

配置Host 2(为了避免和Host 1上Container 1上的IP地址冲突,可以启动两个容器,将第二个启动的容器作为Container2)

配置完毕后,进入Container 1,ping测试Container 2发现是可以ping通的。
2,使用VxLAN接口
拓扑如下

这次直接把docker自带的网桥docker0去掉,因为它本不是必需的。

Host 2上的配置类似,ovs-br的IP地址设置为192.168.8.4,容器内eth0的IP地址配置为192.168.8.3
配置完毕后,在Host 1的容器里面 ping测试Host 2上的容器,发现是通的。ping测试的同时,在Host 2的网卡eth0抓下包,可以看到VxLAN的身影,如下图所示:

以上是关于OpenvSwitch实现多主机间通信的主要内容,如果未能解决你的问题,请参考以下文章

Docker网络解决方案-Flannel部署记录

Docker网络解决方案-Flannel部署记录

Openv Switch 完全使用手册

Docker多主机网络 OpenvSwitch

Docker多主机网络 OpenvSwitch

Docker网络通信openvswitch(来自龙果学院学习资料 + 自己实验结果)