溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

pve+ceph一些坑 (五)

發(fā)布時間:2020-09-16 05:19:51 來源:網(wǎng)絡(luò) 閱讀:1508 作者:18027134657 欄目:系統(tǒng)運維

三臺服務(wù)器的時鐘很重要所以要配置時鐘一致

ceph health detail

HEALTH_WARN application not enabled on 1 pool(s)
POOL_APP_NOT_ENABLED application not enabled on 1 pool(s)
application not enabled on pool 'kube'
use 'ceph osd pool application enable <pool-name> <app-name>', where <app-name> is 'cephfs', 'rbd', 'rgw', or freeform for custom applications.

ceph osd pool application enable kube rbd

enabled application 'rbd' on pool 'kube'

ceph health

HEALTH_OK

所有節(jié)點必須在同一子網(wǎng),以便各個節(jié)點使用 corosync 多播通信(詳情可查看Corosync Cluster Engine)。Corosync 使用 UDP 5404 和 5405 端口進(jìn)行集群通信

注意:有些交換機(jī)默認(rèn)設(shè)置關(guān)閉了 IP 多播,需要先手工啟用多播通信

添加位于不同網(wǎng)段的節(jié)點
如果要添加一個節(jié)點,而該集群網(wǎng)絡(luò)和該節(jié)點在不同網(wǎng)段,你需要使用 ringX_addr 參數(shù)來指定節(jié)點在集群網(wǎng)絡(luò)內(nèi)使用的地址。

pvecm add IP-ADDRESS-CLUSTER -ring0_addr IP-ADDRESS-RING0

如果你要使用冗余環(huán)協(xié)議,你還需要設(shè)置 ring1_addr 參數(shù)以傳遞第二個集群網(wǎng)絡(luò)地址。

刪除節(jié)點
警告:刪除節(jié)點前請仔細(xì)閱讀刪除操作步驟,不然很可能會發(fā)生你預(yù)料不到的情況。

首先將待刪除節(jié)點上所有虛擬機(jī)都遷移到其他節(jié)點。確保待刪除節(jié)點上沒有任何你需要保留的數(shù)據(jù)和備份,或者相關(guān)數(shù)據(jù)已經(jīng)被妥善備份。

通過 ssh 登錄待刪除節(jié)點。執(zhí)行 pvecm nodes 命令再次確認(rèn)節(jié)點 ID。

重要:這個時候,你必須將待刪除節(jié)點關(guān)閉并斷電,確保該節(jié)點不再啟動(在當(dāng)前集群網(wǎng)絡(luò)內(nèi))。

root@pve-1:~# pvecm nodes

Membership information

Nodeid      Votes Name
     1          1 192.168.77.160 (local)
     2          1 192.168.77.170
     3          1 192.168.77.180

root@pve-1:~#
1
2
3
4
5
6
7
8
9
root@pve-1:~# pvecm nodes

Membership information

Nodeid      Votes Name
     1          1 192.168.77.160 (local)
     2          1 192.168.77.170
     3          1 192.168.77.180

root@pve-1:~#
通過 ssh 登錄集群中其他任何一個節(jié)點,執(zhí)行節(jié)點刪除命令(這里將刪除節(jié)點 hp4):

hp1# pvecm delnode hp4

如果命令執(zhí)行成功,將直接返回,而且不會有任何輸出。可以運行 pvecm nodes 或者pvecm status 檢查刪除節(jié)點后的集群狀態(tài)。

重要:如前所述,必須在執(zhí)行刪除命令前先關(guān)閉待刪除節(jié)點,并且確保被刪除點不再啟動(在原集群網(wǎng)絡(luò)中)。這是非常非常重要的!

如果你在原集群網(wǎng)絡(luò)中重新啟動被刪除的節(jié)點,你的集群會因此而崩潰,并且很難恢復(fù)到一個干凈的狀態(tài)。

如果出于某種原因,你需要將被刪除節(jié)點重新加入原集群,需要按如下步驟操作:

格式化被刪除節(jié)點,并重新安裝 Proxmox VE。

如前一節(jié)所述步驟,將該節(jié)點重新加入集群。

隔離節(jié)點
重要:我們不推薦使用隔離節(jié)點操作,按此方法操作時請務(wù)必小心。如果你對操作結(jié)果存有疑慮,建議使用刪除節(jié)點的方法。

你可以將一個節(jié)點從集群中隔離出去,而無需格式化并重裝該節(jié)點。但將節(jié)點從集群中隔離出去后,被隔離的節(jié)點仍然能夠訪問原 Proxmox VE 集群配置給它的共享存儲。

你必須在將節(jié)點隔離出去之前解決這個問題。由于不能確保避免發(fā)生虛擬機(jī) ID 沖突,

