Open vSwitch 入門實踐(3)使用OVS構建分散式隔離網路
使用OVS構建分散式隔離網路
前言
上一節我們使用OVS構建了單機隔離網路,但是隨著網路規模的擴張,單節點已經不再能滿足業務的需要,分散式網路成了必不可少的環節。分散式網路與單節點網路在細節實現上基本一致,只有物理環境網路連線上的一點區別。
實驗1:分散式無隔離網路
網路拓撲如下圖所示,我們每一臺節點都有兩張網絡卡,一張用於管理,一張用於業務。之所以使用兩張網絡卡有兩個原因:
- 管理網絡卡用於日常的維護登入,業務網絡卡用於傳輸虛擬節點的資料報文,避免相互之間影響。
- 我們要將業務網絡卡繫結到OVS網橋上,也就是
Normal
型別的Port
。這種方式新增的Port
不支援分配IP地址,如果之前網絡卡上配置的有IP,掛載到OVS上面之後將不可訪問。
需要注意的是,如果是使用物理環境搭建網路拓撲,需要把業務網絡卡對應的交換機埠配置為 trunk
模式。如果是使用VmWare搭建網路拓撲,業務網絡卡需要配置網路型別為 僅主機模式
。
配置
- 配置環境
主機A
ovs-vsctl add-br br-int # 請修改eth1為當前實驗環境的業務網絡卡名稱 ovs-vsctl add-port br-int eth1 # 新增兩個內部埠 ovs-vsctl add-port br-int vnet0 -- set Interface vnet0 type=internal ovs-vsctl add-port br-int vnet1 -- set Interface vnet1 type=internal # 新增兩個netns ip netns add ns0 ip netns add ns1 # 將內部埠分別移動到netns中 ip link set vnet0 netns ns0 ip link set vnet1 netns ns1 # 啟動埠並配置IP ip netns exec ns0 ip link set lo up ip netns exec ns0 ip link set vnet0 up ip netns exec ns0 ip addr add 10.0.0.1/24 dev vnet0 ip netns exec ns1 ip link set lo up ip netns exec ns1 ip link set vnet1 up ip netns exec ns1 ip addr add 10.0.0.2/24 dev vnet1
- 配置環境
主機B
ovs-vsctl add-br br-int # 請修改eth1為當前實驗環境的業務網絡卡名稱 ovs-vsctl add-port br-int eth1 # 新增兩個內部埠 ovs-vsctl add-port br-int vnet0 -- set Interface vnet0 type=internal ovs-vsctl add-port br-int vnet1 -- set Interface vnet1 type=internal # 新增兩個netns ip netns add ns0 ip netns add ns1 # 將內部埠分別移動到netns中 ip link set vnet0 netns ns0 ip link set vnet1 netns ns1 # 啟動埠並配置IP ip netns exec ns0 ip link set lo up ip netns exec ns0 ip link set vnet0 up ip netns exec ns0 ip addr add 10.0.0.3/24 dev vnet0 ip netns exec ns1 ip link set lo up ip netns exec ns1 ip link set vnet1 up ip netns exec ns1 ip addr add 10.0.0.4/24 dev vnet1
測試
- 測試
主機A
ip netns exec ns0 ping 10.0.0.3 ip netns exec ns0 ping 10.0.0.4 ip netns exec ns1 ping 10.0.0.3 ip netns exec ns1 ping 10.0.0.4
- 測試
主機B
ip netns exec ns0 ping 10.0.0.1 ip netns exec ns0 ping 10.0.0.2 ip netns exec ns1 ping 10.0.0.1 ip netns exec ns1 ping 10.0.0.2
- 測試結果
主機A | 主機B | ping 結果 |
---|---|---|
ns0 | ns0 | 可通訊 :white_check_mark: |
ns0 | ns1 | 可通訊 :white_check_mark: |
ns1 | ns0 | 可通訊 :white_check_mark: |
ns1 | ns1 | 可通訊 :white_check_mark: |
根據測試結果可以看到我們使用OVS成功的聯通了分佈在不同主機上的虛擬網路裝置。
實驗2:分散式隔離網路
構建分散式隔離網路和單節點的操作方法一致,即給對應的埠配置VLAN tag。如下圖所示,我們分別給主機A、B上的埠配置VLAN tag為100和200。
配置
- 配置環境
主機A
ovs-vsctl set Port vnet0 tag=100 ovs-vsctl set Port vnet1 tag=200
- 配置環境
主機B
ovs-vsctl set Port vnet0 tag=100 ovs-vsctl set Port vnet1 tag=200
測試
- 測試
主機A
ip netns exec ns0 ping 10.0.0.3 ip netns exec ns0 ping 10.0.0.4 ip netns exec ns1 ping 10.0.0.3 ip netns exec ns1 ping 10.0.0.4
- 測試
主機B
ip netns exec ns0 ping 10.0.0.1 ip netns exec ns0 ping 10.0.0.2 ip netns exec ns1 ping 10.0.0.1 ip netns exec ns1 ping 10.0.0.2
- 測試結果
主機A | 主機B | ping 結果 |
---|---|---|
ns0 | ns0 | 可通訊 :white_check_mark: |
ns0 | ns1 | 不通訊 :x: |
ns1 | ns0 | 不通訊 :x: |
ns1 | ns1 | 可通訊 :white_check_mark: |
根據測試結果可以看到我們使用OVS成功的隔離了分佈在不同主機上的虛擬網路裝置。
本文首發我的微信公眾號:我在對面的角落
歡迎關注,接收第一時間更新通知。
「其他文章」