Docker之跨主機網絡通訊-Openvswitch

1.軟件介紹;        
顧名思義,Open vSwitch即開放虛擬交換標準!具體點說,Open vSwitch是在開源的Apache2.0許可下的產品級質量的多層虛擬交換標準!它旨在經過編程擴展,使龐大的網絡自動化(配置、管理、維護),同時還支持標準的管理接口和協議(如NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag)。總的來講,它被設計爲支持分佈在多個物理服務器,例如VMware的vNetwork分佈式vSwitch或思科的Nexus1000V。
那麼什麼是虛擬交換?虛擬交換就是利用虛擬平臺,經過軟件的方式造成交換機部件。跟傳統的物理交換機相比,虛擬交換機一樣具有衆多優勢,一是配置更加靈活。一臺普通的服務器能夠配置出數十臺甚至上百臺虛擬交換機,且端口數目能夠靈活選擇。例如,VMware的ESX一臺服務器能夠仿真出248臺虛擬交換機,且每臺交換機預設虛擬端口便可達56個;二是成本更加低廉,經過虛擬交換每每能夠得到昂貴的普通交換機才能達到的性能,例如微軟的Hyper-V平臺,虛擬機與虛擬交換機之間的聯機速度輕易可達10Gbps。[1] 
Open vSwitch的特性
1 支持經過NetFlow sFlow IPFIX, SPAN, RSPAN, 和 GRE-tunneled鏡像使虛擬機內部通信能夠被監控;
2 支持LACP (IEEE 802.1AX-2008)(多端口綁定)協議;
3 支持標準的 802.1Q VLAN模型以及 trunk模式;
4 支持 BFD 和 802.1ag 鏈路狀態監測;
5 支持STP (IEEE 802.1D-1998);
6 支持細粒度的Qos;
7 支持HFSC系統級別的流量控制隊列;
8 支持每虛擬機網卡的流量的流量控制策略;
9 支持基於源MAC負載均衡模式、主備模式、L4哈希模式的多端口綁定;
10 支持OpenFlow協議(包括許多虛擬化的加強特性);
11 支持IPV6
12 支持多種隧道協議((GRE, VXLAN, IPsec, GRE and VXLAN over IPsec)
13 支持經過C或者Python接口遠程配置;
14 支持內核態和用戶態的轉發引擎設置;
15 支持多列表轉發的發送緩存引擎;
16 支持轉發層抽象以容易的定向到新的軟件或者硬件平臺;    
    
2..獲取軟件包;
   
                  http://openvswitch.org/download/
3.部署詳細;
(1).依賴環境包;
yum -y install wget openssl-devel kernel-devel bridge-utils
(2).安裝依賴的工具
yum groupinstall "Development Tools"
(3).添加一個ovswitch用戶
    adduser ovswitch
(4).下載並解壓openvswitch源碼 (as ovswitch user)
$ su - ovswitch
$ mkdir -p ~/rpmbuild/SOURCES
$ cd ~/rpmbuild/SOURCES
$ wget http://openvswitch.org/releases/openvswitch-2.3.1.tar.gz
$ tar xfz openvswitch-2.3.1.tar.gz
(4).咱們須要修改下openvswitch的spec-file文件並使用ceontos內核模塊不哦也那個新建一個
$ sed 's/openvswitch-kmod, //g' openvswitch-2.3.1/rhel/openvswitch.spec > openvswitch-2.3.1/rhel/openvswitch_no_kmod.spec
(5).新建一個RPM-file文件方便後面使用,好比後面升級等
$ rpmbuild -bb --nocheck ~/openvswitch-2.3.1/rhel/openvswitch_no_kmod.spec
$ exit
(6).如今安裝RPM-package (切換到root)
yum localinstall /home/ovswitch/rpmbuild/RPMS/x86_64/openvswitch-2.3.1-1.x86_64.rpm
若是你沒有禁用SElinux的話你會遇到下面的SELinux問題,你只要啓用openvswitch服務就能夠了
install: cannot change owner and permissions of ‘/etc/openvswitch': No such file or directory and Creating empty database /etc/openvswitch/conf.db ovsdb-tool: I/O error: /etc/openvswitch/conf.db: failed to lock lockfile (No such file or directory)
這是一個修復的方法
# mkdir /etc/openvswitch
# semanage fcontext -a -t openvswitch_rw_t "/etc/openvswitch(/.*)?"
# restorecon -Rv /etc/openvswitch
(7).開啓openvswitch服務
systemctl start openvswitch

clipboard01.png


1.驗證下是否安裝了openvswitch服務html

clipboard.png


安裝參考連接:python

http://www.linuxdown.net/install/soft/2016/0228/4857.htmllinux


(8).建立ovs網橋;docker

 ovs-vsctl add-br br0編程

(9).建立gre隧道鏈接對端centos

ovs-vsctl add-port br0 gre1 --  set interface gre1 type=gre option:remote_ip=172.16.100.124緩存

(10).添加br0 到本地docker0 使容器流量經過ovs流經tunnel 服務器

[root@centos-minion ~]# brctl addif docker0 br0 網絡

(11).啓動br0和docker 0 網橋;負載均衡

[root@centos-minion ~]# ip link set dev br0 up

[root@centos-minion ~]# ip link set dev docker0 up

(12).添加路由規則;

ip route add 172.17.0.0/16 dev docker0

(13).清除防火牆規則;

iptables -t nat -F ;iptables -F

(14).另一端也須要以上步驟;注意;

ovs-vsctl add-port br0 gre1 --  set interface gre1 type=gre option:remote_ip=172.16.100.123

(15).測試docker 通訊;

配置測試ip地址

01.png

02.png

進行測試通訊測試

minion-1 ping minion-2

03.png

minion-1 ping minion-2


04.png

相關文章
相關標籤/搜索