KVM&OVS組網(wǎng)配置案例-3(解惑)

1. 參數(shù)解析

virt-install 命令中,--network 參數(shù)用于定義虛擬機(jī)的網(wǎng)絡(luò)配置。具體參數(shù)如下:

--network bridge=ovs-br0,model=virtio,virtualport_type=openvswitch,virtualport_options:tag=20
  • bridge=ovs-br0:指定虛擬機(jī)連接到 OVS 網(wǎng)橋 ovs-br0。
  • model=virtio:使用 VirtIO 半虛擬化驅(qū)動(dòng),提升性能。
  • virtualport_type=openvswitch:通知 libvirt 使用 Open vSwitch 的虛擬端口類型。
  • virtualport_options:tag=20:為端口設(shè)置 VLAN 標(biāo)簽(此處為 VLAN 20)。

2. 驗(yàn)證虛擬機(jī)是否關(guān)聯(lián)到 OVS 網(wǎng)橋

步驟 1:創(chuàng)建虛擬機(jī)

使用以下命令創(chuàng)建 vm1vm2

# 創(chuàng)建 vm1(VLAN 10)
sudo virt-install \
  --name vm1 \
  --ram 1024 \
  --vcpus 1 \
  --disk path=/var/lib/libvirt/images/vm1.qcow2 \
  --os-type linux \
  --os-variant ubuntu20.04 \
  --network bridge=ovs-br0,model=virtio,virtualport_type=openvswitch,virtualport_options:tag=10 \
  --graphics none \
  --console pty,target_type=serial \
  --cdrom /path/to/ubuntu-20.04.iso

# 創(chuàng)建 vm2(VLAN 20)
sudo virt-install \
  --name vm2 \
  --ram 1024 \
  --vcpus 1 \
  --disk path=/var/lib/libvirt/images/vm2.qcow2 \
  --os-type linux \
  --os-variant ubuntu20.04 \
  --network bridge=ovs-br0,model=virtio,virtualport_type=openvswitch,virtualport_options:tag=20 \
  --graphics none \
  --console pty,target_type=serial \
  --cdrom /path/to/ubuntu-20.04.iso

步驟 2:查看 OVS 端口

虛擬機(jī)啟動(dòng)后,檢查 OVS 網(wǎng)橋 ovs-br0 的端口信息:

sudo ovs-vsctl show

輸出應(yīng)包含以下信息:

Bridge ovs-br0
    Port "vnet0"          # vm1 的虛擬網(wǎng)卡
        tag: 10
        Interface "vnet0"
    Port "vnet1"          # vm2 的虛擬網(wǎng)卡
        tag: 20
        Interface "vnet1"
    Port "eth0"           # 物理網(wǎng)卡
        trunks: [10, 20]
        Interface "eth0"

步驟 3:驗(yàn)證 VLAN 標(biāo)簽

檢查端口 VLAN 配置:

# 查看 vnet0 的 VLAN 標(biāo)簽
sudo ovs-vsctl get port vnet0 tag
# 輸出應(yīng)為 10

# 查看 vnet1 的 VLAN 標(biāo)簽
sudo ovs-vsctl get port vnet1 tag
# 輸出應(yīng)為 20

3. 關(guān)鍵機(jī)制說(shuō)明

1. Libvirt 與 OVS 的集成

  • 自動(dòng)端口管理:當(dāng)指定 virtualport_type=openvswitch 時(shí),libvirt 會(huì)自動(dòng)調(diào)用 OVS 的 API,將虛擬機(jī)的虛擬網(wǎng)卡(如 vnet0、vnet1)添加到 OVS 網(wǎng)橋 ovs-br0
  • VLAN 標(biāo)簽設(shè)置:通過(guò) virtualport_options:tag=20,libvirt 會(huì)為 OVS 端口設(shè)置對(duì)應(yīng)的 VLAN 標(biāo)簽。

2. 無(wú)需手動(dòng)操作

  • 用戶無(wú)需手動(dòng)運(yùn)行 ovs-vsctl add-port,libvirt 會(huì)自動(dòng)完成以下操作:
    1. 將虛擬網(wǎng)卡(如 vnet0)添加到 ovs-br0。
    2. 設(shè)置端口的 VLAN 標(biāo)簽(通過(guò) tag 參數(shù))。

4. 驗(yàn)證虛擬機(jī)網(wǎng)絡(luò)

步驟 1:?jiǎn)?dòng)虛擬機(jī)并獲取 IP

在虛擬機(jī)內(nèi)部執(zhí)行以下命令(假設(shè)物理交換機(jī)已配置 VLAN 10 和 20 的 DHCP):

# 在 vm1(VLAN 10)中
dhclient -v eth0
ip addr show eth0  # 應(yīng)獲取類似 192.168.10.100/24 的 IP

# 在 vm2(VLAN 20)中
dhclient -v eth0
ip addr show eth0  # 應(yīng)獲取類似 192.168.20.100/24 的 IP

步驟 2:測(cè)試網(wǎng)絡(luò)連通性

# 在 vm1 中 ping VLAN 10 網(wǎng)關(guān)(假設(shè)網(wǎng)關(guān)為 192.168.10.1)
ping 192.168.10.1

# 在 vm2 中 ping VLAN 20 網(wǎng)關(guān)(假設(shè)網(wǎng)關(guān)為 192.168.20.1)
ping 192.168.20.1

5. 常見(jiàn)問(wèn)題排查

問(wèn)題 1:虛擬機(jī)無(wú)法獲取 IP

  • 檢查 OVS 配置
    sudo ovs-vsctl show
    sudo ovs-vsctl get port vnet0 tag
    
  • 檢查物理交換機(jī)
    • 確保連接宿主機(jī)的端口配置為 Trunk,允許 VLAN 10 和 20。
    • 確保 VLAN 10 和 20 的 DHCP 服務(wù)已啟用。

問(wèn)題 2:虛擬機(jī)之間無(wú)法通信

  • 設(shè)計(jì)隔離:VLAN 10 和 20 默認(rèn)是隔離的,跨 VLAN 通信需通過(guò)物理交換機(jī)或宿主機(jī)路由。

總結(jié)

通過(guò)以下參數(shù):

--network bridge=ovs-br0,model=virtio,virtualport_type=openvswitch,virtualport_options:tag=20
  • ? 虛擬機(jī)已關(guān)聯(lián)到 OVS 網(wǎng)橋:libvirt 自動(dòng)將虛擬網(wǎng)卡添加到 ovs-br0。
  • ? VLAN 標(biāo)簽已正確設(shè)置:OVS 端口標(biāo)記為指定 VLAN。
  • ? 無(wú)需手動(dòng)操作:整個(gè)過(guò)程由 libvirt 和 OVS 自動(dòng)完成。

最終,虛擬機(jī)將通過(guò) OVS 接入指定 VLAN,并從物理交換機(jī)的 DHCP 服務(wù)獲取 IP 地址。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容