一、Linux Bridge網(wǎng)橋管理 網(wǎng)絡(luò)虛擬化是虛擬化技術(shù)中最復(fù)雜的部分,也是非常重要的資源。 第一節(jié)中我們創(chuàng)建了一個名為br0的linux-bridge網(wǎng)橋,如果在此網(wǎng)橋上新建一臺vm,如下圖:
VM2 的虛擬網(wǎng)卡 vnet1 也連接到了 br0 上。 現(xiàn)在 VM1 和 VM2 之間可以通信,同時 VM1 和 VM2 也都可以與外網(wǎng)通信。
查看網(wǎng)絡(luò)狀態(tài):
用brctl show 顯示當(dāng)前網(wǎng)橋連接狀態(tài):
brctl命令:
二、Vlan介紹 LAN 表示 Local Area Network,本地局域網(wǎng),通常使用 Hub 和 Switch 來連接 LAN 中的計算機。一般來說,兩臺計算機連入同一個 Hub 或者 Switch 時,它們就在同一個 LAN 中。 一個 LAN 表示一個廣播域。 其含義是:LAN 中的所有成員都會收到任意一個成員發(fā)出的廣播包。 VLAN 表示 Virtual LAN。一個帶有 VLAN 功能的switch 能夠?qū)⒆约旱亩丝趧澐殖龆鄠€ LAN。計算機發(fā)出的廣播包可以被同一個 LAN 中其他計算機收到,但位于其他 LAN 的計算機則無法收到。 簡單地說,VLAN 將一個交換機分成了多個交換機,限制了廣播的范圍,在二層將計算機隔離到不同的 VLAN 中。 比方說,有兩組機器,Group A 和 B,我們想配置成 Group A 中的機器可以相互訪問,Group B 中的機器也可以相互訪問,但是 A 和 B 中的機器無法互相訪問。 一種方法是使用兩個交換機,A 和 B 分別接到一個交換機。 另一種方法是使用一個帶 VLAN 功能的交換機,將 A 和 B 的機器分別放到不同的 VLAN 中。
VLAN 的隔離是二層上的隔離,A 和 B 無法相互訪問指的是二層廣播包(比如 arp)無法跨越 VLAN 的邊界。但在三層上(比如IP)是可以通過路由器讓 A 和 B 互通的。 現(xiàn)在的交換機幾乎都是支持 VLAN 的。 通常交換機的端口有兩種配置模式: Access 和 Trunk。如下圖
Access 口 這些端口被打上了 VLAN 的標(biāo)簽,表明該端口屬于哪個 VLAN。 不同 VLAN 用 VLAN ID 來區(qū)分,VLAN ID 的 范圍是 1-4096。 Access 口都是直接與計算機網(wǎng)卡相連的,這樣從該網(wǎng)卡出來的數(shù)據(jù)包流入 Access 口后就被打上了所在 VLAN 的標(biāo)簽。 Access 口只能屬于一個 VLAN。 Trunk 口 假設(shè)有兩個交換機 A 和 B。 A 上有 VLAN1(紅)、VLAN2(黃)、VLAN3(藍);B 上也有 VLAN1、2、3,那如何讓 AB 上相同 VLAN 之間能夠通信呢? 辦法是將 A 和 B 連起來,而且連接 A 和 B 的端口要允許 VLAN1、2、3 三個 VLAN 的數(shù)據(jù)都能夠通過。這樣的端口就是Trunk口了。 VLAN1, 2, 3 的數(shù)據(jù)包在通過 Trunk 口到達對方交換機的過程中始終帶著自己的 VLAN 標(biāo)簽。 三、Linux Bridge實現(xiàn)Vlan原理 KVM 虛擬化環(huán)境下實現(xiàn) VLAN 架構(gòu),如下圖
eth0 是宿主機上的物理網(wǎng)卡,有一個命名為 eth0.10 的子設(shè)備與之相連。 eth0.10 就是 VLAN 設(shè)備了,其 VLAN ID 就是 VLAN 10。 eth0.10 掛在命名為 brvlan10 的 Linux Bridge 上,虛機 VM1 的虛擬網(wǎng)卡 vent0 也掛在 brvlan10 上。 這樣的配置其效果就是: 宿主機用軟件實現(xiàn)了一個交換機(當(dāng)然是虛擬的),上面定義了一個 VLAN10。 eth0.10,brvlan10 和 vnet0 都分別接到 VLAN10 的 Access口上。而 eth0 就是一個 Trunk 口。VM1 通過 vnet0 發(fā)出來的數(shù)據(jù)包會被打上 VLAN10 的標(biāo)簽。 eth0.10 的作用是:定義了 VLAN10 brvlan10 的作用是:Bridge 上的其他網(wǎng)絡(luò)設(shè)備自動加入到 VLAN10 中
增加一個 VLAN20,如下圖
這樣虛擬交換機就有兩個 VLAN 了,VM1 和 VM2 分別屬于 VLAN10 和 VLAN20。 對于新創(chuàng)建的虛機,只需要將其虛擬網(wǎng)卡放入相應(yīng)的 Bridge,就能控制其所屬的 VLAN。 VLAN 設(shè)備總是以母子關(guān)系出現(xiàn),母子設(shè)備之間是一對多的關(guān)系。 一個母設(shè)備(eth0)可以有多個子設(shè)備(eth0.10,eth0.20 ……),而一個子設(shè)備只有一個母設(shè)備。 四、Linux Bridge實現(xiàn)Vlan (1)查看核心是否提供VLAN 功能,執(zhí)行 # dmesg | grep -i 802 或者檢查/proc/net/vlan目錄是否存在。 如果沒有提供VLAN 功能,/proc/net/vlan目錄是不存在的。
如果8021q模塊沒有載入系統(tǒng),則可以通過使用modprobe模組命令載入802.1q模組,並且利用lsmod命令確認模組是否已經(jīng)載入到核心內(nèi)。 # modprobe 8021q # lsmod | grep 8021q
設(shè)置開機載入8021q模塊(可選) 在/etc/sysconfig/modules下增加一個8021q.modules文件,文件內(nèi)容為modprobe 8021q # vi /etc/sysconfig/modules/8021q.modules modprobe 8021q
(2)安裝查看用于查看Vlan配置的工具————vconfig 提前裝備好vconfig-1.9-16.el7.x86_64.rpm #rpm -ivh vconfig-1.9-16.el7.x86_64.rpm #rpm -qa vconfig
(3)創(chuàng)建vlan接口 創(chuàng)建vlan接口前,在設(shè)備上添加一塊網(wǎng)卡ens34, 網(wǎng)絡(luò)配置如右圖:
注意: 將BOOTPROTO=static
基于網(wǎng)卡ens34建立vlan10,vlan20接口:ens34.10,ens34.20: #vconfig add ens34 10 #vconfig add ens34 20
#cd /etc/sysconfig/network-scripts/ #cp ifcfg-ens34 ifcfg-ens34.10 -- 創(chuàng)建ens33.10接口配置文件 編輯ifcfg-ens34.10文件,增加/修改下面內(nèi)容: #vim ifcfg-ens34.10 VLAN=yes TYPE=vlan PHYSDEV=ens34 VLAN_ID=10 NAME=ens34.10 ONBOOT=yes ZONE=trusted DEVICE=ens34.10 BRIDGE=brvlan-10
#cp ifcfg-ens34.10 ifcfg-ens34.20 編輯ifcfg-ens34.20文件,增加/修改下面內(nèi)容: #vim ifcfg-ens34.20 VLAN=yes TYPE=vlan PHYSDEV=ens34 VLAN_ID=20 NAME=ens34.20 ONBOOT=yes ZONE=trusted DEVICE=ens34.20 BRIDGE=brvlan-20
(4)分別建立網(wǎng)橋brvlan-10,brvlan-20 #brctl addbr brvlan-10 #brctl addbr brvlan-20
(5)編輯網(wǎng)橋brvlan-10配置文件: #vim ifcfg-brvlan-10 TYPE=bridge BOOTPROTO=static NAME=brvlan-10 DEVICE=brvlan-10 ONBOOT=yes 編輯網(wǎng)橋brvlan-20配置文件: #vim ifcfg-brvlan-20 TYPE=bridge BOOTPROTO=static NAME=brvlan-20 DEVICE=brvlan-20 ONBOOT=yes
(6)將網(wǎng)橋brvlan-10接到網(wǎng)口ens34.10,brvlan-20接到網(wǎng)口ens34.20 #brctl addif brvlan-10 ens34.10 #brctl addif brvlan-20 ens34.20 (7)重新啟動網(wǎng)絡(luò)服務(wù) #systemctl restart network
五、Vlan模式測試虛機 先將NetworkManager服務(wù)關(guān)閉 (1)在宿主機中已經(jīng)提前創(chuàng)建好了虛機 VM1 在 virt-manager 中將 VM1 的虛擬網(wǎng)卡掛到 brvlan-10 上
(2)從VM1克隆一臺虛機VM2 virst-clone -o vm1 -n vm2 -f /var/lib/libvirt/images/vm2.qcow2 (3)啟動VM1和VM2,并配置ip (4)查看 Bridge,發(fā)現(xiàn) brvlan10 已經(jīng)連接了 vnet0 vnet1設(shè)備。 六、網(wǎng)卡配置bond(綁定) (1)網(wǎng)卡bond(綁定),也稱作網(wǎng)卡捆綁。就是將兩個或者更多的物理網(wǎng)卡綁定成一個虛擬網(wǎng)卡。網(wǎng)卡是通過把多張網(wǎng)卡綁定為一個邏輯網(wǎng)卡,實現(xiàn)本地網(wǎng)卡的冗余,帶寬擴容和負載均衡,在應(yīng)用部署中是一種常用的技術(shù)。 多網(wǎng)卡綁定實際上需要提供一個額外的軟件的bond驅(qū)動程序?qū)崿F(xiàn)。通過驅(qū)動程序可以將多塊網(wǎng)卡屏蔽。對TCP/IP協(xié)議層只存在一個Bond網(wǎng)卡,在Bond程序中實現(xiàn)網(wǎng)絡(luò)流量的負載均衡,即將一個網(wǎng)絡(luò)請求重定位到不同的網(wǎng)卡上,來提高總體網(wǎng)絡(luò)的可用性。 (2)網(wǎng)卡綁定的目的: 1.提高網(wǎng)卡的吞吐量。 2.增強網(wǎng)絡(luò)的高可用,同時也能實現(xiàn)負載均衡。 (3)網(wǎng)卡配置bond(綁定)bond模式: 1、Mode=0(balance-rr) 表示負載分擔(dān)round-robin,平衡輪詢策略,具有負載平衡和容錯功能 bond的網(wǎng)卡MAC為當(dāng)前活動的網(wǎng)卡的MAC地址,需要交換機設(shè)置聚合模式,將多個網(wǎng)卡綁定為一條鏈路。 2、Mode=1(active-backup) 表示主備模式,具有容錯功能,只有一塊網(wǎng)卡是active,另外一塊是備的standby,這時如果交換機配的是捆綁,將不能正常工作,因為交換機往兩塊網(wǎng)卡發(fā)包,有一半包是丟棄的。 3、Mode=2(balance-xor) 表示XOR Hash負載分擔(dān)(異或平衡策略),具有負載平衡和容錯功能 每個slave接口傳輸每個數(shù)據(jù)包和交換機的聚合強制不協(xié)商方式配合。(需要xmit_hash_policy)。 4、Mode=3(broadcast) 表示所有包從所有interface發(fā)出,廣播策略,具有容錯能力,這個不均衡,只有冗余機制...和交換機的聚合強制不協(xié)商方式配合。 5、Mode=4(802.3ad) 表示支持802.3ad協(xié)議(IEEE802.3ad 動態(tài)鏈接聚合) 和交換機的聚合LACP方式配合(需要xmit_hash_policy)。 6、Mode=5(balance-tlb) 適配器傳輸負載均衡,并行發(fā)送,無法并行接收,解決了數(shù)據(jù)發(fā)送的瓶頸。 是根據(jù)每個slave的負載情況選擇slave進行發(fā)送,接收時使用當(dāng)前輪到的slave。 7、Mode=6(balance-alb) 在5的tlb基礎(chǔ)上增加了rlb。適配器負載均衡模式并行發(fā)送,并行接收數(shù)據(jù)包。 5和6不需要交換機端的設(shè)置,網(wǎng)卡能自動聚合。4需要支持802.3ad。0,2和3理論上需要靜態(tài)聚合方式,但實測中0可以通過mac地址欺騙的方式在交換機不設(shè)置的情況下不太均衡地進行接收。 常用的有三種: mode=0:平衡負載模式,有自動備援,但需要”Switch”支援及設(shè)定。 mode=1:自動備援模式,其中一條線若斷線,其他線路將會自動備援。 mode=6:平衡負載模式,有自動備援,不必”Switch”支援及設(shè)定。 (4)網(wǎng)卡配置bond(綁定) 1、eth1,eth2,eth3都配置綁定為bond0,例如: #cat ifcfg-eth1 TYPE=Ethernet BOOTPROTO=none DEVICE=eth1 ONBOOT=yes MASTER=bond0 SLAVE=yes 載入bond模塊: #modprobe bonding 2、查看bond0,并橋接到br1 #cat ifcfg-bond0 DEVICE=bond0 TYPE=Bond NAME=bond0 BONDING_MASTER=yes BOOTPROTO=static USERCTL=no ONBOOT=yes #IPADDR=192.168.10.10 #PREFIX=24 #GATEWAY=192.168.10.19 BONDING_OPTS='mode=6 miimon=100' BRIDGE=br1 3、查看網(wǎng)橋br0 cat ifcfg-br1 TYPE=Bridge DEVICE=br1 ONBOOT=yes IPADDR=192.168.10.1 IPADDR1=192.168.20.1 IPADDR2=192.168.30.1 IPADDR3=192.168.40.1 IPADDR4=192.168.50.1 PREFIX3=24 PREFIX4=24 #GATEWAY=172.16.0.1 #DNS1=172.16.254.251 #DNS2=223.5.5.5 4、重啟系統(tǒng) 查看網(wǎng)卡信息: #ethtool bond0 七、網(wǎng)卡配置bond+vlan實踐 (1)創(chuàng)建bond0,并創(chuàng)建配置文件 (2)將bond0橋接到br1,并創(chuàng)建br1配置文件,重啟網(wǎng)絡(luò)服務(wù) (3)在br1上,創(chuàng)建虛擬vlan網(wǎng)口:br1.10,br1.20,并創(chuàng)建配置文件 (4)創(chuàng)建brvlan-10,brvlan-10,并創(chuàng)建配置文件 (5)將網(wǎng)橋與虛擬vlan網(wǎng)口連接 brctl addif brvlan-10 br1.10 brctl addif brvlan-20 br1.20 (6)重啟網(wǎng)絡(luò)服務(wù)
|