1. 程式人生 > >open vswitch實現不同宿主機的容器通訊(centos7)

open vswitch實現不同宿主機的容器通訊(centos7)

實驗環境:
機器一:192.168.122.222 安裝docker,open vswitch
機器二:192.168.122.247 安裝docker,open vswitch
ip a檢視主機的docker0介面為:172.17.0.1/16

一、部署主機一:
安裝openvswitch:

yum -y install wget openssl-devel kernel-devel
yum groupinstall "Development Tools"           //centos7裡面這步可取消
 # adduser ovswitch
 # su - ovswitch
 $ wget http://openvswitch.org/releases/openvswitch-2.3.0.tar.gz
$ tar -zxvpf openvswitch-2.3.0.tar.gz 
$ mkdir -p ~/rpmbuild/SOURCES
$ sed 's/openvswitch-kmod, //g' openvswitch-2.3.0/rhel/openvswitch.spec > openvswitch-2.3.0/rhel/openvswitch_no_kmod.spec
$ cp openvswitch-2.3.0.tar.gz rpmbuild/SOURCES/  
$ rpmbuild -bb --without check ~/openvswitch-2.3.0/rhel/openvswitch_no_kmod.spec  
$ exit  
# yum localinstall /home/ovswitch/rpmbuild/RPMS/x86_64/openvswitch-2.3.0-1.x86_64.rpm
# mkdir /etc/openvswitch
啟動服務:
# systemctl start openvswitch.service

修改網橋

yum install bridge-utils #安裝 brctl命令
vim /etc/sysctl.conf  #永久開啟路由轉發
net.ipv4.ip_forward=1
#通過ovs-vsctl建立ob0網橋並繫結IP
ovs-vsctl add-br ob0
ovs-vsctl add-port ob0 gre0 -- set Interface gre0 type=gre options:remote_ip=本機乙太網介面ip
#通過brctl建立kbr0網橋和ob0關聯,並刪除docker0網橋的關聯
brctl addbr kbr0
brctl addif kbr0 ob0
ip link set dev docker0 down
ip link del dev docker0
建立 /etc/sysconfig/network-scripts/ifcfg-kbr0 ,ip為172.17.2.1 ,內容如下:
# cat /etc/sysconfig/network-scripts/ifcfg-kbr0 
NAME="kbr0"
DEVICE=kbr0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.17.2.1
NETMASK=255.255.255.0
GATEWAY=172.17.2.0
USERCTL=no
TYPE=Bridge
IPV6INIT=no
配置完成後,重啟網路服務,或者reboot,開機後檢查介面,docker服務,openvswitch服務。

二、部署主機二:
1、安裝openvswitch,略。
2、修改網橋,和一相同。
3、配置kbr0網絡卡如下,ip為172.17.1.1:

# cat /etc/sysconfig/network-scripts/ifcfg-kbr0 
NAME="kbr0"
DEVICE=kbr0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.17.1.1
NETMASK=255.255.255.0
GATEWAY=172.17.1.0
USERCTL=no
TYPE=Bridge
IPV6INIT=no

三、修改路由
主機一:

route -net add 172.17.1.0/24 gw 主機二的乙太網介面ip

主機二

route add -net 172.17.2.0/24 gw 主機一的乙太網介面ip

四、配置完網絡卡和路由後修改docker的橋接介面
在配置檔案裡新增 -b=kbr0

# cat /etc/sysconfig/docker-network
# /etc/sysconfig/docker-network
DOCKER_NETWORK_OPTIONS= "-b=kbr0"
systemctl restart docker

五、執行容器進行測試,略。
六、在防火牆已關閉,以上配置已經做好卻不能ping同時,注意iptables,需要顯示為ACCEPT,若不是,則 iptables -P FORWARD ACCEPT修改。
[[email protected] ~]# iptables -nL FORWARD
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DOCKER-ISOLATION all – 0.0.0.0/0 0.0.0.0/0
DOCKER all – 0.0.0.0/0 0.0.0.0/0
ACCEPT all – 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
ACCEPT all – 0.0.0.0/0 0.0.0.0/0
ACCEPT all – 0.0.0.0/0 0.0.0.0/0
七、參考文件
http://www.cnblogs.com/openxxs/p/4690478.html

相關推薦

open vswitch實現不同宿主容器通訊centos7

實驗環境: 機器一:192.168.122.222 安裝docker,open vswitch 機器二:192.168.122.247 安裝docker,open vswitch ip a檢視主機的docker0介面為:172.17.0.1/16 一、部署主機

docker同宿主容器不同宿主容器之間怎麽通信?

roc 網卡 命令執行 ip) oss namespace 跨主機通信 進行 work 第一部分 docker有四種網絡模式第一種:bridge 模式當docker進程啟動時,主機上會創建一個名為docker0的虛擬網橋,容器內部會創建一個只能容器內部看到的接口eth0,e

實現執行緒間的通訊

