Proxmox VE搭配Ceph儲存組建高可用虛擬化平臺
隨著項專案的增多,對測試環境的需求越來越大,今天研發要幾臺測試環境,明天測試也要幾臺測試環境,連產品都要測試環境了,咱們運維也得有自己的測試環境,之前搭建的exsi已經滿足不了需求了。
手頭資源有限,所以這裡先用三臺機器組叢集環境,用Proxmox VE再配合Ceph儲存組成一個高可用的虛擬化平臺,Proxmox VE的安裝過程這裡就不寫了,實在是太簡單了,將網上下載的proxmox-ve_5.2-1.iso製作成U盤啟動盤,U盤啟動,一路下一步就可以了,設定好root密碼、IP、hostname等資訊就好了,ostname要求寫成FQDN格式。
#hosts檔案配置
[email protected]:~# cat >> /etc/hosts << EOF
192.168.5.232 proxmox232.blufly.com proxmox232
192.168.5.231 proxmox231.blufly.com proxmox231
EOF
[email protected]:~# cat >> /etc/hosts << EOF
192.168.5.233 proxmox233.blufly.com proxmox233
192.168.5.231 proxmox231.blufly.com proxmox231
EOF
[email protected]:~# cat >> /etc/hosts << EOF
192.168.5.232 proxmox232.blufly.com proxmox232
192.168.5.233 proxmox233.blufly.com proxmox233
EOF
#debian系統更新
rm -f /etc/apt/sources.list.d/pve-enterprise.list echo "deb http://download.proxmox.com/debian/pve stretch pve-no-subscription" >/etc/apt/sources.list.d/pve-install-repo.list wget http://download.proxmox.com/debian/proxmox-ve-release-5.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-5.x.gpg apt update && apt dist-upgrade apt-get install net-tools
設定時鐘同步:
apt-get install ntpdate
ntpdate 120.25.108.11
echo "0 * * * * /usr/sbin/ntpdate 120.25.108.11 > /dev/null 2>&1" >> /etc/crontab
#配置免登陸訪問(這一步可以省略,在加入叢集的時候,會自動建立信任關係)
[email protected]:~# ssh-keygen -t rsa
[email protected]:~# ssh-copy-id [email protected]
[email protected]:~# ssh-copy-id [email protected]
[email protected]:~# ssh-copy-id [email protected]
[email protected]:~# ssh-keygen -t rsa
[email protected]:~# ssh-copy-id [email protected]
[email protected]:~# ssh-copy-id [email protected]
[email protected]:~# ssh-copy-id [email protected]
[email protected]:~# ssh-keygen -t rsa
[email protected]:~# ssh-copy-id [email protected]
[email protected]:~# ssh-copy-id [email protected]
[email protected]:~# ssh-copy-id [email protected]
#在192.168.5.231上面建立pve-cluster叢集
[email protected]:~# pvecm create pve-cluster
#接下來,通過ssh登陸其他2個pve節點,執行 pvecm add 192.168.5.231
[email protected]:~# pvecm add 192.168.5.231
successfully added node 'proxmox233' to cluster.
[email protected]:~# pvecm add 192.168.5.231
successfully added node 'proxmox232' to cluster.
#pvecm status 在任何一個節點上檢視叢集情況
[email protected]:~# pvecm status
Quorum information
------------------
Date: Fri Sep 28 15:39:20 2018
Quorum provider: corosync_votequorum
Nodes: 3
Node ID: 0x00000001
Ring ID: 1/12
Quorate: Yes
Votequorum information
----------------------
Expected votes: 3
Highest expected: 3
Total votes: 3
Quorum: 2
Flags: Quorate
Membership information
----------------------
Nodeid Votes Name
0x00000001 1 192.168.5.231 (local)
0x00000003 1 192.168.5.232
0x00000002 1 192.168.5.233
Proxmox支援兩種磁碟,一種是伺服器本地自帶磁碟,另一種是外部儲存裝置的磁碟。對於伺服器本地磁碟,可以配置成本地目錄、zfs、brd、lvm幾種形式。
對於外部儲存裝置的磁碟,可以通過nfs,iscsi或者fc協議掛載到Proxmox伺服器使用。其中nfs掛載上以後,可以直接作為檔案儲存使用,通過iscsi或者fc協議掛載後,Proxmox伺服器會識別為裸磁碟裝置,還需要進一步配置後才可以使用。例如可以配置成lvm,作為卷儲存使用,也可以配置成本地目錄,作為檔案儲存使用,但強烈建議不要配置為zfs使用,因為zfs的特點是要求能直接管理物理磁碟裝置,如果中間有raid卡等,會嚴重影響zfs的正常執行。
當然,使用者也可以配置外部的glusterfs、ceph、sheepdog等基於伺服器的分散式儲存。對於glusterfs,應該是可以直接通過選單掛載;對於ceph,需要通過iscsi協議掛載;對於sheepdog,需要手工安裝sheepdog外掛,然後在命令列配置掛載。glusterfs掛載後可以作為檔案儲存使用,ceph和sheepdog應該都只能作為卷儲存使用了。
前面多次提到了檔案儲存和卷儲存兩個概念,又有什麼區別呢?主要是Proxmox對於儲存使用是有多種需求的,例如對於虛擬磁碟,就有raw,qcow2,vmdk三種,另外還有iso映象檔案、gz容器模版檔案、虛擬機器備份檔案的儲存需求,這些都需要檔案儲存才可以實現。當然,使用者也可以直接用用lvm邏輯卷或zvol邏輯卷或rbd卷的方式儲存虛擬機器的磁碟,相當於raw格式的效果,這就可以使用卷儲存來實現。
那麼,說了那麼多,到底該怎麼配置和選擇呢?簡單總結下,一般的配置是這樣。
本地磁碟-本地目錄-檔案儲存
本地磁碟-lvm-卷儲存
本地磁碟-zfs-卷儲存/檔案儲存
本地磁碟-ceph-卷儲存
外部儲存-nfs-檔案儲存
外部儲存-iscci/fc-lvm-卷儲存
外部儲存-iscsi/fc-目錄-檔案儲存
外部glusterfs-glusterfs外掛掛載-檔案儲存
外部ceph-iscsi-卷儲存
外部sheepdog-外掛掛載-卷儲存
#在每個節點上安裝ceph,詳見https://pve.proxmox.com/pve-docs/chapter-pveceph.html
[email protected]:~# pveceph install --version luminous
[email protected]:~# pveceph install --version luminous
[email protected]:~# pveceph install --version luminous
#配置ceph叢集儲存網路
[email protected]:~# pveceph init --network 192.168.5.0/24
#建立ceph叢集儲存Mon監控
[email protected]:~# pveceph createmon
[email protected]:~# pveceph createmon
[email protected]:~# pveceph createmon
#建立mgr
[email protected]:~# pveceph createmgr
[email protected]:~# pveceph createmgr
[email protected]:~# pveceph createmgr
#建立Ceph OSDs
[email protected]:~# pveceph createosd /dev/sdb
[email protected]:~# pveceph createosd /dev/sdb
[email protected]:~# pveceph createosd /dev/sdb
#建立叢集儲存資源池ceph osd pool create [資源池名稱] 128 128
[email protected]:~# ceph osd pool create pvepool 128 128
pool 'pvepool' created
#複製儲存ID和金鑰到指定檔案位置
[email protected]:~# mkdir /etc/pve/priv/ceph
[email protected]:~# cp /etc/ceph/ceph.client.admin.keyring /etc/pve/priv/ceph.keyring
[email protected]:~# cp /etc/pve/priv/ceph.client.admin.keyring /etc/pve/priv/ceph/ceph1.keyring
[email protected]:~# ceph osd pool application enable pvepool rbd
enabled application 'rbd' on pool 'pvepool'
#檢視叢集狀態
[email protected]:~# ceph -s
cluster:
id: 2cd9afcd-fd20-4e52-966b-3252c6444e6c
health: HEALTH_OK
services:
mon: 3 daemons, quorum proxmox231,proxmox232,proxmox233
mgr: proxmox231(active), standbys: proxmox232, proxmox233
osd: 3 osds: 3 up, 3 in
#新增RBD叢集儲存
ID:填寫為ceph 必填,不能定義
資源池:pvepool 可選(預設為rbd)
Monitor:192.168.5.231 192.168.5.232 192.168.5.233 (注意新增多個Mon以空格隔開)
新增節點:proxmox231,proxmox232,proxmox233
#檢視rbd叢集儲存配置資訊
[email protected]:~# cat /etc/pve/storage.cfg
dir: local
path /var/lib/vz
content vztmpl,iso,backup
lvmthin: local-lvm
thinpool data
vgname pve
content images,rootdir
rbd: ceph
content images,rootdir
krbd 0
nodes proxmox233,proxmox231,proxmox232
pool pvepool
#上傳ISO映象,通過sftp上傳到以下目錄/var/lib/vz/template/iso,但這裡上傳的iso只能本機顯示,如果要讓叢集中其它的主機也能共享iso,那就要用到共享儲存,剛好內網上有一臺NFS伺服器,exsi儲存用的,上面也有ISO映象,正好可以共享,於是在資料中心上掛載這個NFS儲存
#新建虛擬機器,使用ceph儲存
#虛擬機器熱遷移測試
剛剛在proxmox231上建立了一個centos7的虛擬機器,儲存用到了ceph,所以先來進行熱遷移測試,將proxmox231上的虛擬遷移到proxmox233上面
2018-09-29 15:50:16 starting migration of VM 100 to node 'proxmox233' (192.168.5.233)
2018-09-29 15:50:16 found local disk 'local:iso/CentOS-7-x86_64-DVD-1804.iso' (in current VM config)
2018-09-29 15:50:16 can't migrate local disk 'local:iso/CentOS-7-x86_64-DVD-1804.iso': can't live migrate attached local disks without with-local-disks option
2018-09-29 15:50:16 ERROR: Failed to sync data - can't migrate VM - check log
2018-09-29 15:50:16 aborting phase 1 - cleanup resources
2018-09-29 15:50:16 ERROR: migration aborted (duration 00:00:01): Failed to sync data - can't migrate VM - check log
TASK ERROR: migration aborted
#在遷移的時候報錯,那是因為在安裝的時候掛載了本地的ISO,所以在遷移之前先修改下虛擬的配置,CD/DVD選擇不使用任何介質
#然後再來遷移
#此時之前在proxmox231上面執行的虛擬已經遷移到proxmox233上面來了
#將虛擬機器加入HA,進行高可用測試
#好了,已成功將proxmox233上面的k8s71.blufly.com虛擬機器新增到HA,現在將proxmox233關機模擬故障
#從截圖上可以看到proxmox233已經故障,k8s71.blufly.com這個虛擬機器已經遷移到proxmox231上了,實現了高可用
以上只是對proxmox做了簡單的測試,基本上能滿足日常需求,更多的高階功能後面再來慢慢摸索。