c4rt1y

Docker容器跨主机之使用Open vSwitch实现

0x01 环境介绍

#一共2台服务器
master.com 10.10.10.20
node01.com 10.10.10.30

#关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service

#两种方法设置host(每台对应每台的host地址)
echo "master.com" > /etc/hostname
hostname master.com

#设置host
cat >>/etc/hosts <<EOF 
10.10.10.20 master.com 
10.10.10.30 node01.com
EOF	

#关闭selinux,需要重启
sed -i 's:SELINUX=enforcing:SELINUX=disabled:g' /etc/selinux/config

#临时关闭seLinux
setenforce 0

#docker安装
yum -y install docker

#重启
reboot

0x02 利用Openvswitch进行隧道互联

openvswitch之gre架构图

new-centos

#方案:在master存在192.168.2.1段,node01上存在192.168.1.1段,可连接
##master
#下载网络管理软件
yum install net-tools -y
#网桥工具
yum install bridge-utils -y
#安装openvswitch
yum install ftp://ftp.icm.edu.pl/vol/rzm6/linux-centos-vault/7.2.1511/cloud/x86_64/openstack-kilo/common/openvswitch-2.4.0-1.el7.x86_64.rpm -y
#源码包地址  http://openvswitch.org/releases/

#启动openvswitch
systemctl start openvswitch
#自启openvswitch
systemctl enable openvswitch

#创建网卡
ovs-vsctl add-br obr0
#创建网卡端口
ovs-vsctl add-port obr0 gre0
ovs-vsctl set interface gre0 typ=gre options:remote_ip=10.10.10.30
#查看ovs-vsctl网卡信息
ovs-vsctl show

#添加br0到本地docker0,使得容器流量通过OVS流经tunnel
brctl addif docker0 obr0
#查看子网信息
brctl show
route add -net 192.168.0.0/16 gw 10.10.10.30


##node01
#下载网络管理软件
yum install net-tools -y
#网桥工具
yum install bridge-utils -y
#安装openvswitch
yum install ftp://ftp.icm.edu.pl/vol/rzm6/linux-centos-vault/7.2.1511/cloud/x86_64/openstack-kilo/common/openvswitch-2.4.0-1.el7.x86_64.rpm -y
#源码包地址  http://openvswitch.org/releases/

#启动openvswitch
systemctl start openvswitch
#自启openvswitch
systemctl enable openvswitch

#创建网卡
ovs-vsctl add-br obr0
#设置gre0
ovs-vsctl add-port obr0 gre0 -- set interface gre1 type=gre option:remote_ip=10.10.10.20

#添加br0到本地docker0,使得容器流量通过OVS流经tunnel
brctl addif docker0 obr0
#设置网卡
route add -net 192.168.0.0/16 gw 10.10.10.20


##master
#测试,是否ping通
ping 192.168.30.1


##node01
#测试,是否ping通
ping 192.168.20.1


##tips:其实也可以自建网卡,不测试了,这里有个坑,就是docker修改了配置文件,可能不成功,docker重启不会清理路由,测试的时候注意
brctl addbr br0
ifconfig br0 192.168.20.1 netmask 255.255.255.0
brctl addif br0 obr0
brctl show

0x03 资料来源

http://www.cnblogs.com/dopeter/p/4958493.html
《Docker进阶与实战.华为Docker实践小组》
《Docker 容器与容器云(第2版)》
GoTop