非靜態的同步方法的鎖物件:this 靜態的同步方法的鎖物件是:該類的位元組碼物件 this.notify():喚醒單個等待的執行緒 this.notifyAll():喚醒所有等待的執行緒 /* * 1.在同步程式碼塊中,用哪個物件鎖,就用那個物件呼叫wait方法 *

實現執行緒間的通訊

notify()和wait()實現: this.notify():隨機喚醒單個等待執行緒。 this.wait():當前執行緒等待,wait()若無人喚醒,則一直等待;而Thread.sleep是睡眠一定時間後再次啟動。   public class DemoNotif

kvm 創建虛擬腳本centos7

qcow 分配 自動 gre 目前 rep cati 例如 存在 #!/bin/bash #創建單個虛擬機(需要電腦中存在模板虛擬機) #獲取新虛擬機名稱(單個創建模式) get_newname(){ while true do

Docker Overlay網路和etcd實現容器通訊

# Mutil-host networking with etcd ## setup etcd cluster 在docker-node1上 ``` [email protected]:~$ wget https://github.com/coreos/etc

Docker實踐 -- 使用Open vSwitch實現跨主機通訊

作為目前最火熱的容器技術,docker在網路實現和管理方面還存在不足。最開始的docker是依賴於Linux Bridge實現的網路設定,只能在容器裡建立一個網絡卡。後來隨著docker/libnetwork專案的進展,docker的網路管理功能逐漸多了起來。儘管如此,跨主

Docker實踐 -- 使用Open vSwitch實現跨主機通信

sha centos queue 基本架構 fan tom name uil str 作為目前最火熱的容器技術,docker在網絡實現和管理方面還存在不足。最開始的docker是依賴於Linux Bridge實現的網絡設置,只能在容器裏創建一個網卡。後來隨著docker/l

虛擬機器Ubuntu之間相互通訊以及虛擬機器與宿主進行通訊

虛擬機器Ubuntu之間相互通訊以及虛擬機器與宿主機進行通訊 在Vmware workstation上開啟兩臺虛擬機器 1.在設定裡將兩臺虛擬機器改成橋接模式 2.使用命令列靜態配置兩臺虛擬機器的IP地址分別為 虛擬機器Ubuntu1:192.168.0.3 虛擬機器Ubuntu2:19

單臂路由實現不同VLAN之間的通訊

實驗拓撲如下:一、瞭解單臂路由的原理1、鏈路型別PC和交換機之間是接入層,所以使用的是access鏈路,但是VLAN10和VLAN20需要通訊,而且都需要經過路由器,所以交換機和路由器之間的鏈路為trunk。2、路由器的子介面路由器的物理介面可以被劃分成多個邏輯的介面,這些被

在華為三層交換機上如何實現不同vlan間的通訊

一、組網需求: 交換機配置了4個VLAN,分別為VLAN1,VLAN2,VLAN3,VLAN4,要求VLAN1可以與VLAN2,3,4互訪,但是VLAN2,3,4之間不能互訪,用Hybrid埠屬性實現此功能。 二、組網圖: 無 三、配置步驟: 1.      建立VLAN2 [Quidway]vlan 2 2

基於consul的Docker-overlay跨多宿主容器網路

環境限制必須安裝key-value儲存服務,如consul宿主機已經安裝docker engine宿主機的hostname必須不同核心大於3.16環境準備及角色分配兩臺ubuntu的server主機名ip核心啟動docker容器名稱docker engine版本consul服

c# 用委託和事件實現不同窗體間的通訊(一)

 C# 中的“事件”是當物件滿足一定條件,發生某些事情時,類向該類的客戶提供通知的一種方法。使用事件,擁有該事件的物件不必知道需要通知誰,一旦滿足了某個條件,將自動呼叫該事件,正確通知每個需要通知的物件。通過使用事件,提高了程式的模組化程度。    例子:通過form1開啟f

用廣播Broadcast實現不同app之間的通訊

Android中廣播型別可以分為2種,一種是系統的自動廣播,比說說:電量偏低,網路狀態改變,系統時間改變等等。另外一種是我們自己自定義的廣播,這種就最常見了。 系統傳送來的廣播可以被我們自己的或是第三方的app接收到,這說明了廣播是可以實現不同app之間通訊的

C# WPF上位實現和下位TCP通訊

開發十年,就只剩下這套架構體系了! >>>   

Docke 使用Open vSwitch實現跨主機通信

byte multicast del amp ces ets port sysctl warn

實現不同程序之間的通訊

  程序之間的通訊是為了解決不同程序之間的資料傳輸問題,這樣可以讓不同程式互動資料。實現程序通訊的方式:1、剪下板;2、COM;3、記憶體對映檔案;4、WCF 1、剪下板Clipboard在程序間傳送物件   剪下板是一個供應用程式使用的公有區域。在.NET中定一個了一個DataFormats類,此類包含

實現容器的底層技術 - 每天5分鐘玩轉 Docker 容器技術30

docker 教程 容器 為了更好地理解容器的特性,本節我們將討論容器的底層實現技術。cgroup 和 namespace 是最重要的兩種技術。cgroup 實現資源限額, namespace 實現資源隔離。cgroupcgroup 全稱 Control Group。Linux 操作系統通過 cg

overlay 如何實現跨主機通信?- 每天5分鐘玩轉 Docker 容器技術52

docker 教程 容器 上一節我們在 host1 中運行了容器 bbox1,今天將詳細討論 overlay 網絡跨主機通信的原理。在 host2 中運行容器 bbox2:bbox2 IP 為 10.0.0.3,可以直接 ping bbox1:可見 overlay 網絡中的容器可以直接通信,同時

如何實現跨 Docker 主機存儲?- 每天5分鐘玩轉 Docker 容器技術73

docker 教程 容器 從業務數據的角度看,容器可以分為兩類:無狀態(stateless)容器和有狀態(stateful)容器。無狀態是指容器在運行過程中不需要保存數據,每次訪問的結果不依賴上一次訪問,比如提供靜態頁面的 web 服務器。有狀態是指容器需要保存數據,而且數據會發生變化,訪問的結果