KVM + Openvswitch 環境在 CentOS 7 上的安裝

CentOS 7


  • 版本
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-862.3.3.el7.x86_64 #1 SMP Fri Jun 15 04:15:27 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
  • 關閉 SElinux (Security-Enhanced Linux: 對所有資源的訪問控制)
vi /etc/sysconfig/selinux 
SELINUX=disabled
  • 系統升級: yum update

安裝

  • KVM 是最底層的 Hypervisor, 用來模擬 CPU 的運行, Linux 內核默認支持 KVM,可以通過 modprobe kvm進行加載,通過 lsmod | grep kvm進行查看。

  • Qemu-kvm 是一個完整的模擬器,運行在用戶層,構建在 KVM 之上,調用 KVM 接口,並且提供了完整的網絡和I/O支持,安裝 qemu-kvm: yum install qemu-kvm

  • Libvirt 是通過調用 qemu-kvm 管理虛擬機的工具,它提供了一套虛擬機操作 API,可以通過 virsh調用,安裝 libvirt: yum install libvirt

  • Libvirt-python 是 libvirt 爲 python 提供的 API,安裝 libvirt-python: yum install libvirt-python

  • 安裝 libvirt 的客戶端: yum install libvirt-client

  • 安裝 基於 libvirt 的虛擬機創建命令行工具: yum install virt-install

  • 安裝 基於 libvirt 的圖形化虛擬機管理工具: yum install virt-manager

  • 安裝 基於 libvirt 用於顯示 guest OS 圖形化 console 的工具: yum install virt-viewer

  • 安裝 基於 libvirt 用於查看虛擬機資源使用情況的工具: yum install virt-top

  • 安裝 基於 libvirt 的使用 python 安裝虛擬機的工具: yum install python-virtinst

  • 安裝 虛擬機磁盤管理工具: yum install libguestfs-tools

  • 啓動 libvirtd 並設置其爲開機啓動

systemctl start libvirtd
systemctl enable libvirtd

[root@localhost ~]# virsh -c qemu:///system list
Id    Name                           State
----------------------------------------------------
  • 安裝 openvswitch: yum install openvswitch

KVM 網絡配置 – Bridge


  • 前往 CentOS 網絡配置文件目錄: cd /etc/sysconfig/network-scripts/

  • 添加網橋設備腳本文件: vi ifcfg-br0

DEVICE=br0
TYPE=Bridge
BOOTPROTO=none
ONBOOT=yes
NM_CONTROLLED=no

也可以在該網橋上配置宿主機的靜態 IP 地址:

DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.2.6
NETMASK=255.255.255.0
GATEWAY=192.168.2.1
DEFROUTE=yes
ONBOOT=yes
NM_CONTROLLED=no
  • 關閉網卡設備,並修改網卡設備腳本文件: ifdown enp133s0f0, vi ifcfg-enp133s0f0
HWADDR=00:0C:BD:00:DE:20
TYPE=Ethernet
BOOTPROTO=none
NM_CONTROLLED=no
DEVICE=enp133s0f0
ONBOOT=yes
BRIDGE=br0
  • 啓動網卡,啓動網橋: ifup enp133s0f0, ifup br0
[root@localhost network-scripts]# ip add
...
4: enp133s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
    link/ether 00:0c:bd:00:de:20 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20c:bdff:fe00:de20/64 scope link 
       valid_lft forever preferred_lft forever
...
17: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:bd:00:de:20 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20c:bdff:fe00:de20/64 scope link 
       valid_lft forever preferred_lft forever
...

如果網橋上有配置靜態 IP 地址,會在 br0 上顯示。

  • 查看網橋:
[root@localhost network-scripts]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000cbd00de20       no              enp133s0f0
br1             8000.000cbd00de21       no              enp133s0f1
br2             8000.000cbd00de22       no              enp133s0f2
br3             8000.000cbd00de23       no              enp133s0f3

KVM 網絡配置 – vSwitch


  • 啓動 openvswitch 並設置其爲開機啓動: systemctl start openvswitch, systemctl enable openvswitch

  • /etc/sysconfig/network-scripts目錄下, 配置 OVS Bridge 腳本: vi ifcfg-br20

DEVICE=br20
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=none
ONBOOT=yes
NM_CONTROLLED=no
  • 關閉網卡,修改網卡腳本: ifdown enp7s0f0, vi ifcfg-enp7s0f0
HWADDR=00:0C:BD:06:43:8A
DEVICETYPE=ovs
TYPE=OVSPort
DEVICE=enp7s0f0
NM_CONTROLLED=no
ONBOOT=yes
OVS_BRIDGE=br20
  • 啓動網卡,啓動 OVS Bridge: ifup enp7s0f0, ifup br20
[root@localhost network-scripts]# ip add
...
11: enp7s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP group default qlen 1000
    link/ether 00:0c:bd:06:43:8b brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20c:bdff:fe06:438b/64 scope link 
       valid_lft forever preferred_lft forever
...
14: br20: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 00:0c:bd:06:43:8a brd ff:ff:ff:ff:ff:ff
    inet6 fe80::60d0:9eff:fea0:b263/64 scope link 
       valid_lft forever preferred_lft forever
...
  • 查看 vswitch:
[root@localhost network-scripts]# ovs-vsctl show
7cb9a643-bff7-4d85-8f4d-1cb8077bb117
    Bridge "br20"
        Port "br20"
            Interface "br20"
                type: internal
        Port "vnet4"
            Interface "vnet4"
        Port "enp7s0f0"
            Interface "enp7s0f0"
    Bridge "br11"
        Port "ens65f1"
            Interface "ens65f1"
        Port "br11"
            Interface "br11"
                type: internal
    Bridge mgmt
        Port "enp1s0f0"
            Interface "enp1s0f0"
        Port "vnet0"
            Interface "vnet0"
        Port mgmt
            Interface mgmt
                type: internal
    Bridge "br21"
        Port "enp7s0f1"
            Interface "enp7s0f1"
        Port "vnet10"
            Interface "vnet10"
        Port "br21"
            Interface "br21"
                type: internal
        Port "vnet7"
            Interface "vnet7"
    ovs_version: "2.0.0"
  • 重啓 network 失敗,並提示 bridge 已存在,可以通過 ovs-vsctl del-br BRIDGE後,重啓 network 解決。

WebVirtMgr 部署見: WebVirtMgr + NGINX 環境 在 CentOS 7 上的部署

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章