所以 Proxmox VE 集群之間不能共享同一個存儲設(shè)備。建議為待隔離節(jié)點專門創(chuàng)建一個獨享的新存儲服務(wù)。例如,可以為待隔離節(jié)點分配一個新的 NFS 服務(wù)或者 Ceph 存儲池。必須確保該存儲服務(wù)是獨享的。在分配存儲之后,可以將該節(jié)點的虛擬機(jī)遷移到新存儲服務(wù),接下來就可以開始進(jìn)行隔離節(jié)點的操作。

警告:必須確保所有的資源都被已經(jīng)徹底被隔離。否則將可能發(fā)生沖突或其他問題。

首先在待隔離節(jié)點上停止 pve-cluster 服務(wù):

systemctl stop pve-cluster

systemctl stop corosync

然后將待隔離節(jié)點的集群文件系統(tǒng)設(shè)置為本地模式:

pmxcfs –l

接下來刪除 corosync 配置文件:

rm /etc/pve/corosync.conf

rm /etc/corosync/*

最后重新啟動集群文件系統(tǒng)服務(wù):

killall pmxcfs

systemctl start pve-cluster

到此,該節(jié)點已經(jīng)從集群中被隔離出去了。你可以在原集群中任意節(jié)點上執(zhí)行刪除命令:

pvecm delnode oldnode

如果因前面的隔離操作,原集群中剩余節(jié)點已經(jīng)不滿足多數(shù)票,節(jié)點刪除命令就會失敗。你可以將期望的多數(shù)票數(shù)量設(shè)置為 1,如下:

pvecm expected 1

然后重復(fù)節(jié)點刪除命令即可。

接下來你可以重新登錄被隔離出去的節(jié)點,刪除原集群遺留下的各個配置文件。刪除
完成后,該節(jié)點即可重新加入任意其他集群。

rm /var/lib/corosync/*

被隔離節(jié)點的集群文件系統(tǒng)中仍然殘留有和原集群其他節(jié)點有關(guān)的配置文件,這些也是需要刪除的。你可以遞歸刪除/etc/pve/nodes/NODENAME 目錄清除這些文件。但在執(zhí)行刪除操作前請再三檢查,確保刪除操作無誤。

警告:原集群中其他節(jié)點的 SSH 公鑰仍會保留在 authorized_key 文件中。這意味著被隔離節(jié)點和原集群節(jié)點之間仍然可以用 SSH 公鑰互相訪問。為避免出現(xiàn)意外情況,可以刪除/etc/pve/priv/authorized_keys 文件中的對應(yīng)公鑰。

多數(shù)票
Proxmox VE 采用了基于多數(shù)票(quorum)的機(jī)制確保集群節(jié)點狀態(tài)一致。多數(shù)票是指在一個分布式系統(tǒng)內(nèi)一個分布式交易獲準(zhǔn)執(zhí)行所必須得到的最低票數(shù)?!猈ikipedia 多數(shù)票(分布式計算)

在網(wǎng)絡(luò)可能分裂為多個區(qū)域的情況下,修改集群狀態(tài)需要得到大多數(shù)節(jié)點在線。如果集群內(nèi)節(jié)點數(shù)量不足以構(gòu)成多數(shù)票,集群將自動轉(zhuǎn)為只讀狀態(tài)。

注意:默認(rèn)情況下,Proxmox VE 集群內(nèi)每個節(jié)點都有一票的投票權(quán)。

集群網(wǎng)絡(luò)
集群網(wǎng)絡(luò)是 Proxmox VE 集群的核心。集群網(wǎng)絡(luò)必須確??煽康貙⒓和ㄐ艛?shù)據(jù)包按順序送達(dá)所有節(jié)點。Proxmox VE 使用 corosync 來實現(xiàn)集群網(wǎng)絡(luò)通信,確保集群網(wǎng)絡(luò)通信的高性能,低延時,高可用。我們的分布式集群文件系統(tǒng)(pmxcfs)就基于此構(gòu)建。

集群網(wǎng)絡(luò)配置要求
Proxmox VE 集群網(wǎng)絡(luò)只有在網(wǎng)絡(luò)延時低于 2ms 時(局域網(wǎng)內(nèi))才可以正常工作。盡管 corosync 支持節(jié)點間使用單播方式通信,但我們強(qiáng)烈建議使用多播方式進(jìn)行集群通信。集群網(wǎng)絡(luò)內(nèi)不應(yīng)有其他大流量通信。理想情況下,corosync 最好能擁有專用網(wǎng)絡(luò)。

注意,一定不要在同一個網(wǎng)絡(luò)同時運行 Proxmox VE 集群和存儲服務(wù)。

最佳實踐是在創(chuàng)建集群前先檢測網(wǎng)絡(luò)質(zhì)量,確保網(wǎng)絡(luò)能滿足集群通信要求。

確認(rèn)所有的節(jié)點都在同一網(wǎng)段。并且要確保網(wǎng)絡(luò)中只連接了用于集群通信(corosync)的網(wǎng)卡。

確保節(jié)點彼此之間的網(wǎng)絡(luò)都連接正常??梢允褂?ping 命令測試。

確保多播網(wǎng)絡(luò)通信工作正常并能達(dá)到很高的數(shù)據(jù)包傳輸速度??梢允褂?omping 命令測試。正常情況下,丟包率應(yīng)小于 1%。

omping -c 10000 -i 0.001 -F -q NODE1-IP NODE2-IP …

確保多播通信能在要求的時間段內(nèi)可靠工作。這主要是為了避免物理交換機(jī)啟用IGMP 但未配置多播查詢器(multicast querier)。該項測試至少需要持續(xù) 10 分鐘。

omping -c 600 -i 1 -q NODE1-IP NODE2-IP …

如以上測試有任何一項未能通過,則你的網(wǎng)絡(luò)不適合用于組建 Proxmox VE 集群。此時你需要檢查網(wǎng)絡(luò)配置。一般情況下,或者是交換機(jī)未啟用多播通信,或者是交換機(jī)配置了 IGMP 但未啟用 multicast querier。

如果你的集群節(jié)點數(shù)量很少,在實在無法使用多播通信的情況下也可以考慮使用單播方式。

獨立集群網(wǎng)絡(luò)
默認(rèn)情況下,不帶任何參數(shù)創(chuàng)建集群時,Proxmox VE 集群會和 Web GUI 以及虛擬機(jī)共享使用同一個網(wǎng)絡(luò)。如果你配置不當(dāng),存儲網(wǎng)絡(luò)通信流量也有可能會通過集群網(wǎng)絡(luò)傳輸。我們建議避免和其他應(yīng)用共享使用集群網(wǎng)絡(luò),因為 corosync 是一個對時延非常敏感的實時應(yīng)用。

準(zhǔn)備一個新的網(wǎng)絡(luò)

首先,你需要準(zhǔn)備一個新的網(wǎng)絡(luò)端口,該端口應(yīng)連接在一個獨立物理網(wǎng)絡(luò)上。其次需要確保這個網(wǎng)絡(luò)滿足以上5.71集群網(wǎng)絡(luò)配置要求。

創(chuàng)建集群時配置獨立網(wǎng)絡(luò)

可以用帶 ring0_addr 和 bindnet0_addr 參數(shù)的 pvecm 命令創(chuàng)建擁有獨立網(wǎng)絡(luò)的Proxmox VE 集群。

如果你想配置獨立網(wǎng)卡用于集群通訊,而該網(wǎng)卡又配置了靜態(tài) IP 地址 10.10.10.1/25,

那么可以使用如下命令:

pvecm create test –ring0_addr 10.10.10.1 –bindnet0_addr 10.10.10.0

然后可以使用如下命令檢查集群通信是否正常:

systemctl status corosync

創(chuàng)建集群后配置獨立網(wǎng)絡(luò)

即使在你創(chuàng)建集群后,你也可以配置集群改用其他獨立網(wǎng)絡(luò)進(jìn)行通信,而無須重建整個集群。修改集群通信網(wǎng)絡(luò),各節(jié)點的 corosync 服務(wù)需要逐個重啟,以便使用新網(wǎng)絡(luò)通信,這可能會導(dǎo)致集群短時間處于喪失多數(shù)票的狀態(tài)。

首先確認(rèn)你了解編輯 corosync.conf 文件的方法。然后打開 corosync.conf 文件。配置文件 corosync.conf 的內(nèi)容示例如下:

logging {
debug: off
to_syslog: yes
}
nodelist {
node {
name: due
nodeid: 2
quorum_votes: 1
ring0_addr: due
}
node {
name: tre
nodeid: 3
quorum_votes: 1
ring0_addr: tre
}
node {
name: uno
nodeid: 1
quorum_votes: 1
ring0_addr: uno
}
}
quorum {
provider: corosync_votequorum
}
totem {
cluster_name: thomas-testcluster
config_version: 3
ip_version: ipv4
secauth: on
version: 2
interface {
bindnetaddr: 192.168.30.50
ringnumber: 0
}
}

首先,如果 node 對象中缺少 name 屬性,你需要手工增添該屬性。注意 name 屬性值必須和節(jié)點主機(jī)名一致。

然后,你需要將 ring0_addr 屬性的值修改為節(jié)點在新集群網(wǎng)絡(luò)內(nèi)的地址。你可以使用IP 地址或主機(jī)名設(shè)置 ring0_addr 屬性。如果你使用主機(jī)名,必須確保所有的節(jié)點都能順利解析該主機(jī)名。

在這里,我們計劃將集群通信網(wǎng)絡(luò)改為 10.10.10.1/25,所以需要相應(yīng)修改所有的ring0_addr 屬性。此外,還需要將 totem 一節(jié)中的 bindnetaddr 屬性值修改為新網(wǎng)絡(luò)中的地址。該地址可以配置為當(dāng)前節(jié)點連接到新集群網(wǎng)絡(luò)網(wǎng)卡的 IP 地址。

最后,你需要將 config_version 參數(shù)值增加 1。修改后的配置文件內(nèi)容示例如下:

logging {
debug: off
to_syslog: yes
}
nodelist {
node {
name: due
nodeid: 2
quorum_votes: 1
ring0_addr: 10.10.10.2
}
node {
name: tre
nodeid: 3
quorum_votes: 1
ring0_addr: 10.10.10.3
}
node {
name: uno
nodeid: 1
quorum_votes: 1
ring0_addr: 10.10.10.1
}
}
quorum {
provider: corosync_votequorum
}
totem {
cluster_name: thomas-testcluster
config_version: 4
ip_version: ipv4
secauth: on
version: 2
interface {
bindnetaddr: 10.10.10.1
ringnumber: 0
}
}

最后你需要再次檢查配置修改是否正確,然后可以根據(jù)編輯 corosync.conf 文件一節(jié)的內(nèi)容,啟用新的配置。

由于修改后的配置不能實時在線生效,所以必須重啟 corosync 服務(wù)。

在一個節(jié)點上執(zhí)行:

systemctl restart corosync

然后檢查集群通信是否正常

systemctl status corosync

如果在所有節(jié)點上 corosync 服務(wù)都能順利重啟并正常運行,那么所有的節(jié)點都將逐個改接入新的集群網(wǎng)絡(luò)。

集群冷啟動
很顯然,當(dāng)所有節(jié)點都斷線時,集群是無法達(dá)到多數(shù)票要求的。例如,機(jī)房意外斷電后,集群往往就處于這樣的狀態(tài)。

注意:使用不間斷電源(UPS,也稱為“后備電池電源”)是防止斷電導(dǎo)致集群失去多數(shù)票的一個好辦法,特別是在你需要實現(xiàn) HA 效果的時候。

當(dāng)節(jié)點重啟啟動時,pve-manager 服務(wù)會等待該節(jié)點加入集群并獲得多數(shù)票狀態(tài)。一旦獲得多數(shù)票,該服務(wù)會啟動所有設(shè)置了 onboot 標(biāo)識的虛擬機(jī)。

因此,當(dāng)你啟動節(jié)點時,或者是意外斷電后恢復(fù)供電時,你會發(fā)現(xiàn)一些節(jié)點啟動速度會比其他節(jié)點快。另外要注意的是,在你的集群獲得多數(shù)票之間,任何虛擬機(jī)都無法啟動。

虛擬機(jī)遷移
能夠把虛擬機(jī)從一個節(jié)點遷移到其他節(jié)點是集群的重要特性。Proxmox VE 提供了一些方法以便你控制虛擬機(jī)遷移過程。首先是 datacenter.cfg 提供了一些配置參數(shù),其次是遷移命令行和 API 接口提供了相關(guān)控制參數(shù)。

5.10.1 遷移類型

遷移類型是指遷移過程采用加密(secure)或不加密(insecure)通道傳輸虛擬機(jī)數(shù)據(jù)。將遷移類型設(shè)置為 insecure 后,在遷移過程中虛擬機(jī)內(nèi)存數(shù)據(jù)將以明文方式傳輸,這有可能導(dǎo)致虛擬機(jī)上的敏感數(shù)據(jù)泄露(例如口令、密鑰)。

因此,我們強(qiáng)烈建議使用安全通道遷移虛擬機(jī),特別在你無法控制整個網(wǎng)絡(luò)鏈路并無法保證網(wǎng)絡(luò)不受竊聽時。

注意:虛擬機(jī)磁盤遷移不受該配置影響。目前,虛擬機(jī)磁盤總是通過安全通道遷移。

由于數(shù)據(jù)加密會耗費大量計算資源,所以該虛擬機(jī)遷移時經(jīng)常會選用“不安全”的傳輸方式,以節(jié)約計算資源。較新型的系統(tǒng)采用了硬件方式進(jìn)行 AES 加密,受此影響較小。但在 10Gb 或更高速的網(wǎng)絡(luò)中,該參數(shù)設(shè)置對于性能的影響會十分明顯。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI