1. 程式人生 > >搭建KVM服務器、自定義虛擬機

搭建KVM服務器、自定義虛擬機

pcf 地址 進程 min 由於 cover rc.local 擴容 esx

一、關於openstack安裝的環境需求
1.yum源(網絡yum源)
yum 源必須要有repodata 作為索引,即有repodata目錄才可以作為yum 源。
創建repodata :#createrepo (命令執行後當前目錄下就有了repodata目錄)
更新:createrepo --update (也可以刪除repodata再重新創建)
2.dns服務器
3.時間服務器
4.2臺虛擬機(8G+6G)
5.禁用selinux
vim /etc/selinux/config
SELINUX=disabled
6.禁用firewalld
systemctl stop firewalld
systemctl disabled firewalld//該命令雖然停止了防火墻自身調用,但是當其他程序調用的時候他還是會啟動
systemctl mask firewalld //該命令會把firewalld服務的連接變成/dev/null ,別的程序調用他不會啟動(當啟用的時候就敲systemctl unmask firewalld命令)

二、KVM虛擬機
1、虛擬化:x個物理資源成y個邏輯資源(就是一臺物理機虛擬成n個虛擬機)
2、虛擬化主要廠商及產品:
VMware : VMware Workstation、vSphere(商業版軟件 服務器版用esxi軟件 終端用vcenter軟件管理虛擬機)
RedHat: KVM、RHEV
Citrix: Xen
3.KVM的組成:
-- KVM:是linux內核的模塊(可以通過lsmod命令查看),需要CPU的支持,采用硬件輔助虛擬化技術

-- QEMU : 是一個虛擬化的仿真工具,完成對硬件的虛擬化支持,會模擬出其他的硬件(顯卡聲卡等)
-- Libvirt : 是一個對虛擬化管理的接口和工具
4.需要安裝的軟件
-- qemu-kvm : 為kvm提供底層硬件仿真支持
-- libvirt-dremon : libvirtd守護進程,管理虛擬機
-- libvirt-client : 用戶端軟件,提供客戶端管理命令
-- libvirt-daemon-driver-qemu : libvirtd連接qemu的驅動

5.虛擬機的組成
-- 一個xml文件(虛擬機配置聲明文件,定義虛擬機的各種參數),默認在/etc/libvirt/qemu/下
-- 一個磁盤鏡像文件(虛擬機的硬盤,真機用一個很大的文件來充當虛擬機的硬盤,保存虛擬機的操作系統和文檔數據),位置在/var/lib/libvirt/images/下

磁盤鏡像文件格式:raw和qcow2
qcow2是KVM默認的,占用空間小,支持壓縮、後端盤復用和快照

三、virsh 命令工具介紹
virsh命令進入交互模式,--help 產看命令幫助
list (--all) //列出虛擬機
nodeinfo //查看物理機的信息
dominfo 虛擬機名 //查看虛擬機的信息
net-list (--all) //查看虛擬交換機
start | reboot | shutdown | destroy | autostart 虛擬機名 //運行|重啟|關閉|強制關閉|開機自動運行
--連接自己的virsh管理器: # virsh 或# virsh -c qemu:///system
--連接別人的virsh管理器:
virsh -c qemu+ssh://176.233.3.17/system
net-list //查看虛擬網絡
net-define vbr.xml //創建虛擬網絡
net-undefine vbr //刪除虛擬網絡
net-start vbr //啟動虛擬網絡
net-destroy vbr //停用虛擬網絡
net-edit vbr //修改vbr網絡的配置

四、自定義虛擬機
步驟:
1.安裝軟件(參見二、4)
2.搭建網絡yum源
光盤作為 yum 源 CentOS7-1708.iso (共9591包)
#vim /etc/yum.repos.d/centos.repo
[centos7]
name=centos7
baseurl=ftp://176.233.3.17/centos
gpgcheck=0
enabled=1
:wq

