成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用ovs構(gòu)建docker網(wǎng)絡(luò),實(shí)現(xiàn)跨主機(jī)通信與網(wǎng)絡(luò)隔離

Lorry_Lu / 3317人閱讀

摘要:干的具體的事是容器的虛擬網(wǎng)卡設(shè)備劃分處理的原理也非常簡單,包進(jìn)入到時打上,發(fā)出去時去掉,發(fā)出去的端口與包的不匹配時不處理,這便實(shí)現(xiàn)了二層隔離。

初始化環(huán)境
升級內(nèi)核:
      rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
      rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
      yum --enablerepo=elrepo-kernel install  kernel-ml-devel kernel-ml
      awk -F" "$1=="menuentry " {print $2}" /etc/grub2.cfg
      grub2-set-default 0
      reboot
      uname -a

安裝docker:
     yum install -y yum-utils
     yum-config-manager     --add-repo     https://download.docker.com/linux/centos/docker-ce.repo
     yum-config-manager --disable docker-ce-edge
     yum makecache fast
     yum install docker-ce
     service docker start


安裝open vswitch:
     yum -y install wget openssl-devel gcc make python-devel openssl-devel kernel-devel graphviz kernel-debug-devel autoconf automake rpm-build redhat-rpm-config libtool python-twisted-core python-zope-interface PyQt4 desktop-file-utils libcap-ng-devel groff checkpolicy selinux-policy-devel
     adduser ovs
     su - ovs
     yum localinstall /home/ovs/rpmbuild/RPMS/x86_64/openvswitch-2.5.0-1.el7.centos.x86_64.rpm -y
     systemctl start openvswitch.service
     systemctl is-active openvswitch
     ovs-vsctl -V
     systemctl enable openvswitch

安裝pipework:
     yum install git
     git clone https://github.com/jpetazzo/pipework
     cp pipework/pipework /bin

一些工具安裝:
yum install bridge-utils # 如果brctl不能用

yum install net-tools # 如果route命令不能用

單節(jié)點(diǎn)上使用ovs vlan劃分網(wǎng)絡(luò)

啟動四個容器:

docker run -itd --name con1 ubuntu:14.04 /bin/bash
docker run -itd --name con2 ubuntu:14.04 /bin/bash
docker run -itd --name con3 ubuntu:14.04 /bin/bash
docker run -itd --name con4 ubuntu:14.04 /bin/bash

創(chuàng)建ovs網(wǎng)橋并綁定端口

pipework ovs0 con1 192.168.0.1/24 @100
pipework ovs0 con2 192.168.0.2/24 @100

pipework ovs0 con3 192.168.0.3/24 @200
pipework ovs0 con4 192.168.0.4/24 @200

這樣con1 和 con2是通的,con3和con4是通的,這個比較簡單。pipework干的具體的事是:

ovs-vsctl add-port ovs0 [容器的虛擬網(wǎng)卡設(shè)備] tag=100

ovs劃分vlan處理的原理也非常簡單,包進(jìn)入到switch時打上tag,發(fā)出去時去掉tag,發(fā)出去的端口與包的tag不匹配時不處理,這便實(shí)現(xiàn)了二層隔離。

access端口與trunk端口的區(qū)別是,trunk端口可接受多個tag。

跨主機(jī)vlan

準(zhǔn)備兩個主機(jī),在host1上:

docker run -itd --name con1 ubuntu:14.04 /bin/bash
docker run -itd --name con2 ubuntu:14.04 /bin/bash
pipework ovs0 con1 192.168.0.1/24 @100
pipework ovs0 con2 192.168.0.2/24 @200

如果是單張網(wǎng)卡的話,把eth0橋接到switch上時會造成網(wǎng)絡(luò)中斷,所以以下幾步不要通過ssh操作:
如果非得ssh去操作的話把以下命令放在一條命令中執(zhí)行(用&&連接各個命令)

ovs-vsctl add-port ovs0 eth0
ifconfig ovs0 10.1.86.201 netmask 255.255.255.0   # 這里地址和掩碼與eth0的配置一致
ifconfig ovs0 up
ifconfig eth0 0.0.0.0
route add default gw 10.1.86.1  # 執(zhí)行之前看看eth0的gw是什么,保持一致,這樣eth0就橋接到ovs0上去了。

