OpenStack高可用集群下冊):部署與運(yùn)維》—11.3.2 控制節(jié)點(diǎn)KVM虛擬機(jī)準(zhǔn)備

      網(wǎng)友投稿 1090 2025-03-31

      11.3.2 控制節(jié)點(diǎn)KVM虛擬機(jī)準(zhǔn)備

      在本節(jié)的實(shí)驗(yàn)環(huán)境中,OpenStack高可用集群控制節(jié)點(diǎn)由三臺KVM虛擬機(jī)組成(controller1-vm、controller2-vm和controller3-vm),KVM虛擬機(jī)的宿主機(jī)為前一節(jié)創(chuàng)建的運(yùn)行Centos7.2的三臺VMware虛擬機(jī)(controller1、controller2和controller3)。本節(jié)將重點(diǎn)介紹如何在Centos/RHEL系統(tǒng)中創(chuàng)建KVM虛擬機(jī)。本節(jié)內(nèi)容也可作為OpenStack系統(tǒng)鏡像創(chuàng)建的參考。

      1. KVM虛擬機(jī)安裝源設(shè)置

      在使用virt-install安裝KVM虛擬機(jī)之前,需要配置安裝源,即為virt-install指定安裝包位置倉庫(通過--location參數(shù)指定)。本節(jié)實(shí)驗(yàn)環(huán)境使用Centos 7.2系統(tǒng)鏡像來安裝KVM虛擬機(jī)。在11.3.1節(jié)中,Centos 7.2的ISO鏡像已經(jīng)被解壓到controller1節(jié)點(diǎn)的/data/ISO目錄,并且controller2和controller3節(jié)點(diǎn)也通過NFS掛載到本地/data目錄,即每臺VMware虛擬機(jī)的/data/ISO目錄都存放了ISO安裝鏡像源。本節(jié)以在controller1節(jié)點(diǎn)創(chuàng)建KVM虛擬機(jī)為例進(jìn)行講解,其他節(jié)點(diǎn)創(chuàng)建過程與此類似。為簡單起見,此處配置HTTP下載服務(wù)器供virt-install在安裝時進(jìn)行軟件包下載,HTTP服務(wù)器的具體配置過程可參考create_vm_on_master_node.sh腳本中的configure_apache_server()函數(shù)。該函數(shù)運(yùn)行完成后,通過http://controller1_ip/rpm/即可下載安裝包。本例中controller1的IP為192.68.142.21,因此在瀏覽器中輸入http://192.168.142.21/rpm/即可下載HTTP站點(diǎn)軟件包,如圖11-18所示。

      同樣,在virt-install的安裝命令中,為--location參數(shù)指定http://192.168.142.21/rpm/,則virt-install將自動到HTTP站點(diǎn)提取安裝包。另外,/data目錄并不具備httpd_sys_content上下文標(biāo)簽,因此如果啟用SELinux,則SELinux會禁止訪問該目錄,用戶將收到權(quán)限不允許的提示。通常情況下建議關(guān)閉SELinux(重啟生效),在SELinux被禁用的情況下將不會出現(xiàn)此類情況。如果確實(shí)要使用SELinux,則可以使用semanage命令為/data目錄設(shè)置允許httpd訪問的標(biāo)簽。

      2. KVM虛擬機(jī)Fencing設(shè)置

      作為試驗(yàn)環(huán)境,F(xiàn)encing功能可能并不重要,但是如果作為生產(chǎn)環(huán)境,則Fencing功能是必須的。本節(jié)的實(shí)驗(yàn)環(huán)境中,之所以要在VMware虛擬機(jī)中創(chuàng)建KVM虛擬機(jī)來作為OpenStack高可用集群的控制節(jié)點(diǎn),就是希望借用現(xiàn)有的KVM虛擬機(jī)Fencing驅(qū)動來模擬控制節(jié)點(diǎn)的Fencing功能。如果是生產(chǎn)環(huán)境,則控制節(jié)點(diǎn)通常由物理服務(wù)器承載。常見的物理服務(wù)器均具備Fencing功能,因此生產(chǎn)環(huán)境中創(chuàng)建KVM虛擬機(jī)來作為控制節(jié)點(diǎn)這個步驟是完全沒有必要的。在本實(shí)驗(yàn)環(huán)境中,通過fence-virtd軟件對KVM虛擬機(jī)進(jìn)行Fencing操作,fence-virtd的配置可參考create_vm_on_master_node.sh腳本中的configure_fence_file()函數(shù)實(shí)現(xiàn)。該函數(shù)執(zhí)行完成后,在VMware宿主虛擬機(jī)上即可通過fence_xvm命令來驗(yàn)證配置是否正確。fence_xvm命令可以列出(list)主機(jī)上全部虛擬機(jī)信息,同時獲取全部虛擬機(jī)的狀態(tài),并對指定虛擬機(jī)進(jìn)行關(guān)機(jī)(off)、啟動(on)、重啟(reboot)和狀態(tài)獲取(status)等操作。fence_xvm -o list命令將列出宿主機(jī)上全部虛擬機(jī)及其狀態(tài),驗(yàn)證結(jié)果如下:

      [root@controller1 ~]# fence_xvm -o list

      controller1-vm? ? ? ? ? ? ?b9baabdf-9822-447e-95c0-35ff1af0d5ed? ?on

      [root@controller1 ~]# virsh list --all

      Id? ? Name? ? ? ? ? ? ? ? ? ? ? ? ? ?State

      ----------------------------------------------------

      4? ? ?controller1-vm? ? ? ? ? ? ? ? ?running

      《OpenStack高可用集群(下冊):部署與運(yùn)維》—11.3.2 控制節(jié)點(diǎn)KVM虛擬機(jī)準(zhǔn)備

      此外,可以通過fence_xvm命令測試對虛擬機(jī)的Fencing操作,如下命令將會重啟VMware宿主機(jī)controller3上的KVM虛擬機(jī)controller3-vm:

      [root@controller3 ~]# fence_xvm -o reboot -H controller3-vm

      通過VNC客戶端可以觀察到,在運(yùn)行fence_xvm -o reboot命令后,KVM虛擬機(jī)controller3-vm系統(tǒng)自動重啟,如圖11-19所示。

      圖11-19 fence_xvm重啟KVM虛擬機(jī)controller3-vm

      3. KVM虛擬機(jī)自定義安裝

      在制作適用于特定環(huán)境的系統(tǒng)鏡像時,并不希望安裝社區(qū)或廠商發(fā)行的全部軟件包,因?yàn)樯鐓^(qū)或廠商發(fā)行的系統(tǒng)鏡像(如CentOS-7-x86_64-DVD-1511.iso)包含了很多不必要的軟件包,這些不必要的軟件包使得制作出來的鏡像顯得十分臃腫,非常不利于云環(huán)境中鏡像的快速分發(fā)。因此在制作鏡像時通常采取自定義安裝方式來有選擇性地安裝所需軟件和工具包。在本實(shí)驗(yàn)環(huán)境中,我們事先制作了一個KVM虛擬機(jī)自定義安裝初始化文件virt-base.ks。該文件將告知virt-install需要安裝的軟件工具包,同時告知其在系統(tǒng)安裝完成后需要對KVM虛擬機(jī)做哪些系統(tǒng)初始化配置工作,如設(shè)置/etc/hosts、/etc/fstab等系統(tǒng)配置文件,以及設(shè)置主機(jī)名、本地yum源倉庫和配置網(wǎng)卡IP地址等。virt-base.ks自定義安裝文件的制作可參考create_vm_on_master_node.sh腳本中的create_guest_inject_script()函數(shù)來實(shí)現(xiàn),該函數(shù)執(zhí)行完成后,將會在當(dāng)前目錄生成一個名為virt-base.ks的自定義安裝文件,virt-base.ks文件通過--initrd-inject參數(shù)和--extra-args參數(shù)傳入virt-install命令,virt-install命令將根據(jù)virt-base.ks文件指定的內(nèi)容和命令進(jìn)行KVM虛擬機(jī)操作系統(tǒng)的自定義安裝和初始化設(shè)置。在采用virt-base.ks進(jìn)行自定義KVM虛擬機(jī)安裝時,virt-install除了安裝Kernel模塊外,還會自動安裝nfs-utils、net-tools、ntp和wget等實(shí)用工具包,同時根據(jù)腳本對系統(tǒng)進(jìn)行初始化設(shè)置,并掛載NFS文件系統(tǒng)、配置yum源以及設(shè)置網(wǎng)卡IP地址等。

      4.創(chuàng)建KVM虛擬機(jī)鏡像

      在Linux系統(tǒng)中,創(chuàng)建KVM虛擬機(jī)最常使用的便是virt-install命令行工具。virt-install命令行工具有著復(fù)雜多樣的參數(shù)供用戶選擇,用戶可以通過virt-install提供的參數(shù)設(shè)置不同的值來創(chuàng)建不同類型的虛擬機(jī)。常見的virt-install命令行參數(shù)介紹如下:

      -n|--name參數(shù):字符串值,用以設(shè)置客戶端虛擬機(jī)名稱。

      -r|--ram參數(shù):整數(shù)值,用以設(shè)置為客戶端虛擬機(jī)分配的內(nèi)存。

      -u|--uuid參數(shù):字符串值,用以設(shè)置客戶機(jī)UUID ,用戶未指定時系統(tǒng)會自動生成。

      --vcpus參數(shù):整數(shù)值,用以設(shè)置客戶機(jī)的vcpu個數(shù)。

      -v|--hvm 參數(shù):沒有值,用以指定客戶機(jī)虛擬化模式為全虛擬化。

      -p|--paravirt參數(shù):沒有值,用以指定客戶機(jī)虛擬化模式為半虛擬化。

      -l|--location參數(shù):字符串值,用以指定安裝源的位置,有本地安裝源和遠(yuǎn)程安裝源之分。遠(yuǎn)程安裝源包括nfs、http和ftp幾種方式,常用于kickstart網(wǎng)絡(luò)安裝中,--location參數(shù)允許使用--extra-args和--initrd-inject來指定額外的內(nèi)核參數(shù)。

      -c|--cdrom參數(shù):字符串值,用于指定光驅(qū)安裝介質(zhì)路徑,一般為iso格式鏡像文件,如--cdrom=/root/centos7.iso。

      --disk參數(shù):字符串值,用以指定存放客戶機(jī)操作系統(tǒng)的介質(zhì)路徑,類似Windows系統(tǒng)安裝中使用的C盤,如--disk= /image/centos7/centos7-base.img。

      -w|--network參數(shù):值為網(wǎng)絡(luò)名稱,用以指定客戶機(jī)連接到的主機(jī)網(wǎng)絡(luò),對于想要使用靜態(tài)網(wǎng)絡(luò)的客戶機(jī),通常將該參數(shù)值設(shè)置為主機(jī)網(wǎng)橋(BRIDGE)。

      --cpuset參數(shù):整數(shù)列表,設(shè)置哪些物理CPU能夠被虛擬客戶機(jī)使用。

      --os-type參數(shù):其值為操作系統(tǒng)類型(如Linux、Windows),用以指定客戶機(jī)操作系統(tǒng)類型,虛擬化引擎將根據(jù)不同類型的操進(jìn)行客戶機(jī)系統(tǒng)優(yōu)化。

      --os-variant參數(shù):其值為特定的操作系統(tǒng)(如Fedora18、Rhel6、Rhel7、Winxp和Win2k3等),虛擬化引擎將針對該參數(shù)設(shè)置的操作系統(tǒng)進(jìn)一步優(yōu)化虛擬機(jī)配置。

      --accelerate參數(shù):用以指定KVM或KQEMU內(nèi)核加速,這個選項(xiàng)目前是默認(rèn)。

      --initrd-inject參數(shù):字符串值,此參數(shù)通常與--location以及--extra-argsc參數(shù)配合使用,主要用以kickstart自動安裝場景中,用以指定ks文件的絕對路徑。

      --extra-args參數(shù):字符串值,在通過--location參數(shù)安裝客戶機(jī)時,用以指定附加內(nèi)核命令行參數(shù)給安裝程序。在kickstart自動安裝中,通常與--initrd-inject參數(shù)配合使用,如--initrd-inject=/path/to/my.ks? --extra-args "ks=file:/my.ks"。

      --graphics參數(shù):字符串值,用以指定使用的圖形安裝界面,此參數(shù)并不會配置客戶機(jī)的虛擬硬件,而是設(shè)置可以通過什么方式訪問客戶機(jī)。如--graphics vn,listen='0.0.0.0',這樣便可通過VNC客戶端來訪問KVM虛擬機(jī)。

      在本實(shí)驗(yàn)環(huán)境中,先通過qemu-img創(chuàng)建一個qcow2格式的鏡像文件,然后通過virt-install命令工具安裝KVM虛擬機(jī)操作系統(tǒng),使用遠(yuǎn)程HTTP安裝源,通過--initrd-inject和--extra-args參數(shù)將ks文件傳遞給安裝程序。創(chuàng)建的虛擬機(jī)名稱為centos7-base(對應(yīng)的虛擬機(jī)鏡像文件為centos7-base.img)。在virt-install安裝過程中,可以使用VNC客戶端查看安裝進(jìn)度。virt-install命令行工具安裝KVM虛擬機(jī)的過程可參考如下腳本:

      #/usr/bin/bash

      yum install -y virt-install

      mkdir -p $vm_dir

      //創(chuàng)建qcow2格式的磁盤文件

      qemu-img create -f qcow2 -o preallocation=metadata \

      ${vm_dir}/$vm_base $vm_disk

      //創(chuàng)建KVM虛擬機(jī)

      virt-install --connect=qemu:///system \

      --network=bridge:$int_br_name,mac=$int_mac \

      --initrd-inject=./virt-base.ks \

      --extra-args="ks=file:/virt-base.ks console=tty0 \

      console=ttyS0,115200 serial rd_NO_PLYMOUTH" \

      --name=centos7-base \

      --disk path=${vm_dir}/$vm_base,format=qcow2,cache=none \

      --ram $vm_ram \

      --vcpus=$vm_cpu \

      --check-cpu \

      --accelerate \

      --os-type linux \

      --os-variant rhel7 \

      --hvm \

      --location=$rpm_http \

      --graphics vnc,listen='0.0.0.0' \

      --noautoconsole

      上述KVM虛擬機(jī)安裝腳本中,通過--graphics參數(shù)設(shè)置虛擬機(jī)訪問方式為虛擬網(wǎng)絡(luò)客戶端(VNC,Virtual Network Console),并監(jiān)聽全部IP。這里沒有指定VNC的監(jiān)聽端口,而VNC默認(rèn)監(jiān)聽端口為5900,因此只需在VNC客戶端軟件中指定主機(jī)IP和5900端口,即可訪問主機(jī)上的KVM虛擬機(jī)。VNC客戶端訪問方式如圖11-20所示。

      圖11-20中使用的VNC Viewer是一款常用的免費(fèi)VNC客戶端軟件,通過VNC訪問KVM虛擬機(jī)后,即可看到KVM虛擬機(jī)安裝啟動過程。安裝完成之后,通過VNC客戶端即可實(shí)現(xiàn)KVM虛擬機(jī)的終端命令行操作,VNC客戶端對centos7-base虛擬機(jī)的訪問結(jié)果如圖11-21所示。

      圖11-21 VNC客戶端訪問KVM虛擬機(jī)創(chuàng)建過程

      5.定義KVM虛擬機(jī)配置文件

      虛擬機(jī)的運(yùn)行有多種方式,用戶既可以使用qemu-system-x86或者qemu-kvm來運(yùn)行虛擬機(jī),也可以使用Libvirt的virsh命令從XML文件來定義和運(yùn)行虛擬機(jī)。Libvirt使用XML文件對虛擬機(jī)進(jìn)行配置,其中包括虛擬機(jī)名稱、分配內(nèi)存、vcpu和網(wǎng)絡(luò)等多種信息,通常XML文件又稱虛擬機(jī)配置文件。使用qemu-kvm來運(yùn)行虛擬機(jī),與virt-install命令創(chuàng)建KVM虛擬機(jī)一樣,需要在命令行指定很多虛擬機(jī)運(yùn)行參數(shù),包括內(nèi)存、vcpu、網(wǎng)絡(luò)和鏡像文件等參數(shù),而這些參數(shù)實(shí)際上都可以通過XML語言定義到XML文件中,并通過Libvirt提供的virsh命令操作XML文件從而操作虛擬機(jī)。在Libvirt中,定義虛擬機(jī)通常也稱為定義一個Domain,在實(shí)際應(yīng)用中,通常不必去修改virt-install生成的虛擬機(jī)鏡像系統(tǒng)文件,而是將該鏡像系統(tǒng)文件作為一個基礎(chǔ)鏡像,并在其上創(chuàng)建一個僅保存差異部分的差分鏡像文件,同時通過XML語言重新定義虛擬機(jī)配置,并以virsh命令來定義和啟動虛擬機(jī)。用這種方式對虛擬機(jī)進(jìn)行操作非常靈活,并且不會更改原始虛擬機(jī)鏡像(除非使用commit命令)。如果想要重新定義虛擬機(jī)資源配置,只需修改XML文件并重新定義和啟動虛擬機(jī)即可。在本節(jié)的實(shí)驗(yàn)環(huán)境中,基礎(chǔ)鏡像文件為virt-install創(chuàng)建的centos7-base.img文件,這里將其拷貝到/localvms目錄,并在該目錄中創(chuàng)建一個虛擬機(jī)配置臨時文件template.xml,之后以centos7-base.img和template.xml為基礎(chǔ),創(chuàng)建一個差分鏡像文件${vm_name}.img和一個定義虛擬機(jī)的XML文件${vm_name}.xml,并通過virsh命令來定義和啟動虛擬機(jī)。另外,此處啟動的虛擬機(jī)即是最終作為OpenStack高可用集群控制節(jié)點(diǎn)的KVM虛擬機(jī)。虛擬機(jī)的具體定義和啟動過程可參考create_vm_on_master_node.sh腳本中的define_vm_xml()函數(shù)。

      該函數(shù)執(zhí)行完成后,在主機(jī)/localvms目錄下將生成如下文件,同時通過virsh命令可以看到虛擬機(jī)的運(yùn)行狀態(tài):

      [root@controller1 localvms]# ls -l

      total 1925344

      -rw-r--r-- 1 qemu qemu 21478375424 Nov 28 23:40 centos7-base.img

      -rw-r--r-- 1 qemu qemu? ? 86507520 Nov 29 15:07 controller1-vm.img

      -rw-r--r-- 1 root root? ? ? ? 1192 Nov 28 23:40 controller1-vm.xml

      -rw-r--r-- 1 root root? ? ? ? 1192 Nov 28 23:40 template.xml

      [root@controller1 localvms]# virsh list --all

      Id? ? Name? ? ? ? ? ? ? ? ? ? ? ? ? ?State

      ----------------------------------------------------

      4? ? ?controller1-vm? ? ? ? ? ? ? ? ?running

      virsh命令啟動虛擬機(jī)后,即可通過VNC客戶端訪問虛擬機(jī)。進(jìn)入虛擬機(jī)系統(tǒng)命令行后,可以檢查虛擬機(jī)的系統(tǒng)配置是否與自定義安裝文件設(shè)置的一致,如圖11-22所示。

      本節(jié)創(chuàng)建KVM虛擬機(jī)的源代碼參見https://github.com/ynwssjx/Openstack-HA-Deploy-ment,其中,實(shí)現(xiàn)KVM虛擬機(jī)創(chuàng)建和初始化的腳本主要包括create_vm_on_all_nodes.sh、create_vm_on_master_nodes.sh和create_vm_on_slave_nodes.sh三個腳本,但是在實(shí)際執(zhí)行中,只需運(yùn)行第一個腳本create_vm_on_all_node.sh,該腳本會自動在三臺運(yùn)行Centos系統(tǒng)的VMware虛擬機(jī)上分別創(chuàng)建三個KVM虛擬機(jī)。需要指出的是,使用物理服務(wù)器作為控制節(jié)點(diǎn)的生產(chǎn)環(huán)境并不需要執(zhí)行本節(jié)所做的操作,本節(jié)內(nèi)容僅針對采用虛擬機(jī)作為OpenStack高可用集群控制節(jié)點(diǎn)的實(shí)驗(yàn)環(huán)境。

      圖11-22 通過VNC訪問controller1-vm虛擬機(jī)并查看系統(tǒng)配置情況

      OpenStack 云計(jì)算

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:WPS表格辦公—一鍵在表格當(dāng)中插入課程表
      下一篇:進(jìn)銷存管理軟件(藥品進(jìn)銷存管理軟件)
      相關(guān)文章
      精品亚洲aⅴ在线观看| 亚洲精品一卡2卡3卡三卡四卡| 亚洲午夜国产精品无卡| 亚洲综合在线观看视频| 亚洲精品免费观看| 亚洲AV无码专区在线播放中文| 国产亚洲人成网站观看| 亚洲成AV人在线观看天堂无码| 亚洲大成色www永久网站| 亚洲精品无码久久千人斩| 亚洲人成伊人成综合网久久久| 亚洲日韩aⅴ在线视频| 亚洲精品美女久久777777| 亚洲动漫精品无码av天堂| 无码乱人伦一区二区亚洲一| 午夜亚洲国产理论秋霞| 久久亚洲精精品中文字幕| 亚洲自偷精品视频自拍| 91嫩草亚洲精品| 亚洲人精品亚洲人成在线| 亚洲色大成WWW亚洲女子| 欧美亚洲国产SUV| 亚洲AV中文无码乱人伦| 精品国产人成亚洲区| 亚洲精品无码国产| 亚洲成人午夜在线| 亚洲欧洲日韩在线电影| 亚洲日本久久一区二区va| 亚洲综合欧美色五月俺也去| 亚洲精华液一二三产区| 激情无码亚洲一区二区三区| 亚洲国产成人久久笫一页| 国产亚洲精久久久久久无码77777| 久久亚洲国产欧洲精品一| 亚洲国产精品一区二区久久| 亚洲欧洲国产精品久久| 在线观看亚洲AV每日更新无码| 国产精品亚洲а∨无码播放麻豆| 久久国产成人精品国产成人亚洲 | 亚洲中文字幕久久精品无码喷水| 亚洲人成精品久久久久|