3.禁用selinux(參見一、5)
4.禁用firewalld(參見一、6)
5.安裝虛擬網橋
#vim /etc/libvirt/qemu/network/vbr.xml
<network>
<name>vbr</name> //vbr是虛擬交換機的名字
<bridge name="vbr"/> //vbr是網卡的名字(寫一樣便於辨認)
<forward mode="nat"/>
<ip address="192.168.1.254" netmask="255.255.255.0">
<dhcp>
<range start="192.168.1.100" end="192.168.1.200"/>
</dhcp>
</ip>
</network>
#virsh //進入虛擬機管理器
#net-define vbr.xml //創建虛擬網絡
#net-start vbr //啟動
#net-autostart vbr //開機自啟

6.創建磁盤文件
#cd /var/lib/libvirt/images
#qemu-img create -f qcow2 node.img 8G

7.新建虛擬機
#virt-manager
選擇網絡安裝—>前進
URL:ftp://176.233.3.17/centos (網絡yum源的地址)—>前進
RAM:2048 CPU:2 —>前進
選擇或創建自定義存儲:管理—>選擇node.img(步驟6中創建的鏡像)—>選擇卷—>前進
選擇網絡:虛擬網絡‘vbr’(步驟5中創建的網橋)—>完成
語言選擇English(由於創建的虛擬機是模板虛擬機,因此需要滿足共性)
安裝分區:手動分區,選擇標準分區,只添加一個根分區
設置密碼(此密碼可用於以該虛擬機為模板創建的虛擬機的root密碼)

五、虛擬機模板制作
初始化剛安裝好的系統:
1.禁用selinux
#vi /etc/selinux/config
SELINUX=disabled

2.網卡及配置文件設置
#vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0" //網卡的名字
ONBOOT="yes" //開機是否啟動
NM_CONTROLLED="no" //拒絕接受NetworkManager服務的管理
TYPE="Ethernet" //網卡設備 還有一種類型是bridge交換機
BOOTPROTO="dhcp" //dhcp動態IP
//r如果BOOTPROTO="static"則以下三項取消註釋
#IPADDR="192.168.1.50"
#PREFIX="24"
#GATEWAY="192.168.1.254"

3.停止並卸載防火墻與NetworkManager
systemctl stop firewalld
systemctl stop NetworkManager
yum remove -y NetworkManager- firewalld- python-firewall

4.重啟虛擬機(重啟後確保可以上網)
5.配置yum源
#vi /etc/yum.repo/local.repo
[local_repo]
name=CentOS-$releasever - Base
baseurl="ftp://192.168.1.254/centos7"
enabled=1
gpgcheck=0
:wq
#yum -y install bash-completion //命令行自動補齊,重啟生效

6.驗證數字簽名
下載 RPM-GPG-KEY-CentOS-7 //包在yum源的文件夾裏,也可scp到虛擬機裏
導入 rpm --import RPM-GPG-KEY-CentOS-7
修改 local.repo gpgcheck=1 //開啟數字驗證
使用 yum install lftp lrzsz 驗證

ps:lftp 的功能
--可以連自己的ftp: lftp 192.168.4.11
--可以連對方的ftp: lftp sftp://192.168.4.12 -u root
s表示ssh ,即使對方沒開ftp,但開了ssh ,也可以在對方的ftp上操作

7.禁用空路由
vim /etc/sysconfig/network
NOZEROCONF="yes"
不禁用的話可能會在某種情況下影響計算機的通訊

8.添加串口終端(可以console 虛擬機)
#vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed ‘s, release .*$,,g‘ /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial --speed=115200"
GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0 console=ttyS0,115200n8"
GRUB_DISABLE_RECOVERY="true"
GRUB_DISABLE_LINUX_UUID="true"
GRUB_ENABLE_LINUX_LABEL="true"
:wq

修改完之後創建引導文件
#grub2-mkconfig -o /boot/grub2/grub.cfg
#beboot
修改/etc/fstab ,把UUID改成系統設備名(用blkid命令查看uuid對應的磁盤設備)

9.去除個性化信息
安裝分區擴展軟件
#yum -y install cloud-utils-growpart

設置第一次開機自動擴容根目錄
#chmod 755 /etc/rc.local

