#DDBMS#构建一个简单的docker网络

拓扑图以下:html

host1:10.20.10.70docker

host2:10.20.10.71shell

分别在主机1和主机2上建立一个ovs交换机:网络

ovs-vsctl add-br ovs0
ip link set ovs0 up

分别为ovs0添加一个port(br0在同一网段):架构

ovs-vsctl add-port ovs0 br0

在主机1建立通往host2的gre隧道:测试

ovs-vsctl add-port ovs0 gre0 -- set interface gre0 type=gre options:remote_ip=10.20.10.71

在主机2建立通往host1的gre隧道:
spa

ovs-vsctl add-port ovs0 gre0 -- set interface gre0 type=gre options:remote_ip=10.20.10.70

在主机1上启动一个容器(使用pipework把容器挂在br0上,分配的ip地址为192.168.2.10):.net

./ldocker.sh

在主机2上启动一个容器(使用pipework把容器挂在br0上,分配的ip地址为192.168.2.11):code

./ldocker.sh

进入主机1上的容器,ping主机2上的容器:htm

能够ping通。。。



配置成功


host1上的ldocker.sh代码以下(反复试验的缘由,打到手软了,因此用个简单脚本):

#!/bin/sh
docker run -itd --name=test1 hochikong/erbuntu:v1
pipework br0 test1 192.168.2.10/24

关于如何进入容器操做ping,请参见本人另外一博文:http://my.oschina.net/hochikong/blog/369036


总结:这样的方案能够让同一网段的容器跨机器进行通信,实现了应用的灵活部署。另外,个人拓扑和这个架构(http://www.sdnlab.com/8236.html)实现的功能是同样的,你们也能够参考下,不过我是bridge和OVS混用的,还能够在ovs0上实现VLAN,目前还没发现有什么大问题。

另外我尝试为ovs0配置ip,两个ovs0配置同一网段的ip(好比10.0.0.1和10.0.0.2),网络也能够通信,去掉也没问题。

接下来我要尝试在两个host上建立多个这样的网络,测试结果迟些出吧。

相关文章
相关标签/搜索