用過vmware和virtualbox的人大概都知道虛擬機是怎麼回事兒,這種虛擬化軟件一般裝在windows環境下,並且是單機環境。那麼隨着雲計算與大數據的發展,虛擬化技術也是獲得了極大的發展,好比分佈式的虛擬化軟件OpenStack和Proxmox VE等。node
對於這4種經常使用的虛擬化軟件個人使用感覺就是在windows上virtualbox比vmware好用,服務器上Proxmox比OpenStack好用。windows上的不說了,本文重點說一下服務器上的虛擬軟件使用感覺,以前用過windows server服務器上裝的virtualbox,而後再開各類各樣的虛擬機,整體感覺就是很慢,在相同的環境下跑相同的程序結果很慢得多。可能與這種virtualbox是半裸的虛擬化技術有關(寄居虛擬化),vmware也是這種技術。python
說到虛擬化技術,下面的圖更加解釋得直觀:linux
而在服務器上Proxmox和OpenStack則表現更加穩定。OpenStack配置要求高,安裝配置過程複雜,可是能夠用Fuel進行一鍵安裝,整體來講沒有Proxmox易用。而Proxmox只須要30分鐘就能安裝系統,還有不少操做系統的模版可使用。Proxmox比較穩定,咱們實驗室和我以前實習的公司都是用的Proxmox集羣來做爲生成環境,基本上沒有出什麼大問題。web
接下來講說應用:Proxmox主要是建立KVM虛擬機和lxc容器,KVM虛擬機須要iso鏡像(幾個G),lxc容器須要tar.gz模版(100M左右)。ubuntu
首先安裝系統,去官網下載Proxmox iso鏡像,最新版是5.3.我前段時間裝的是5.2,但基本上沒有差異,咱們實驗室的集羣是4.2,也沒有很大的區別。Proxmox 是基於debian的系統(ubuntu也是基於debian的系統),我以爲他是裸機虛擬機技術(可能理解不許確,它集成了多種虛擬化技術),但這不重要,重要的是Proxmox 的安裝就和普通linux系統如出一轍,並且比裝一個centos或者ubuntu更簡單,更快!!!windows
安裝教程不少,服務器上裝須要作個U盤系統,也能夠在vmware和virtualbox上裝,以下圖,按照提示一步一步走便可,ip配置那一步先用默認的配置!!!centos
本文要重點說的是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修改,主機名修改後重啓生效。
192.168.1.125 pve1 192.168.1.126 pve2
網上說搭建集羣要在交換機上開多播,其實不開也能夠。
經過命令修改 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 }
這是集羣賴以成功的關鍵因素!!!
這個目錄是隻讀的,只有當pve-cluster啓動後纔會有內容,pve-cluster關掉服務後, 這個目錄會被清空!!!他是屬於www-data 用戶組,就是web UI的文件目錄,所以不能修改!關掉pve-cluster服務後,web UI也就關掉了,/etc/pve也就清空了。
咱們配置是隻關注/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點點鼠標來建立集羣。
而後在彈出框輸入集羣名字如abc,彈框輸出TASK OK表示成功:
能夠看到建立集羣的步驟爲:
這些信息來自於: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