查看switch端口:

[root@dev-86-204 ~]# ovs-vsctl show
c5ddf9e8-daac-4ed2-80f5-16e6365425fa
    Bridge "ovs0"
        Port "veth1pl41885"
            tag: 100
            Interface "veth1pl41885"
        Port "ovs0"
            Interface "ovs0"
                type: internal
        Port "eth0"
            Interface "eth0"
        Port "veth1pl41805"
            tag: 200
            Interface "veth1pl41805"
    ovs_version: "2.5.1"

在host2上:

docker run -itd --name con3 ubuntu:14.04 /bin/bash
docker run -itd --name con4 ubuntu:14.04 /bin/bash
pipework ovs0 con3 192.168.0.3/24 @100
pipework ovs0 con4 192.168.0.4/24 @200

同樣要橋接eth0到ovs0上,同host1的操作,然后con1與con3可通,con2與con4可通.

GRE實(shí)現(xiàn)overlay網(wǎng)絡(luò)

linux內(nèi)核需要3.11以上,本尊在3.10內(nèi)核上實(shí)踐失敗,在虛擬機(jī)中升級內(nèi)核時虛擬機(jī)啟動不了,CPU飆到100%,以后再試。

發(fā)現(xiàn)把容器直接掛ovs網(wǎng)橋上是可以通的

gre與下面的vxlan非常類似,只需要在添加往外連的端口時改成下面命令即可:

ovs-vsctl add-port ovs0 gre0 -- set interface gre0 type=gre options:remote_ip=172.31.244.185
Vxlan實(shí)現(xiàn)跨主機(jī)通信
   host1:10.1.86.203 
   ovs0
    |
    |-veth1 <-------> eth1 192.168.0.3  con3
    |
    |-vxlan1-------------+
    |                    |
                         |
    host2:10.1.86.204    |
    ovs0                 |
     |                   |
     |-vxlan1------------+
     |
     |-veth1 <--------> eth1 192.168.0.4 con4
     |

可以看到con3和con4在搭建vxlan之前是無法通信的。

在host1上:

[root@dev-86-203 ~]# docker run --name con3 -itd ubuntu:14.04 /bin/bash
[root@dev-86-203 ~]# ovs-vsctl add-br ovs0
[root@dev-86-203 ~]# pipework ovs0 con3 192.168.0.3/24   # 給容器分配地址并掛到ovs0上

[root@dev-86-203 ~]# ovs-vsctl add-port ovs0 vxlan1 -- set interface vxlan1 type=vxlan options:remote_ip=10.1.86.204 options:key=flow # 創(chuàng)建vxlan

[root@dev-86-203 ~]# ovs-vsctl show
5e371797-db70-451c-a0f2-d70c6d00cd05
    Bridge "ovs0"
        Port "veth1pl3342"
            Interface "veth1pl3342"
        Port "ovs0"
            Interface "ovs0"
                type: internal
        Port "vxlan1"
            Interface "vxlan1"
                type: vxlan
                options: {key=flow, remote_ip="10.1.86.204"}
    ovs_version: "2.5.1"

host2上同理:

[root@dev-86-204 ~]# docker run --name con4 -itd ubuntu:14.04 /bin/bash
[root@dev-86-204 ~]# ovs-vsctl add-br ovs0
[root@dev-86-204 ~]# pipework ovs0 con4 192.168.0.4/24   # 給容器分配地址并掛到ovs0上

[root@dev-86-204 ~]# ovs-vsctl add-port ovs0 vxlan1 -- set interface vxlan1 type=vxlan options:remote_ip=10.1.86.203 options:key=flow # 創(chuàng)建vxlan

[root@dev-86-204 ~]# ovs-vsctl show
c5ddf9e8-daac-4ed2-80f5-16e6365425fa
    Bridge "ovs0"
        Port "ovs0"
            Interface "ovs0"
                type: internal
        Port "veth1pl52846"
            Interface "veth1pl52846"
        Port "vxlan1"
            Interface "vxlan1"
                type: vxlan
                options: {key=flow, remote_ip="10.1.86.203"}
    ovs_version: "2.5.1"

