用過vmware和virtualbox的人大概都知道虛擬機是怎麼回事兒,這種虛擬化軟件通常裝在windows環境下,而且是單機環境。那麼隨着雲計算與大數據的發展,虛擬化技術也是得到了極大的發展,比如分佈式的虛擬化軟件OpenStack和Proxmox VE等。
對於這4種常用的虛擬化軟件我的使用感受就是在windows上virtualbox比vmware好用,服務器上Proxmox比OpenStack好用。windows上的不說了,本文重點說一下服務器上的虛擬軟件使用感受,之前用過windows server服務器上裝的virtualbox,然後再開各種各樣的虛擬機,總體感受就是很慢,在相同的環境下跑相同的程序結果很慢得多。可能與這種virtualbox是半裸的虛擬化技術有關(寄居虛擬化),vmware也是這種技術。
說到虛擬化技術,下面的圖更加解釋得直觀:
而在服務器上Proxmox和OpenStack則表現更加穩定。OpenStack配置要求高,安裝配置過程複雜,但是可以用Fuel進行一鍵安裝,總體來說沒有Proxmox易用。而Proxmox只需要30分鐘就能安裝系統,還有很多操作系統的模版可以使用。Proxmox比較穩定,我們實驗室和我之前實習的公司都是用的Proxmox集羣來作爲生成環境,基本上沒有出什麼大問題。
接下來說說應用:Proxmox主要是創建KVM虛擬機和lxc容器,KVM虛擬機需要iso鏡像(幾個G),lxc容器需要tar.gz模版(100M左右)。
首先安裝系統,去官網下載Proxmox iso鏡像,最新版是5.3.我前段時間裝的是5.2,但基本上沒有差別,我們實驗室的集羣是4.2,也沒有很大的區別。Proxmox 是基於debian的系統(ubuntu也是基於debian的系統),我覺得他是裸機虛擬機技術(可能理解不準確,它集成了多種虛擬化技術),但這不重要,重要的是Proxmox 的安裝就和普通linux系統一模一樣,而且比裝一個centos或者ubuntu更簡單,更快!!!
安裝教程很多,服務器上裝需要做個U盤系統,也可以在vmware和virtualbox上裝,如下圖,按照提示一步一步走即可,ip配置那一步先用默認的配置!!!
本文要重點說的是proxmox的集羣模式和網絡模式!!!
安裝好之後proxmox 登陸命令行界面有一個連接:
https://192.168.1.100:8006,注意是https,不是http。
這是網頁端的管理界面,通過網頁上點點鼠標可以省去很多複雜的操作命令。
下面將proxmox ve簡稱爲pve,對與pve集羣,他不是傳統的主控集羣(一個主節點幾個從節點)因爲主控集羣容易產生單點故障如hadoop集羣、spark集羣等。pve集羣的每個節點完全是對等的,沒有主從之分,也就是掛了某個節點,其餘節點不受影響,只是掛了那個節點上的虛擬機有影響。而虛擬機只是pve某個節點上的一個進程而已,但是虛擬機的存儲可以共享,也就是說每個pve節點的硬盤可以共享給其他節點。
集羣搭建過程:
首先分別把每臺服務器的pve系統裝好,然後通過web UI可以看到是這種的:
單機: ,集羣:
pve1是系統的主機名,可以通過 vi /etc/hostname修改,主機名修改後重啓生效。
一、網絡配置
1.規劃網絡:
192.168.1.125 pve1
192.168.1.126 pve2
網上說搭建集羣要在交換機上開多播,其實不開也可以。
2.在每個機器上修改ip地址:
通過命令修改 vi /etc/network/interfaces,如果通過網頁端修改ip也可以,但修改是保存在臨時文件/etc/network/interfaces.new裏,都是重啓生效。
這裏要重點說一下有很多中網絡方案,常見的有2種網絡模式:
a.只有一個網卡
這種方式下虛擬機使用10.10.10.x網段,宿主機集羣的通信和虛擬機的通信都走一個網卡,虛擬機通過nat轉發。
b.有兩個網卡:
這種模式下就宿主機集羣走網卡1,而虛擬機之間的通信走網卡2。這種模式下多個服務的網卡2之間要走單獨的網線,也就是雙網卡雙網線,這樣每個節點上的虛擬機都能互通。
3.在宿主機上爲虛擬機開啓轉發規則:(這一步先跳過,創建虛擬機時再做)
重點說明:
1 開啓IP轉發
echo 1 > /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward
恢復規則:iptables-restore > /etc/iptables.up.rules
開機自動恢復規則,把恢復命令添加到啓動腳本:
echo '/sbin/iptables-restore /etc/iptables.up.rules' >>/etc/rc.d/rc.local
宿主機重啓後規則會失效,最好設置開機自動恢復規則!
4.然後按照這種配置規則把每個服務器的ip都改好:
/etc/init.d/networking restart
reboot
二、創建集羣
通過命令:
systemctl start corosync
因爲沒有開多播會corosync會啓動失敗,需要手動生成authkey:corosync-keygen
systemctl start pvedaemon
systemctl start pve-cluster
然後:
1.在主服務器pve1上創建集羣:名字爲abc
pvecm create abc
2.分別在其餘服務器上加入到該集羣abc:
pvecm add 192.168.1.125
3.查看狀態:
pvecm status 或 pvecm nodes
(重點)如果報錯,意外說明:
單機版默認會集羣pvedaemon和pve-cluster,而不會啓動corosync。
創建集羣最核心的就是集羣同步服務corosync,corosync成功後會生成配置文件corosync.conf,,如果啓動失敗後需要手動修改配置文件:
logging {
debug: off
to_syslog: yes
}
nodelist {
node {
name: pve1
nodeid: 1
quorum_votes: 1
ring0_addr: 192.168.1.125
}
node {
name: pve2
nodeid: 2
quorum_votes: 1
ring0_addr: 192.168.1.126
}
}
quorum {
provider: corosync_votequorum
}
totem {
cluster_name: abc
config_version: 2
interface {
bindnetaddr: 192.168.1.125
ringnumber: 0
}
ip_version: ipv4
secauth: on
version: 2
}
這是集羣賴以成功的關鍵因素!!!
三、文件目錄說明:
/etc/pve 是文件系統掛載
這個目錄是隻讀的,只有當pve-cluster啓動後纔會有內容,pve-cluster關掉服務後, 這個目錄會被清空!!!他是屬於www-data 用戶組,就是web UI的文件目錄,因此不能修改!關掉pve-cluster服務後,web UI也就關掉了,/etc/pve也就清空了。
/etc/corosync 是集羣通信服務(corosync)所在的本地目錄
注意!
我們配置是隻關注/etc/corosync/和/etc/pve/目錄,但它會自動關聯一些目錄:
通過以下查看相關的目錄:
find / -name"pve"
find / -name"corosync"
如果配置出錯了,需要將相關的配置全部刪除乾淨,再重新配置:
官方文檔說需要重裝系統,其實不用,刪除這些配置即可,親測成功!
rm -rf /var/lib/pve-cluster/*
rm -rf /var/lib/corosync/*
rm -rf /var/lib/rrdcached/db/*
rm -rf /etc/pve/*
rm -rf /etc/corosync/*
由於/etc/corosync/和/etc/pve/是隻讀的,因此修改corosync.conf的時候需要先把只讀權限去掉,修改後再恢復:
四、啓動過程:
單機版:開機默認先啓pvedaemon服務,再啓pve-cluster服務。
集羣版:開機默認先啓pvedaemon服務,再啓pve-cluster服務,最後啓動corosync服務。
前提是保證/etc/pve/爲空,如果不爲空則第二步的pve-cluster服務就會啓動失敗。
啓動corosync的過程:就是將本地目錄的/etc/corosync/corosync.conf複製到集羣目錄/etc/pve/下面。
這三個步驟對應着三個重要命令:
systemctl start pvedaemon
systemctl start pve-cluster
systemctl start corosync
報錯authkey不存在,需要手動生成authkey,命令爲: corosync-keygen
單機版的服務說明
systemctl start pvedaemon 默認開機啓動pvedaemon. service服務
systemctl startpve-cluster 默認開機啓動pve-cluster. service服務
pve-cluster啓動後會在/etc/pve下面生成文件,/etc/pv/下的所有文件和目錄都屬於 root 用戶和www-data 用戶組。systemctl stop pve-cluster關掉服務後, /etc/pve目錄會清空!!!
如果要搭建集羣還需要另外啓動corosync服務:
systemctl start corosync
corosync-keygen
默認不會啓動,創建一個集羣時纔會啓動它!
相關命令
systemctl stoppvedaemon
systemctl stoppve-cluster
systemctl stopcorosync
systemctl statuspvedaemon
systemctl statuspve-cluster
systemctl statuscorosync
systemctl status
systemctl statuscorosync.service
pvecm status 查看集羣節點狀態詳細
pvecm nodes 查看集羣節點狀態簡單
五、通過web UI點點鼠標來創建集羣:
如果覺得上述通過命令創建集羣比較繁瑣,可以用過通過web UI點點鼠標來創建集羣。
然後在彈出框輸入集羣名字如abc,彈框輸出TASK OK表示成功:
可以看到創建集羣的步驟爲:
2.再其他節點上輸入命令加入創建好的集羣中去:
這些信息來自於:pve1的網頁上的Join Information:
這一步也可以直接輸入命令:
pvecm add pve1
pvecm add pve1 –force 強制添加
即在pve2節點上輸入命令pvecm add pve1,pve1是集羣abc中已經存在的節點名。
添加節點成功輸出TASK OK表示成功!
然後刷新網頁即可看到:這是登陸pve1和pve2都是一樣的頁面了!!!
這時通過任意一個節點的ip登陸看到的效果都是一樣的!!!
https://192.168.1.125:8006
https://192.168.1.126:8006
由於篇幅原因本文只介紹集羣創建過程,後面再接着將如果配置存儲和創建虛擬機模版等等內容。最後可以打開[支付寶]首頁輸入 578968162 ,可以領取紅包哦,一般還是能領個兩三塊的,may be more than that!!!
感謝您的支持,快去領花唄紅包吧:578968162