Docker多主机网络 OpenvSwitch
一、Open vSwitch
Open vSwitch(以下简称为OVS),英文全称:OpenVirtual Switch,顾名思义,Open vSwitch就是开放虚拟交换。我们可以把他理解成一种标准,它旨在通过编程扩展,使庞大的网络自动化(配置、管理、维护),同时还支持标准的管理接口和协议。
也可以把OVS理解成开源虚拟交换机,可以运行在各类虚拟化平台(如KVM,Xen)上的虚拟机交换机。在虚拟化平台上,OVS 可以为动态变化的端点提供 2 层交换功能,很好的控制虚拟网络中的访问策略、网络隔离、流量监控等等。
二、利用Open vSwitch 构建Docker多主机网络
2.1 规划docker网段
默认的docker0的网段是 172.17.0.0/16,我们需要为每一个docker主机的docker0网段重新划分一个新网段
节点 | IP | docker0网段 |
openvswitch01 | 172.16.200.218 | 172.17.1.0/24 |
openvswitch02 | 172.16.200.223 | 172.16.2.0/24 |
2.2 安装OVS
两台机器上都要安装
wget http://downloads.naulinux.ru/pub/NauLinux/7x/x86_64/Extras/RPMS/Projects/OpenFlow/openvswitch-2.5.0-2.el7.x86_64.rpm yum -y localinstall openvswitch-2.5.0-2.el7.x86_64.rpm # 启动 systemctl start openvswitch # 查看状态 systemctl status openvswitch # 开机自启 systemctl enable openvswitch
2.3 修改docker0默认网段
vim /lib/systemd/system/docker.service #节点1 ExecStart=/usr/bin/dockerd --bip=172.17.1.1/24 # 节点2 ExecStart=/usr/bin/dockerd --bip=172.17.2.1/24 systemctl daemon-reload systemctl restart docker
2.4 创建网桥并激活
两边都操作
ovs-vsctl add-br br0 ip link set dev br0 up
2.5 建立gre隧道
# 节点1 ovs-vsctl add-port br0 gre0 -- set Interface gre0 type=gre options:remote_ip=172.16.200.223 # 如果有多个节点,需要添加多条greX(gre0,gre1,...) ## 将docker0加入br0 brctl addif docker0 br0 # 节点2 ovs-vsctl add-port br0 gre0 -- set Interface gre0 type=gre options:remote_ip=172.16.200.218 brctl addif docker0 br0
查看建立的隧道
查看docker0网段
2.6 添加静态路由
在两个节点上新建docker容器,并验证互通性
可见,两个节点中的IP地址分别为 172.17.1.0/24 网段和 172.17.2.0/24网段,目前他们还不能相互通信
添加静态路由
# 两个节点 ip route add 172.17.0.0/16 dev docker0
验证:
可以互通
注:以上配置重启就部分会消失,可以设置脚本启动加载
# 启动br0网桥 ip link set dev br0 up # 将docker0添加到br0中 brctl addif docker0 br0 # 添加静态路由 ip route add 172.17.0.0/16 dev docker0 # 添加到/etc/rc.local