前段時間學習了關於PostGis、OSM數據以及Mapnik相關內容,接下來將利用假期重點學習PostgreSQL-XL和瓦片服務器集羣技術,所以先把環境搭好。計劃採用KVM來充分利用家裏不太寬裕的「服務器」資源,以便實現彈性計算:)html
CentOS版本:64位 7.2 1511 linux
1. 驗證CPU是否支持KVM;若是結果中有vmx(Intel)或svm(AMD)字樣,就說明CPU的支持的。shell
egrep '(vmx|svm)' /proc/cpuinfo
2. 關閉SELinux,將 /etc/sysconfig/selinux 中的 SELinux=enforcing 修改成 SELinux=disabled vim
3. 最小安裝的CentOS安裝一些最基本的包(可選項,由於我是剛安裝好的CentOS,因此爲了下面方便點,先把一些必要的工具安裝下)centos
yum install epel-release net-tools vim unzip zip wget ftp -y
4. 安裝KVM及其依賴項服務器
yum install qemu-kvm libvirt virt-install bridge-utils -y
5. 驗證安裝結果,下圖說明已經成功安裝了網絡
lsmod | grep kvm
6. 開啓kvm服務,而且設置其開機自動啓動tcp
systemctl start libvirtd
systemctl enable libvirtd
----------------2019.02.28更新-------------------------工具
報「Failed to load module '/usr /lib64/libvirt/connection-driver/libvirt_driver_interface.so': libexslt.so.0:「錯誤學習
解決方法爲
yum install -y libxslt.x86_64
----------------2019.02.28更新結束-------------------------
7. 查看狀態操做結果,以下圖所示,說明運行狀況良好
systemctl status libvirtd
systemctl is-enabled libvirtd
8. 配置網橋模式,先將 /etc/sysconfig/network-scripts/ 目錄下的網卡配置文件備份一份(不要備在當前目錄以及子目錄下,其餘目錄隨意)
a. 建立 ifcfg-br0 文件,內容以下:
BOOTPROTO=static DEVICE=br0 TYPE=Bridge NM_CONTROLLED=no IPADDR=192.168.1.95 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=61.177.7.1 DNS2=8.8.8.8
b. 移除掉原來的 ifcfg-enp0s25 ,從新建立該文件,內容以下:
BOOTPROTO=none DEVICE=enp0s25 NM_CONTROLLED=no ONBOOT=yes BRIDGE=br0
c. 重啓網絡服務
systemctl restart network
使用 ifconfig 驗證操做結果,多了一塊網卡br0,如今訪問 think8848-srv02 使用 192.168.1.95 就能夠了。
2、安裝虛擬機
1. 準備操做系統安裝鏡像文件,在本文中將使用和宿主環境同樣的CentOS7.2,把該文件放到 /home/iso 目錄下
2. 建立虛擬機文件存放的目錄
mkdir -p /home/kvm-bak
3. 使用 virt-install 建立虛擬機
virt-install -n think8848-kvmbase -r 2048 --disk /home/kvm-bak/think8848-kvmbase.img,format=qcow2,size=20 --network bridge=br0 --os-type=linux --os-variant=rhel7.2 --cdrom /home/iso/CentOS-7-x86_64-DVD-1511.iso --vnc --vncport=5910 --vnclisten=0.0.0.0
操做結果顯示:
不要理會裏面提示的錯誤,接着往下走
4. 打開防火牆上的5910端口
firewall-cmd --zone=public --add-port=5910/tcp --permanent
firewall-cmd --reload
5. 使用VNC鏈接該虛擬機,進行虛擬機操做系統的安裝,直接到VNC官網上下載最新版的VNC Viewer便可
a. VNC Viewer
b. 新建鏈接,提供宿主IP、端口號(在virt-install建立過程當中指定的),以及名稱
c. 在Expert頁籤中,將ColorLevel的值由原來的 pal8 修改成 rgb222 ,點擊OK按鈕保存
d. 若是你像我同樣,邊操做邊還在作筆記,等你雙擊鏈接的名稱後,安裝界面都準備好了
接下來就安裝CentOS吧,過程略。
6. 安裝完CentOS,系統要求重啓,這時候虛擬機沒有重啓(也不知是由於什麼問題),VNC也連不上,先在宿主機上查看虛擬機狀態,顯示think8848-kvmbase爲關閉狀態
virsh list --all
7. 手動啓動虛擬機
virsh start think8848-kvmbase
再次使用VNC鏈接,發現已經能夠連進去了
1. 網橋配置,這裏值得一提的是,若是你在虛擬機中安裝CentOS過程當中,配置了合適的網格參數,那麼這時虛擬機裏應該就可使用網絡了。若是當時就採用系統安裝包的默認參數,未啓用網卡,那麼此時你須要啓動虛擬機的網卡,先看下虛擬機網卡的配置文件列表,貌似和普通電腦安裝沒啥區別,網卡的配置文件是 ifcfg-eth0
再查看 ifcfg-eth0配置文件,和普通電腦安裝的也沒啥區別,按照要求呢,貌似在一些文章中介紹,說須要添加一行配置 NM_CONTROLLED=no ,我沒添加也沒發現有什麼問題。
2. 配置在宿主端登陸虛擬機shell。固然在宿主端也是能夠經過SSH登陸,可是直接登陸貌似也是一個不錯的方式。這個配置主要有兩個步驟:
a. 編輯 /etc/default/grub 文件,對照以下:
編輯前:
編輯後:
文本內容:
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL="console serial" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1" GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb" GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200" GRUB_DISABLE_RECOVERY="true"
b. 運行下面一行的代碼
grub2-mkconfig -o /boot/grub2/grub.cfg
c. 重啓虛擬機 reboot
d. 在宿主機上進入虛擬機控制檯,想退出時使用 Ctrl 鍵+ ] (左方括號)鍵退出。
virsh console think8848-kvmbase
虛擬機建好後,最大的好處就是任由咱們折騰,而不用擔憂重裝系統的麻煩。因此必定要知道虛擬機怎麼複製遷移,這裏有兩種狀況,一種是本機上鏡像複製,另外一種是將本機鏡像遷移到其餘服務器上,本節參考自這裏,感謝koumm。
1. 本機複製
a. 先關閉虛擬機
virsh shutdown think8848-kvmbase
b. 在 /home 下新建文件夾 /home/kvm-img
mkdir -p /home/kvm-img
c. 使用 virt-clone 克隆think8848-kvmbase爲新的虛擬機
virt-clone -o think8848-kvmbase -n think8848-kvm01 -f /home/kvm-img/think8848-kvm01.img
克隆完成
使用 virsh list --all 查看
d. 開啓think8848-kvm01,而後修改IP地址、主機名
virsh start think8848-kvm01 virsh console think8848-kvm01 #等虛擬機啓動好後,用root登陸 hostname think8848-kvm01 #編輯/etc/hostname文件,修改主機名爲think8848-kvm01 vi /etc/hostname #編輯/etc/sysconfig/network-scripts/ifcfg-eth0,修改IPADDR
e. reboot 重啓虛擬機,重啓後剛纔修改的內容已經生效了。
2. 將虛擬機鏡像遷移到其餘服務器上
a. 先將虛擬機的配置文件和鏡像文件放到合適的位置(我搭了一臺FTP服務器,方便測試時全部的文件傳輸,以下圖所示)
b. 如今到服務器轉戰到think8848-srv01(IP:192.168.1.96),剛纔虛擬機是在think8848-srv02(IP:192.168.1.95)上建立的。如下全部操做均是在think8848-srv01上進行的
c. 將ftp上的think8848-kvm01.img放到/home/kvm-img目錄,將think8848-kvm01.xml放到/etc/libvirt/qemu目錄中
d. 編輯think8848-kvm02.xml,將裏面全部think8848-kvm01替換爲think8848-kvm02,而後把UUID換爲新的(直接使用這個在線工具生成吧)
e. 定義新虛擬機
virsh define /etc/libvirt/qemu/think8848-kvm02.xml
圖中think8848-kvm01是我以前在宿主機中配置的虛擬機,剛好名稱與以前的重複了。我在think8848-kvm01上沒有安裝ftp客戶端,在新遷移的虛擬機裏面安裝了ftp,能夠利用這個包驗證虛擬機是否正確
OK,說明沒有問題
f. 如今是時候再給新的虛擬機指定新主機名和IP了。剛纔是咱們重啓生效的,此次咱們不要重啓了,先使用 systemctl restart network 使新IP生效,而後再 exit 註銷用戶使主機名生效,就能夠了。
最後一個問題,若是在克隆或遷移後想使用VNC鏈接,那就須要從新指定VNC的端口號,將 /etc/libvirt/qemu/think8848-kvm02.xml 中的VNC端口號修改你須要的值便可。
網上有大批,我就不一一貼出來了,下面提供一個比較有用的連接(很是感謝原文做者)