一個人的生命中遲早會有這樣一個時刻——你必須開始考慮你的服務(wù)的彈性和高可用性染突。本文討論如何在具有共享存儲的3個節(jié)點(diǎn)上配置Proxmox HA集群兼雄,為VM的動態(tài)遷移提供可能梧税。我們考慮了很多關(guān)于選擇什么作為共享存儲的問題(選擇在ceph和gluster之間)部默,最后決定詳細(xì)討論ceph侵蒙。在這里和這里,您可以找到關(guān)于這兩個存儲的優(yōu)點(diǎn)和缺點(diǎn)傅蹂,所以您可以自由地選擇您的案例中需要的這個纷闺。
創(chuàng)建集群
我們的設(shè)置中使用的IP地址和DNS名稱列表
192.168.25.61 machine1
192.168.25.62 machine2
192.168.25.63 machine3
首先,我們需要設(shè)置3個proxmox節(jié)點(diǎn)份蝴。為此我們可以從官方網(wǎng)站使用proxmox iso 或者從新的debian上的存儲庫安裝它犁功。
從repo安裝我建議使用官方指南。
安裝完成后婚夫,您需要更新系統(tǒng)
sudo apt-get update
之后浸卦,我們將在每個節(jié)點(diǎn)上編輯/etc/hosts以獲得更多便利
127.0.0.1 localhost.localdomain localhost
192.168.25.61 machine1.local machine1 pvelocalhost
192.168.25.62 machine2.local machine2
192.168.25.63 machine3.local machine3
通過ping檢查每個節(jié)點(diǎn)是否看到對方。
為Proxmox添加repo
echo "deb [http://download.proxmox.com/debian/pve](http://download.proxmox.com/debian/pve?source=post_page---------------------------) stretch pve-no-subscription" > /etc/apt/sources.list
現(xiàn)在我們準(zhǔn)備創(chuàng)建一個集群案糙。在將充當(dāng)主節(jié)點(diǎn)的節(jié)點(diǎn)上限嫌,輸入命??令
pvecm create <clustername>
將剩余節(jié)點(diǎn)添加到群集
pvecm add "masternode ip or dns name"
檢查所有節(jié)點(diǎn)是否在群集中
pvecm status
如果一切順利靴庆,我們可以訪問web-gui并能夠從一個瀏覽器窗口管理所有節(jié)點(diǎn)。無論您登錄哪個節(jié)點(diǎn)萤皂,這都有效撒穷。(8006是Proxmox web-gui的默認(rèn)端口)
配置Ceph
讓我們配置Сeph存儲,為此我建議使用分離的網(wǎng)絡(luò)用于VM和專用網(wǎng)絡(luò)用于Ceph(如果你想使用SSD裆熙,10gb網(wǎng)卡會很好看端礼,特別是
對于節(jié)點(diǎn)之間的VM實(shí)時遷移,您可能需要創(chuàng)建vlan入录,以便VM可以看到彼此蛤奥,即使它們位于不同的節(jié)點(diǎn)上。
確保在防火墻中允許端口6789,6800-7100僚稿。Ceph監(jiān)視器默認(rèn)偵聽端口6789凡桥。守護(hù)進(jìn)程也綁定到6800-7100范圍內(nèi)的端口。
在所有節(jié)點(diǎn)上安裝Ceph:
pveceph install --version luminous
僅在masternode上初始化Ceph(將10.10.10.0/24更改為您的CIDR塊):
pveceph init --network 10.10.10.0/24
在節(jié)點(diǎn)上創(chuàng)建監(jiān)視器蚀同,為每個重復(fù)此操作:
pveceph createmon
現(xiàn)在創(chuàng)建Ceph監(jiān)視器之后缅刽,我們可以使用GUI來完成剩余的進(jìn)程。
通過web-ui創(chuàng)建OSD蠢络。在群集中的每個節(jié)點(diǎn)上執(zhí)行此操作衰猛。
順便說一句,就是這樣刹孔,你可以使用web-gui創(chuàng)建Ceph存儲池啡省,你會很好,buuuut ......
默認(rèn)情況下髓霞,在創(chuàng)建存儲池時卦睹,它會嘗試分配所有已發(fā)現(xiàn)的OSD。通常方库,Ceph集群通常由具有多個磁盤驅(qū)動器的多個節(jié)點(diǎn)組成结序。并且,這些磁盤驅(qū)動器可以是混合類型纵潦。我們將創(chuàng)建一個名為ssd-pool的池笼痹,由SSD磁盤支持,另一個池名為sata-pool酪穿,由SATA磁盤支持。
在這種情況下晴裹,osd.0被济,osd.1和osd.2是SSD磁盤。類似地涧团,osd.3只磷,osd.4经磅,osd.5,osd.6钮追,osd.7和osd.8是SATA磁盤预厌。
- 獲取當(dāng)前的CRUSH映射并對其進(jìn)行反編譯:
ceph osd getcrushmap -o crushmapdump
crushtool -d crushmapdump -o crushmapdump-decompiled
2.編輯crushmapdump-decompiled CRUSH映射文件??,并在根默認(rèn)部分后添加以下部分:
root ssd {
id -20
alg straw
hash 0
item osd.0 weight 0.010
item osd.1 weight 0.010
item osd.2 weight 0.010
}
root sata {
id -21
alg straw
hash 0
item osd.3 weight 0.010
item osd.4 weight 0.010
item osd.5 weight 0.010
item osd.6 weight 0.010
item osd.7 weight 0.010
item osd.8 weight 0.010
}
3.通過在CRUSH映射的rules部分下添加以下規(guī)則來創(chuàng)建CRUSH規(guī)則元媚,然后保存并退出該文件:
rule ssd-pool {
ruleset 1
type replicated
min_size 2
max_size 10
step take ssd
step chooseleaf firstn 0 type osd
step emit
}
rule sata-pool {
ruleset 2
type replicated
min_size 2
max_size 10
step take sata
step chooseleaf firstn 0 type osd
step emit
}
4.在Ceph集群中編譯并注入新的CRUSH映射:
crushtool -c crushmapdump-decompiled -o crushmapdump-compiled
ceph osd setcrushmap -i crushmapdump-compiled
5.檢查OSD樹視圖以了解新安排轧叽,并注意ssd和sata根桶:
ceph osd tree
6.創(chuàng)建并驗(yàn)證ssd-pool。
ceph osd pool create ssd-pool 128
128 - pg_num的數(shù)量刊棕,您可以使用此計算器來計算Ceph所需的放置組數(shù)量炭晒。
驗(yàn)證ssd-pool,注意crush_ruleset是0甥角,默認(rèn)情況下:
ceph osd dump | grep -i ssd
讓我們更改crush_ruleset网严,以便在SSD磁盤上創(chuàng)建新池:
ceph osd pool set ssd-pool crush_rule ssd-pool
驗(yàn)證池并注意crush_ruleset中的更改:
ceph osd dump | grep -i ssd
7.同樣,創(chuàng)建并驗(yàn)證sata-pool嗤无。
ceph osd pool create sata-pool 128
ceph osd dump | grep -i sata
ceph osd pool create sata-pool 128
ceph osd pool set sata-pool crush_rule sata-pool
ceph osd dump | grep -i sata
8.讓我們檢查它是否像預(yù)期的那樣工作震束。
由于這些池是新的,它們不應(yīng)包含任何對象当犯,但讓我們使用rados list命令驗(yàn)證這一點(diǎn):
rados -p ssd-pool ls
rados -p sata-pool ls
現(xiàn)在我們使用rados put命令向這些池添加一個對象垢村。語法應(yīng)該是:
rados -p <pool_name> put <object_name> <file_name>
rados -p ssd-pool put dummy_object1 /etc/hosts
rados -p sata-pool put dummy_object1 /etc/hosts
使用rados list命令列出這些池。你應(yīng)該得到我們在最后一步中存儲的對象名稱:
rados -p ssd-pool ls
rados -p sata-pool ls
9.驗(yàn)證對象是否存儲在正確的OSD集上灶壶。使用以下語法檢查osd映射中的ssd-pool:
ceph osd map <pool_name> <object_name>
ceph osd map ssd-pool dummy_object1
您應(yīng)該獲得具有OSD的id的輸出肝断,其中實(shí)際存儲“dummy_object1”。如前面的屏幕截圖所示驰凛,在ssd-pool上創(chuàng)建的對象實(shí)際上存儲在OSD集[0,2,1]中胸懈。此輸出是預(yù)期的,它驗(yàn)證我們創(chuàng)建的池使用我們請求的正確OSD集恰响。
要指出結(jié)論趣钱,可以說目前是一個完整的解決方案,可以毫不費(fèi)力地大大提高虛擬化平臺的容錯能力胚宦。另一方面首有,Ceph提供卓越的可靠性和可擴(kuò)展性,使我們能夠通過熱添加OSD來增加存儲容量枢劝。
如果您發(fā)現(xiàn)這些擴(kuò)展中的任何一個很有用并且您喜歡這篇文章井联,請隨意點(diǎn)擊并按住拍手按鈕!:)
轉(zhuǎn):https://medium.com/@qwonkiwow/setting-up-a-proxmox-ve-cluster-with-ceph-shared-storage-e7a4f652f321