Proxmox-VE搭配Ceph存儲組建高可用虛擬化平臺

     隨着項項目的增多,對測試環境的需求越來越大,今天研發要幾臺測試環境,明天測試也要幾臺測試環境,連產品都要測試環境了,咱們運維也得有自己的測試環境,之前搭建的exsi已經滿足不了需求了。

  exsi.JPG   

     剛好內網有幾臺閒置的機器,於是就着手準備再搭建一套虛擬化平臺,EXSI雖說好用,但畢竟是要錢的(之前用的破解版的),本着尊重版權的原則,咱們還是用開源的吧,網上找了一圈,發現目前比較活躍的KVM虛擬化平臺有OpenStack、Proxmox VE、oVirt,內部測試用用,OpenStack有點大材小用了,Proxmox VE基本debian定製的,不太喜歡這種模式,而且對debian不是太熟悉,個人還是比較傾向於oVirt,因爲oVirt的目標就是瞄準vCenter,而且oVirt和RHEV的關係,有點像Fedora和RHEL,直接CentOS7+Ovirt+GlusterFS比較好的解決方案,怎奈,淘汰下的機器實在是太老了,Ovirt表示硬件不支持,沒辦法,只能試試Proxmox VE了。


     手頭資源有限,所以這裏先用三臺機器組集羣環境,用Proxmox VE再配合Ceph存儲組成一個高可用的虛擬化平臺,Proxmox VE的安裝過程這裏就不寫了,實在是太簡單了,將網上下載的proxmox-ve_5.2-1.iso製作成U盤啓動盤,U盤啓動,一路下一步就可以了,設置好root密碼、IP、hostname等信息就好了,ostname要求寫成FQDN格式。


#hosts文件配置

root@proxmox233:~# cat >> /etc/hosts << EOF
192.168.5.232 proxmox232.blufly.com proxmox232
192.168.5.231 proxmox231.blufly.com proxmox231
EOF

root@proxmox232:~# cat >> /etc/hosts << EOF
192.168.5.233 proxmox233.blufly.com proxmox233
192.168.5.231 proxmox231.blufly.com proxmox231
EOF

root@proxmox231:~# 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

#配置免登陸訪問(這一步可以省略,在加入集羣的時候,會自動建立信任關係)

root@proxmox231:~# ssh-keygen -t rsa
root@proxmox231:~# ssh-copy-id root@proxmox231
root@proxmox231:~# ssh-copy-id root@proxmox232
root@proxmox231:~# ssh-copy-id root@proxmox233

root@proxmox232:~# ssh-keygen -t rsa
root@proxmox232:~# ssh-copy-id root@proxmox231
root@proxmox232:~# ssh-copy-id root@proxmox232
root@proxmox233:~# ssh-copy-id root@proxmox233

root@proxmox233:~# ssh-keygen -t rsa
root@proxmox233:~# ssh-copy-id root@proxmox231
root@proxmox233:~# ssh-copy-id root@proxmox232
root@proxmox233:~# ssh-copy-id root@proxmox233

#在192.168.5.231上面創建pve-cluster集羣

root@proxmox231:~# pvecm create pve-cluster

#接下來,通過ssh登陸其他2個pve節點,執行 pvecm add 192.168.5.231

root@proxmox233:~# pvecm add 192.168.5.231
successfully added node 'proxmox233' to cluster.

root@proxmox232:~# pvecm add 192.168.5.231
successfully added node 'proxmox232' to cluster.

#pvecm status 在任何一個節點上查看集羣情況

root@proxmox231:~# 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

   102.JPG  

     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

root@proxmox231:~# pveceph install --version luminous
root@proxmox232:~# pveceph install --version luminous
root@proxmox233:~# pveceph install --version luminous

#配置ceph集羣存儲網絡

root@proxmox231:~# pveceph init --network 192.168.5.0/24

#創建ceph集羣存儲Mon監控

root@proxmox231:~# pveceph createmon
root@proxmox232:~# pveceph createmon
root@proxmox233:~# pveceph createmon

#創建mgr

root@proxmox231:~# pveceph createmgr
root@proxmox232:~# pveceph createmgr
root@proxmox233:~# pveceph createmgr

#創建Ceph OSDs

root@proxmox231:~# pveceph createosd /dev/sdb
root@proxmox232:~# pveceph createosd /dev/sdb
root@proxmox233:~# pveceph createosd /dev/sdb

#創建集羣存儲資源池ceph osd pool create [資源池名稱] 128 128

root@proxmox231:~# ceph osd pool create pvepool 128 128
pool 'pvepool' created

#複製存儲ID和密鑰到指定文件位置

root@proxmox231:~# mkdir /etc/pve/priv/ceph
root@proxmox231:~# cp /etc/ceph/ceph.client.admin.keyring /etc/pve/priv/ceph.keyring
root@proxmox231:~# cp /etc/pve/priv/ceph.client.admin.keyring /etc/pve/priv/ceph/ceph1.keyring
root@proxmox231:~# ceph osd pool application enable pvepool rbd
enabled application 'rbd' on pool 'pvepool'

#查看集羣狀態

root@proxmox231:~# 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集羣存儲

104.JPG

103.JPG

ID:填寫爲ceph 必填,不能定義

資源池:pvepool 可選(默認爲rbd)

Monitor:192.168.5.231 192.168.5.232 192.168.5.233 (注意添加多個Mon以空格隔開)

添加節點:proxmox231,proxmox232,proxmox233


#查看rbd集羣存儲配置信息

root@proxmox231:~# 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存儲

106.JPG


105.JPG


107.JPG

#新建虛擬機,使用ceph存儲

108.JPG


1081.JPG

#虛擬機熱遷移測試

剛剛在proxmox231上創建了一個centos7的虛擬機,存儲用到了ceph,所以先來進行熱遷移測試,將proxmox231上的虛擬遷移到proxmox233上面

109.JPG


110.JPG

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選擇不使用任何介質

111.JPG


#然後再來遷移

112.JPG

#此時之前在proxmox231上面運行的虛擬已經遷移到proxmox233上面來了

113.JPG


#將虛擬機加入HA,進行高可用測試

114.JPG


115.JPG


#好了,已成功將proxmox233上面的k8s71.blufly.com虛擬機添加到HA,現在將proxmox233關機模擬故障

116.JPG


#從截圖上可以看到proxmox233已經故障,k8s71.blufly.com這個虛擬機已經遷移到proxmox231上了,實現了高可用

117.JPG

以上只是對proxmox做了簡單的測試,基本上能滿足日常需求,更多的高級功能後面再來慢慢摸索。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章