- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
由于docker自身还未支持跨主机容器通信,需要借助docker网络开源解决方案。这里利用OpenVSwich即开放式虚拟交换机实现,简称OVS,OVS在云计算领域应用广泛.
什么是OpenVSwich?
OpenVSwich是一种开源软件,通过软件的方式实现二层交换机功能,专门管理多租赁云计算网络环境,提供虚拟网络中的访问策略、网络隔离、流量监控等。
既然是虚拟交换机,自然与传统的物理交换机有着相同的特性,操作中可以按照理解物理交换机的方式去操作,有助于对虚拟交换机的认识。
实验环境:
操作系统:ubuntu14.04_x64
宿主机1:192.168.18.16 容器网段:172.17.1.0/24
宿主机2:192.168.18.17 容器网段:172.17.2.0/24
创建网络环境(两台宿主机做相同的操作,部分要适当修改,已注明):
1、安装openvswitch
$ sudo apt-get install openvswitch-switch bridge-utils
2、添加网桥obr0(理解为添加了一个交换机)
$ sudo ovs-vsctl add-br obr0
3、将gre0接口加入到网桥obr0, 远程IP写对端IP(创建一个GRE隧道并添加到网桥中)
$ sudo ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.18.17
#查看ovs信息
$ sudo ovs-vsctl show
4、添加docker网桥
$ sudo brctl addbr kbr0
#将obr0网桥加入kbr0网桥,并启动
$ sudo brctl addif kbr0 obr0 $ sudo ip link set dev kbr0 up
#查看网桥信息
$ sudo brctl show
#添加docker网桥配置信息(18.17宿主机按照这种方式配置自己)
$ vi /etc/network/interfaces
auto eth0 iface eth0 inet static address 192.168.18.16 netmask 255.255.255.0 gateway 192.168.18.1 dns-nameservers 192.168.18.1 auto kbr0 iface kbr0 inet static address 172.17.1.1 netmask 255.255.255.0 gateway 172.17.1.0
#删除默认docker网桥
$ sudo ip link set dev docker0 down $ sudo ip link delete dev docker0
#关键一点,添加路由条目,否则无法通讯(同样在18.17上面这样添加路由,写对端IP)
#via从哪个网关出去,写对端IP。dev由哪个设备出去
$ sudo ip route add 172.17.2.0/24 via 192.168.18.17 dev eth0
至此容器跨主机通信配置完成,两边各创建一个容器来验证
里面涉及到一个GRE隧道,什么是GRE隧道呢?
GRE即通用路由协议封装,隧道技术是一种封装技术,将网络层协议(如IP)的数据报文进行封装,使这些封装的数据报文能够在另一个网络层协议中传输。可以看作是一个虚拟点到点连接,所以建立隧道时,要配置好隧道源地址和目的地址。
另外,weave也可以实现跨主机容器通信,也是类似于一个网络交换机,配置简单,有兴趣可以了解下。
售前咨询
售后咨询
备案咨询
二维码
TOP