您好,登錄后才能下訂單哦!
三臺服務器的時鐘很重要所以要配置時鐘一致
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.
enabled application 'rbd' on pool 'kube'
HEALTH_OK
所有節點必須在同一子網,以便各個節點使用 corosync 多播通信(詳情可查看Corosync Cluster Engine)。Corosync 使用 UDP 5404 和 5405 端口進行集群通信
注意:有些交換機默認設置關閉了 IP 多播,需要先手工啟用多播通信
添加位于不同網段的節點
如果要添加一個節點,而該集群網絡和該節點在不同網段,你需要使用 ringX_addr 參數來指定節點在集群網絡內使用的地址。
pvecm add IP-ADDRESS-CLUSTER -ring0_addr IP-ADDRESS-RING0
如果你要使用冗余環協議,你還需要設置 ring1_addr 參數以傳遞第二個集群網絡地址。
刪除節點
警告:刪除節點前請仔細閱讀刪除操作步驟,不然很可能會發生你預料不到的情況。
首先將待刪除節點上所有虛擬機都遷移到其他節點。確保待刪除節點上沒有任何你需要保留的數據和備份,或者相關數據已經被妥善備份。
通過 ssh 登錄待刪除節點。執行 pvecm nodes 命令再次確認節點 ID。
重要:這個時候,你必須將待刪除節點關閉并斷電,確保該節點不再啟動(在當前集群網絡內)。
root@pve-1:~# pvecm nodes
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
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 登錄集群中其他任何一個節點,執行節點刪除命令(這里將刪除節點 hp4):
hp1# pvecm delnode hp4
如果命令執行成功,將直接返回,而且不會有任何輸出。可以運行 pvecm nodes 或者pvecm status 檢查刪除節點后的集群狀態。
重要:如前所述,必須在執行刪除命令前先關閉待刪除節點,并且確保被刪除點不再啟動(在原集群網絡中)。這是非常非常重要的!
如果你在原集群網絡中重新啟動被刪除的節點,你的集群會因此而崩潰,并且很難恢復到一個干凈的狀態。
如果出于某種原因,你需要將被刪除節點重新加入原集群,需要按如下步驟操作:
格式化被刪除節點,并重新安裝 Proxmox VE。
如前一節所述步驟,將該節點重新加入集群。
隔離節點
重要:我們不推薦使用隔離節點操作,按此方法操作時請務必小心。如果你對操作結果存有疑慮,建議使用刪除節點的方法。
你可以將一個節點從集群中隔離出去,而無需格式化并重裝該節點。但將節點從集群中隔離出去后,被隔離的節點仍然能夠訪問原 Proxmox VE 集群配置給它的共享存儲。
你必須在將節點隔離出去之前解決這個問題。由于不能確保避免發生虛擬機 ID 沖突,
所以 Proxmox VE 集群之間不能共享同一個存儲設備。建議為待隔離節點專門創建一個獨享的新存儲服務。例如,可以為待隔離節點分配一個新的 NFS 服務或者 Ceph 存儲池。必須確保該存儲服務是獨享的。在分配存儲之后,可以將該節點的虛擬機遷移到新存儲服務,接下來就可以開始進行隔離節點的操作。
警告:必須確保所有的資源都被已經徹底被隔離。否則將可能發生沖突或其他問題。
首先在待隔離節點上停止 pve-cluster 服務:
systemctl stop pve-cluster
systemctl stop corosync
然后將待隔離節點的集群文件系統設置為本地模式:
pmxcfs –l
接下來刪除 corosync 配置文件:
rm /etc/pve/corosync.conf
rm /etc/corosync/*
最后重新啟動集群文件系統服務:
killall pmxcfs
systemctl start pve-cluster
到此,該節點已經從集群中被隔離出去了。你可以在原集群中任意節點上執行刪除命令:
pvecm delnode oldnode
如果因前面的隔離操作,原集群中剩余節點已經不滿足多數票,節點刪除命令就會失敗。你可以將期望的多數票數量設置為 1,如下:
pvecm expected 1
然后重復節點刪除命令即可。
接下來你可以重新登錄被隔離出去的節點,刪除原集群遺留下的各個配置文件。刪除
完成后,該節點即可重新加入任意其他集群。
rm /var/lib/corosync/*
被隔離節點的集群文件系統中仍然殘留有和原集群其他節點有關的配置文件,這些也是需要刪除的。你可以遞歸刪除/etc/pve/nodes/NODENAME 目錄清除這些文件。但在執行刪除操作前請再三檢查,確保刪除操作無誤。
警告:原集群中其他節點的 SSH 公鑰仍會保留在 authorized_key 文件中。這意味著被隔離節點和原集群節點之間仍然可以用 SSH 公鑰互相訪問。為避免出現意外情況,可以刪除/etc/pve/priv/authorized_keys 文件中的對應公鑰。
多數票
Proxmox VE 采用了基于多數票(quorum)的機制確保集群節點狀態一致。多數票是指在一個分布式系統內一個分布式交易獲準執行所必須得到的最低票數。——Wikipedia 多數票(分布式計算)
在網絡可能分裂為多個區域的情況下,修改集群狀態需要得到大多數節點在線。如果集群內節點數量不足以構成多數票,集群將自動轉為只讀狀態。
注意:默認情況下,Proxmox VE 集群內每個節點都有一票的投票權。
集群網絡
集群網絡是 Proxmox VE 集群的核心。集群網絡必須確保可靠地將集群通信數據包按順序送達所有節點。Proxmox VE 使用 corosync 來實現集群網絡通信,確保集群網絡通信的高性能,低延時,高可用。我們的分布式集群文件系統(pmxcfs)就基于此構建。
集群網絡配置要求
Proxmox VE 集群網絡只有在網絡延時低于 2ms 時(局域網內)才可以正常工作。盡管 corosync 支持節點間使用單播方式通信,但我們強烈建議使用多播方式進行集群通信。集群網絡內不應有其他大流量通信。理想情況下,corosync 最好能擁有專用網絡。
注意,一定不要在同一個網絡同時運行 Proxmox VE 集群和存儲服務。
最佳實踐是在創建集群前先檢測網絡質量,確保網絡能滿足集群通信要求。
確認所有的節點都在同一網段。并且要確保網絡中只連接了用于集群通信(corosync)的網卡。
確保節點彼此之間的網絡都連接正常。可以使用 ping 命令測試。
確保多播網絡通信工作正常并能達到很高的數據包傳輸速度。可以使用 omping 命令測試。正常情況下,丟包率應小于 1%。
omping -c 10000 -i 0.001 -F -q NODE1-IP NODE2-IP …
確保多播通信能在要求的時間段內可靠工作。這主要是為了避免物理交換機啟用IGMP 但未配置多播查詢器(multicast querier)。該項測試至少需要持續 10 分鐘。
omping -c 600 -i 1 -q NODE1-IP NODE2-IP …
如以上測試有任何一項未能通過,則你的網絡不適合用于組建 Proxmox VE 集群。此時你需要檢查網絡配置。一般情況下,或者是交換機未啟用多播通信,或者是交換機配置了 IGMP 但未啟用 multicast querier。
如果你的集群節點數量很少,在實在無法使用多播通信的情況下也可以考慮使用單播方式。
獨立集群網絡
默認情況下,不帶任何參數創建集群時,Proxmox VE 集群會和 Web GUI 以及虛擬機共享使用同一個網絡。如果你配置不當,存儲網絡通信流量也有可能會通過集群網絡傳輸。我們建議避免和其他應用共享使用集群網絡,因為 corosync 是一個對時延非常敏感的實時應用。
準備一個新的網絡
首先,你需要準備一個新的網絡端口,該端口應連接在一個獨立物理網絡上。其次需要確保這個網絡滿足以上5.71集群網絡配置要求。
創建集群時配置獨立網絡
可以用帶 ring0_addr 和 bindnet0_addr 參數的 pvecm 命令創建擁有獨立網絡的Proxmox VE 集群。
如果你想配置獨立網卡用于集群通訊,而該網卡又配置了靜態 IP 地址 10.10.10.1/25,
那么可以使用如下命令:
pvecm create test –ring0_addr 10.10.10.1 –bindnet0_addr 10.10.10.0
然后可以使用如下命令檢查集群通信是否正常:
systemctl status corosync
創建集群后配置獨立網絡
即使在你創建集群后,你也可以配置集群改用其他獨立網絡進行通信,而無須重建整個集群。修改集群通信網絡,各節點的 corosync 服務需要逐個重啟,以便使用新網絡通信,這可能會導致集群短時間處于喪失多數票的狀態。
首先確認你了解編輯 corosync.conf 文件的方法。然后打開 corosync.conf 文件。配置文件 corosync.conf 的內容示例如下:
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 屬性值必須和節點主機名一致。
然后,你需要將 ring0_addr 屬性的值修改為節點在新集群網絡內的地址。你可以使用IP 地址或主機名設置 ring0_addr 屬性。如果你使用主機名,必須確保所有的節點都能順利解析該主機名。
在這里,我們計劃將集群通信網絡改為 10.10.10.1/25,所以需要相應修改所有的ring0_addr 屬性。此外,還需要將 totem 一節中的 bindnetaddr 屬性值修改為新網絡中的地址。該地址可以配置為當前節點連接到新集群網絡網卡的 IP 地址。
最后,你需要將 config_version 參數值增加 1。修改后的配置文件內容示例如下:
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
}
}
最后你需要再次檢查配置修改是否正確,然后可以根據編輯 corosync.conf 文件一節的內容,啟用新的配置。
由于修改后的配置不能實時在線生效,所以必須重啟 corosync 服務。
在一個節點上執行:
systemctl restart corosync
然后檢查集群通信是否正常
systemctl status corosync
如果在所有節點上 corosync 服務都能順利重啟并正常運行,那么所有的節點都將逐個改接入新的集群網絡。
集群冷啟動
很顯然,當所有節點都斷線時,集群是無法達到多數票要求的。例如,機房意外斷電后,集群往往就處于這樣的狀態。
注意:使用不間斷電源(UPS,也稱為“后備電池電源”)是防止斷電導致集群失去多數票的一個好辦法,特別是在你需要實現 HA 效果的時候。
當節點重啟啟動時,pve-manager 服務會等待該節點加入集群并獲得多數票狀態。一旦獲得多數票,該服務會啟動所有設置了 onboot 標識的虛擬機。
因此,當你啟動節點時,或者是意外斷電后恢復供電時,你會發現一些節點啟動速度會比其他節點快。另外要注意的是,在你的集群獲得多數票之間,任何虛擬機都無法啟動。
虛擬機遷移
能夠把虛擬機從一個節點遷移到其他節點是集群的重要特性。Proxmox VE 提供了一些方法以便你控制虛擬機遷移過程。首先是 datacenter.cfg 提供了一些配置參數,其次是遷移命令行和 API 接口提供了相關控制參數。
5.10.1 遷移類型
遷移類型是指遷移過程采用加密(secure)或不加密(insecure)通道傳輸虛擬機數據。將遷移類型設置為 insecure 后,在遷移過程中虛擬機內存數據將以明文方式傳輸,這有可能導致虛擬機上的敏感數據泄露(例如口令、密鑰)。
因此,我們強烈建議使用安全通道遷移虛擬機,特別在你無法控制整個網絡鏈路并無法保證網絡不受竊聽時。
注意:虛擬機磁盤遷移不受該配置影響。目前,虛擬機磁盤總是通過安全通道遷移。
由于數據加密會耗費大量計算資源,所以該虛擬機遷移時經常會選用“不安全”的傳輸方式,以節約計算資源。較新型的系統采用了硬件方式進行 AES 加密,受此影響較小。但在 10Gb 或更高速的網絡中,該參數設置對于性能的影響會十分明顯。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。