在 rc.local 裏加入如下配置
###
/usr/bin/growpart /dev/vda 1
/usr/sbin/xfs_growfs /
/usr/bin/sed ‘/^###/,$d‘ -i /etc/rc.d/rc.local

10.關閉虛擬機後執行信息清理工作(真機)
設置語言為英文
#LANG=en_US.UTF-8
#virt-sysprep -d 虛擬機名

11.刪除虛擬機定義
#virsh undefine 虛擬機名

六、快速創建虛擬機
創建 2 個虛擬機
要求:
虛擬機1
8G 內存
2塊網卡
第一塊網卡連接虛擬交換機 vbr
第二塊網卡連接虛擬交換機 private1
設置靜態 IP,默認網關 192.168.1.254

 2塊硬盤
 其中 / 的 vda1 要求 50G
 vdb  20G

虛擬機2
6G 內存
2塊網卡
第一塊網卡連接虛擬交換機 vbr
第二塊網卡連接虛擬交換機 private1
設置靜態 IP,默認網關 192.168.1.254
要求與第一臺虛擬主機的兩個 IP 都能 ping 通
硬盤
/ 的 vda1 要求 50G

1.開啟虛擬網卡
#virsh net-start default
#virsh net-autostart default
//將所有的虛擬網卡開啟並設置成開機自啟動

2.創建磁盤文件
#cd /var/lib/libvirt/images
#qemu-img create -b node.img -f qcow2 node1.img 50G
#qemu-img create -f qcow2 disk.img 20G

3.更改虛擬機node1的配置文件
#virsh edit node1
修改內存大小為8G:
<memory unit=‘KiB‘>8192000</memory>
<currentMemory unit=‘KiB‘>8192000</currentMemory>
添加第二塊硬盤:(在原來disk後面添加)
<disk type=‘file‘ device=‘disk‘>
<driver name=‘qemu‘ type=‘qcow2‘/>
<source file=‘/var/lib/libvirt/images/disk.img‘/>
<target dev=‘vdb‘ bus=‘virtio‘/>
</disk>
添加網卡(在原來interface後面添加)
<interface type=‘bridge‘>
<source bridge=‘private1‘/>
<model type=‘virtio‘/>
</interface>

4.啟動虛擬機
#virsh start node1
#virsh console node1

5.配置網卡IP
#cd /etc/sysconfig/network-scripts/
配置eth0網卡IP
#vim ipcfg-eth0
DEVICE="eth0" #虛擬網卡的名字
ONBOOT="yes" #在系統啟動時是否啟動這個網卡
NM_CONTROLLED="no" #拒絕接受networkmanager的管理
TYPE="Ethernet" #表示它是一個網卡(Bridge表示是一個交換機)
BOOTPROTO="none" #如何配置IP地址=static(靜態IP),dhcp(自動分配,需要將下面三行註釋掉),none(不處理)
IPADDR="192.168.1.100" #IP地址
PREFIX="24" #子網掩瑪
GATEWAY="192.168.1.254" #默認網關
:wq

配置eth1網卡
#cp ipcfg-eth0 ipcfg-eth1
#vim pcfg-eth1
DEVICE="eth1"
ONBOOT="yes"
NM_CONTROLLED="no"
TYPE="Ethernet"
BOOTPROTO="none"
IPADDR="192.168.4.100"
PREFIX="24"
:wq

重啟配置文件
#systemctl restart network

6.DNS服務器
(真機):
#yum -y install bind bind-chroot
#vim /etc/named.conf
listen-on port 53 { 192.168.1.254; };
allow-query { any; };
forwarders { 202.106.196.115; };
dnssec-enable no;
dnssec-validation no;
:wq

7.時間服務器
#yum install -y chrony
(真機):
#vim /etc/chrony.conf
server ntp1.aliyun.com iburst
bindacqaddress 0.0.0.0
allow 0/0

(虛擬機):
#yum install -y chrony
#vim /etc/chrony.conf
server 192.168.1.254 iburst
檢查是否同步成功:
chronyc sources -v

  • 同步成功,+ 備胎 , ? 同步失敗

搭建KVM服務器、自定義虛擬機