Docker多主机网络 OpenvSwitch

Posted Bigberg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于Docker多主机网络 OpenvSwitch的主要内容,如果未能解决你的问题,请参考以下文章

OpenvSwitch实现多主机间通信

OpenvSwitch实现Docker容器跨宿主机互联

docker+openvswitch实现主机与容器的网络通信

docker跨主机container网络互通 bridge/openvswitch

Docker 网络之pipework 工具单主机Docker容器VLAN划分

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