在這邊,先暫時不考慮系統安全性的問題,單純就只是要架構一個可以Zero Downtime Live Migration的環境,以下是一些注意事項。

首先,準備三台PC,分別是HostA, HostB, and NFS,其中HostA以及HostB型號要一樣,因為它們是要做Live Migration的兩台伺服器。也就是我們建立的VM要能夠在HostA和HostB之間任意地Live Migration。至於NFS則不要求。

我們使用192.168.1.*的內網,其中HostA配置為192.168.1.10,HostB配置為192.168.1.11,VM配置為192.168.1.99,而NFS則配置在192.168.1.103。

HostA和HostB使用的作業系統是CentOS 7,而NFS我們用的是Ubuntu,VM外是安裝Fedora 22,並啟用Apache2網頁伺服器。

在建立KVM虛擬機之前,安裝CentOS時需要先做一些設定的工作,以下是設定工作的摘要:

  • HostA以及HostB安裝CentOS
  • 更新 /etc/hostname 以及 /etc/hosts 兩個檔案,設定正確的主機名稱,然後reboot
  • 執行系統更新 yum -y update
  • 安裝圖形化桌面 yum -y groupinstall “GNOME Desktop”
  • 使用systemctl set-default graphical.target指令,將圖形化桌面設定為開機啟動,然後reboot
  • 編輯 /etc/selinux/config,把SELINUX設為disabled
  • 執行 systemctl disable firewalld,關閉firewall
  • reboot
  • 使用以下指令安裝 kvm
  • yum -y install qemu-kvm libvirt virt-install bridge-utils virt-manager
  • 把所有的.iso以及qcow2檔案均放在NFS的/var/images資料夾中
  • mount -t nfs 192.168.1.103:/var/images /var/lib/libvirt/images
  • 使用 yum -y remove NetworkManager移除NetworkManger,以避免網路設定上的干擾
  • 修改/etc/sysconfig/network-script/ifcfg-eno1的內容,並新增/etc/sysconfig/network-script/ifcfg-bridge檔案
  • reboot
  • 以virt-manager指令進入Virtual Machine Manager
  • 建立VM,進入VM的details設定中,找出IDE Diske 1,然後到Performance設定中,設定Cache mode為none
  • 確定Virutal Machine Mangager中的Virtual Machine所使用的NIC是Bridge bridge (Host device eno1)

你需參考你的ifcfg-ens1修改和新增以下這兩個檔案:

ifcfg-ens1改為


TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno1"
UUID="8bf6b734-0c6f-4cdd-b738-981e132deb3b"
DEVICE="eno1"
ONBOOT="yes"
IPADDR="192.168.1.11"
PREFIX="24"
GATEWAY="192.168.1.1"
DNS1="168.95.1.1"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_PRIVACY="no"
BRIDGE=bridge
NM_CONTROLLED="no"
USERCTL="no"

 

ifcfg-bridge的內容則為:


TYPE="Bridge"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="eno1"
DEVICE="bridge"
ONBOOT="yes"
IPADDR="192.168.1.11"
PREFIX="24"
GATEWAY="192.168.1.1"
DNS1="168.95.1.1"
NM_CONTROLLED="no"
USERCTL="no"

 

(42)