1. 程式人生 > >Proxmox VE搭配Ceph儲存組建高可用虛擬化平臺

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做了簡單的測試,基本上能滿足日常需求,更多的高階功能後面再來慢慢摸索。