驗(yàn)證:

[root@dev-86-204 ~]# docker exec con4 ping 192.168.0.3  # con4容器中ping con3的地址,可通
PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
64 bytes from 192.168.0.3: icmp_seq=1 ttl=64 time=0.251 ms
64 bytes from 192.168.0.3: icmp_seq=2 ttl=64 time=0.170 ms

更多問題歡迎聯(lián)系我: https://github.com/fanux

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/27038.html

相關(guān)文章

  • Docker網(wǎng)絡(luò)

    摘要:容器與主機(jī)共享同一,共享同一套網(wǎng)絡(luò)協(xié)議棧路由表及規(guī)則等?;揪W(wǎng)絡(luò)配置平臺下,容器網(wǎng)絡(luò)資源通過內(nèi)核的機(jī)制實(shí)現(xiàn)隔離,不同的有各自的網(wǎng)絡(luò)設(shè)備協(xié)議棧路由表防火墻規(guī)則等,反之,同一下的進(jìn)程共享同一網(wǎng)絡(luò)視圖。設(shè)計(jì)的網(wǎng)絡(luò)模型。 整理自《Docker進(jìn)階與實(shí)戰(zhàn)》 Docker網(wǎng)絡(luò)現(xiàn)狀 為了解決容器網(wǎng)絡(luò)性能低下、功能不足的問題,Docker啟動了子項(xiàng)目Libnetwork。Libnetwork提出了新的...

    Euphoria 評論0 收藏0
  • 在ubuntu上部署Kubernetes管理docker集群示例

    摘要:部署環(huán)境及架構(gòu)操作系統(tǒng)版本版本版本服務(wù)器信息在詳細(xì)介紹部署集群前,先給大家展示下集群的邏輯架構(gòu)。其他操作更新刪除查看刪除除此之外,你可以刪除,如刪除上的格式為服務(wù)名字,不必關(guān)心從哪個上刪除了。 本文通過實(shí)際操作來演示Kubernetes的使用,因?yàn)榄h(huán)境有限,集群部署在本地3個ubuntu上,主要包括如下內(nèi)容: 部署環(huán)境介紹,以及Kubernetes集群邏輯架構(gòu) 安裝部署Open v...

    BingqiChen 評論0 收藏0
  • 在ubuntu上部署Kubernetes管理docker集群示例

    摘要:部署環(huán)境及架構(gòu)操作系統(tǒng)版本版本版本服務(wù)器信息在詳細(xì)介紹部署集群前,先給大家展示下集群的邏輯架構(gòu)。其他操作更新刪除查看刪除除此之外,你可以刪除,如刪除上的格式為服務(wù)名字,不必關(guān)心從哪個上刪除了。 本文通過實(shí)際操作來演示Kubernetes的使用,因?yàn)榄h(huán)境有限,集群部署在本地3個ubuntu上,主要包括如下內(nèi)容: 部署環(huán)境介紹,以及Kubernetes集群邏輯架構(gòu) 安裝部署Open v...

    codergarden 評論0 收藏0
  • Docker Mesos 的前生今世 | 數(shù)人云CTO肖德時@KVM分享實(shí)錄

    摘要:今天小數(shù)給大家?guī)硪黄夹g(shù)正能量滿滿的分享來自社區(qū)線上群分享的實(shí)錄,分享嘉賓是數(shù)人云肖德時。第二級調(diào)度由被稱作的組件組成。它們是最小的部署單元,由統(tǒng)一創(chuàng)建調(diào)度管理。 今天小數(shù)給大家?guī)硪黄夹g(shù)正能量滿滿的分享——來自KVM社區(qū)線上群分享的實(shí)錄,分享嘉賓是數(shù)人云CTO肖德時。 嘉賓介紹: 肖德時,數(shù)人云CTO 十五年計(jì)算機(jī)行業(yè)從業(yè)經(jīng)驗(yàn),曾為紅帽 Engineering Service ...

    0x584a 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<