Open vSwitch(如下簡稱爲OVS),英文全稱:OpenVirtual Switch,顧名思義,Open vSwitch就是開放虛擬交換。咱們能夠把他理解成一種標準,它旨在經過編程擴展,使龐大的網絡自動化(配置、管理、維護),同時還支持標準的管理接口和協議。python
也能夠把OVS理解成開源虛擬交換機,能夠運行在各種虛擬化平臺(如KVM,Xen)上的虛擬機交換機。在虛擬化平臺上,OVS 能夠爲動態變化的端點提供 2 層交換功能,很好的控制虛擬網絡中的訪問策略、網絡隔離、流量監控等等。linux
2.1 規劃docker網段 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 vim
兩臺機器上都要安裝 網絡
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默認網段 spa
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 建立網橋並激活3d
兩邊都操做 rest
ovs-vsctl add-br br0 ip link set dev br0 up
2.5 創建gre隧道 code
# 節點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