Proxmox VE虛擬化管理平台-相關概念


請閱讀此文用戶務必閱讀以下鏈接,其中包含了漢化作者、張自然copy過來的原因等信息。

www.zhangziran.com/proxmox-docs-zh-cn.htm 
a

Proxmox VE 集群簡介

Proxmox VE 集群管理工具 pvecm 用於創建一個由多個物理服務器節點構成的“組”。
這樣的一組服務器稱為一個“集群”。我們使用 Corosync Cluster Engine 來確保集群通信的穩定可靠,目前一個集群最多可擁有 32 個物理節點(也可以更多,關鍵在於網絡時延)。

使用 pvecm 可以創建新的集群,可以向集群新增節點,可以從集群刪除節點,可以查看集群狀態信息,也可以完成其他各種集群管理操作。Proxmox VE 集群文件系統(pmxcfs)用於確保配置信息透明地發送到集群中所有節點,並保持一致。

以集群方式使用 Proxmox VE 有以下優勢:

集中的 web 管理

多主集群架構:從任何一個節點都可以管理整個集群

pmxcfs:以數據庫驅動的文件系統保存配置文件,並通過 corosync 在確保所有節點的配置信息實時同步。

虛擬機和容器可方便地在物理服務器節點之間遷移。

快速部署。

基於集群的防火牆和 HA 服務。

5.1 部署要求

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

注意:有些交換機默認設置關閉了 IP 多播,需要先手工啟用多播通信。

各節點日期和時間需要保持同步。

各節點之間要能夠在 TCP 22 端口建立 SSH 通信。

如果你需要配置 HA,則最少需要 3 個物理服務器節點,以保證集群多數票機制生效。此外,還需要保證所有節點使用同一版本的 Proxmox VE。

我們建議為集群通信分配專用網卡,特別是在配置共享存儲的情況下,分配專用網卡能確保集群通信的穩定可靠。

注意:Proxmox VE 3.x 或更早版本不能和 Proxmox VE 4.x 混合組建集群。

5.2 節點服務器准備

首先需要在物理服務器節點安裝 Proxmox VE。確保所有節點的主機名和 IP 地址都配置妥當。加入集群后將不允許再修改主機名和 IP 地址。

目前,創建集群操作必須在命令行控制台下進行,所以你必須通過 ssh 登錄節點服務器以便進行操作。

5.3 創建集群

首先通過 ssh 遠程登錄一個 Proxmox VE 節點。然后為你的集群想一個名字,注意不要
和已有的集群重名。一旦建立集群后,將不允許修改集群名稱。創建命令如下:

hp1# pvecm create YOUR-CLUSTER-NAME

警告集群名稱用於計算生成集群多播通信地址。如果在網絡里已經有 Proxmox VE 集群在運行,請務必確保集群名稱不重復。

創建集群后,可以用如下命令查看集群狀態:

hp1# pvecm status

5.4 新增集群節點

通過 ssh 遠程登錄要加入 Proxmox VE 集群的新節點。執行如下命令。

hp2# pvecm add IP-ADDRESS-CLUSTER

這里 IP-ADDRESS-CLUSTER 可以是已有集群中任意節點的 IP 地址。

警告為避免虛擬機 ID 沖突,Proxmox VE 規定新節點加入集群前不能配置有任何虛擬機。

此外,新加入節點/etc/pve 目錄下的原有配置信息將被集群配置全部覆蓋。如果節點上已有虛擬機,可以首先使用 vzdump 將所有虛擬機備份,然后刪除節點上的虛擬機,

待加入集群后再用新的虛擬機 ID 恢復原有虛擬機。

加入集群后可以查看集群狀態:

# pvecm status

加入 4 個節點后的集群狀態

hp2# pvecm status
Quorum information
~~~~~~~~~~~~~~~~~~
Date: Mon Apr 20 12:30:13 2015
Quorum provider: corosync_votequorum
Nodes: 4
Node ID: 0x00000001
Ring ID: 1928
Quorate: Yes
Votequorum information
~~~~~~~~~~~~~~~~~~~~~~
Expected votes: 4
Highest expected: 4
Total votes: 4
Quorum: 2
Flags: Quorate
Membership information
~~~~~~~~~~~~~~~~~~~~~~
Nodeid Votes Name
0x00000001 1 192.168.15.91
0x00000002 1 192.168.15.92 (local)
0x00000003 1 192.168.15.93
0x00000004 1 192.168.15.94

如果只需要查看節點列表,可運行如下命令:

# pvecm nodes

列出集群節點列表

hp2# pvecm nodes
Membership information
~~~~~~~~~~~~~~~~~~~~~~
Nodeid Votes Name
1 1 hp1
2 1 hp2 (local)
3 1 hp3
4 1 hp4

5.4.1 添加位於不同網段的節點

如果要添加一個節點,而該集群網絡和該節點在不同網段,你需要使用 ringX_addr 參數來指定節點在集群網絡內使用的地址。

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

如果你要使用冗余環協議,你還需要設置 ring1_addr 參數以傳遞第二個集群網絡地址。

5.5 刪除節點

警告:刪除節點前請仔細閱讀刪除操作步驟,不然很可能會發生你預料不到的情況。

首先將待刪除節點上所有虛擬機都遷移到其他節點。確保待刪除節點上沒有任何你需要保留的數據和備份,或者相關數據已經被妥善備份。

通過 ssh 登錄待刪除節點。執行 pvecm nodes 命令再次確認節點 ID。

hp1# pvecm status
Quorum information
~~~~~~~~~~~~~~~~~~
Date: Mon Apr 20 12:30:13 2015
Quorum provider: corosync_votequorum
Nodes: 4
Node ID: 0x00000001
Ring ID: 1928
Quorate: Yes
Votequorum information
~~~~~~~~~~~~~~~~~~~~~~
Expected votes: 4
Highest expected: 4
Total votes: 4
Quorum: 2
Flags: Quorate
Membership information
~~~~~~~~~~~~~~~~~~~~~~
Nodeid Votes Name
0x00000001 1 192.168.15.91 (local)
0x00000002 1 192.168.15.92
0x00000003 1 192.168.15.93
0x00000004 1 192.168.15.94

重要:這個時候,你必須將待刪除節點關閉並斷電,確保該節點不再啟動(在當前集群網絡內)。

hp1# pvecm nodes
Membership information
~~~~~~~~~~~~~~~~~~~~~~
Nodeid Votes Name
1 1 hp1 (local)
2 1 hp2
3 1 hp3
4 1 hp4

通過 ssh 登錄集群中其他任何一個節點,執行節點刪除命令(這里將刪除節點 hp4):

hp1# pvecm delnode hp4

如果命令執行成功,將直接返回,而且不會有任何輸出。可以運行 pvecm nodes 或者pvecm status 檢查刪除節點后的集群狀態。你會看到類似如下輸出:

hp1# pvecm status
Quorum information
~~~~~~~~~~~~~~~~~~
Date: Mon Apr 20 12:44:28 2015
Quorum provider: corosync_votequorum
Nodes: 3
Node ID: 0x00000001
Ring ID: 1992
Quorate: Yes
Votequorum information
~~~~~~~~~~~~~~~~~~~~~~
Expected votes: 3
Highest expected: 3
Total votes: 3
Quorum: 3
Flags: Quorate
Membership information
~~~~~~~~~~~~~~~~~~~~~~
Nodeid Votes Name
0x00000001 1 192.168.15.90 (local)
0x00000002 1 192.168.15.91
0x00000003 1 192.168.15.92

重要:如前所述,必須在執行刪除命令前先關閉待刪除節點,並且確保被刪除點不再啟動(在原集群網絡中)。這是非常非常重要的!

如果你在原集群網絡中重新啟動被刪除的節點,你的集群會因此而崩潰,並且很難恢復到一個干凈的狀態。

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

格式化被刪除節點,並重新安裝 Proxmox VE。

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

5.5.1 隔離節點

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

你可以將一個節點從集群中隔離出去,而無需格式化並重裝該節點。但將節點從集群中隔離出去后,被隔離的節點仍然能夠訪問原 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 文件中的對應公鑰。

5.6 多數票

Proxmox VE 采用了基於多數票(quorum)的機制確保集群節點狀態一致。多數票是指在一個分布式系統內一個分布式交易獲准執行所必須得到的最低票數。——Wikipedia 多數票(分布式計算)

在網絡可能分裂為多個區域的情況下,修改集群狀態需要得到大多數節點在線。如果集群內節點數量不足以構成多數票,集群將自動轉為只讀狀態。

注意:默認情況下,Proxmox VE 集群內每個節點都有一票的投票權。

5.7 集群網絡

集群網絡是 Proxmox VE 集群的核心。集群網絡必須確保可靠地將集群通信數據包按順序送達所有節點。Proxmox VE 使用 corosync 來實現集群網絡通信,確保集群網絡通信的高性能,低延時,高可用。我們的分布式集群文件系統(pmxcfs)就基於此構建。

5.7.1 集群網絡配置要求

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。

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

5.7.2 獨立集群網絡

默認情況下,不帶任何參數創建集群時,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 服務都能順利重啟並正常運行,那么所有的節點都將逐個改接入新的集群網絡。

5.7.3 冗余環協議

為避免網絡設備單點故障導致集群通信中斷的風險,你可以使用冗余網絡技術。比如,你可以利用硬件和操作系統的支持,使用多網卡綁定技術。

Corosync 本身支持配置冗余的通信網絡,該技術稱為冗余環協議(RRP)。通過該協議可以在另一個網絡上同時運行第二個 totem 環。而為了切實增強網絡可用性,該網絡應該和原集群網絡物理隔離,避免共用網絡設備。

5.7.4 創建集群時配置 RRP

集群管理工具 pvecm 提供了參數項 bindnetX_addr,ringX_addr 和 rrp_mode,可用於在創建集群時配置使用 RRP。

注意:可以查看 Corosync 參數說明,以了解每個參數的含義。

如果你已經有兩個網絡,地址分別為 10.10.10.1/24 和 10.10.20.1/24,可以運行如下命令創建 RRP 集群:

pvecm create CLUSTERNAME -bindnet0_addr 10.10.10.1 -ring0_addr 10.10.10.1 \ -bindnet1_addr 10.10.20.1 -ring1_addr 10.10.20.1

5.7.5 創建集群后配置 RRP

創建集群后再配置 RRP 和創建集群后配置獨立網絡的操作非常類似,區別只在於配置RRP 是增加一個新的 totem 環。

首先需要在 corosync.conf 配置文件中的 totem 節新增一個 interface 對象,並設置ringnumber 屬性為 1,bindnetaddr 值為當前節點在新增網絡中的地址。另外還需要設置 rrp_mode 屬性值為 passive,這是唯一的穩定模式。然后在 nodelist 一節中,為每個 node 對象添加 ring1_addr 屬性,並將其值設置為對應節點在新增網絡中的地址。

假定你有兩個網絡,其中原集群網絡地址為 10.10.10.1/24,新增網絡地址為10.10.20.1/24,最終修改后的配置文件內容示例如下:

totem {
cluster_name: tweak
config_version: 9
ip_version: ipv4
rrp_mode: passive
secauth: on
version: 2
interface {
bindnetaddr: 10.10.10.1
ringnumber: 0
}
interface {
bindnetaddr: 10.10.20.1
ringnumber: 1
}
}
nodelist {
node {
name: pvecm1
nodeid: 1
quorum_votes: 1
ring0_addr: 10.10.10.1
ring1_addr: 10.10.20.1
}
node {
name: pvecm2
nodeid: 2
quorum_votes: 1
ring0_addr: 10.10.10.2
ring1_addr: 10.10.20.2
}
[...] # other cluster nodes here
}
[...] # other remaining config sections here

最后,按照編輯 corosync.conf 文件一節的內容啟用新配置。

新配置不能實時在線生效,必須重啟 corosync 服務才可以生效。建議最好重啟所有節點的操作系統。

如果你不能重啟所有節點的操作系統,可以在確認沒有啟用 HA 的情況下,先停止所有節點的 corosync 服務,然后再逐個啟動每個節點的 corosync 服務。

5.8 配置 Corosync

/etc/pve/corosync.conf 文件是 Proxmox VE 集群的核心配置文件。該文件控制着集群成員構成和網絡通信。可以查看 corosync.conf 的 man 手冊,以獲取更多信息。

man corosync.conf

在查看節點成員時,你可以用 pvecm 命令。但在手工改變集群配置時,你可以直接編
輯該 corosync.conf 配置文件。以下是編輯該文件時的一些最佳實踐和提示。

5.8.1 編輯 corosync.conf

編輯配置文件 corosync.conf 並非看起來那么簡單。Proxmox VE 服務器上一共有兩個corosync.conf 配置文件,一個是集群文件系統中的/etc/pve/corosync.conf,另一個是本地文件系統中的/etc/corosync/corosync.conf。對集群文件系統中的 corosync.conf進行編輯,配置變更會自動同步到本地文件系統中的 corosync.conf,但反過來編輯本地文件系統中的 corosync.conf,配置變更不會同步到集群文件系統中的副本。

配置文件 corosync.conf 的內容變化會自動更新到服務配置中。這意味着,配置文件內容的變化會實時生效,並影響 corosync 服務的運行。為了避免編輯過程對 corosync 服務產生意想不到的影響,建議你先復制一個 corosync.conf 的副本,修改該副本而不是直接修改 corosync.conf。

cp /etc/pve/corosync.conf /etc/pve/corosync.conf.new

可以使用你喜歡的編輯器對 corosync.conf 副本進行修改。例如可以使用 Proxmox VE預裝的 nano 或者 vim.tiny。

注意:編輯完成后,請記住增加 config_version 的值,否則可能會導致錯誤。

當編輯完成后,在啟用新的配置之前,最好先備份當前配置文件,以便新配置文件啟用失敗或出現錯誤時能夠回退到原配置。可執行如下命令進行備份:

cp /etc/pve/corosync.conf /etc/pve/corosync.conf.bak

現在可以用新的配置文件覆蓋原配置文件,如下:

mv /etc/pve/corosync.conf.new /etc/pve/corosync.conf

啟用新配置后,可以用以下命令查看服務狀態及配置是否生效

systemctl status corosync

journalctl -b -u corosync

如果新配置未能自動生效,可以嘗試重啟 corosync 服務,如下:

systemctl restart corosync

如果發現錯誤,可以嘗試按下一節介紹的方法進行排查。

5.8.2 故障排查

錯誤現象:quorum.expected_votes must be configured

如果 corosync 服務停止運行,而系統日志文件中有如下日志信息時:

[...]
corosync[1647]: [QUORUM] Quorum provider: corosync_votequorum failed to
initialize.
corosync[1647]: [SERV ] Service engine ’corosync_quorum’ failed to load for
reason ’configuration error: nodelist or quorum.expected_votes must be
configured!’
[...]

原因是你在配置文件中設置的 ringX_addr 主機名不能正常解析。

失去多數票的狀態下修改配置文件

如果你需要在一個失去多數票的節點上修改/etc/pve/corosync.conf 文件,你可以執行如下命令:

pvecm expected 1

將期望的多數票數目設置為 1,可以讓當前節點重新滿足多數票的要求,這樣你就可以修改配置,或者是將配置恢復到的正常狀態。

在 corosync 服務無法啟動時,你還需要采取進一步措施以恢復集群。最好是修改本地文件系統中的配置文件/etc/corosync/corosync.conf,先確保 corosync 服務能正常啟動。

你需要特別注意,確保所有節點的 corosync.conf 內容都完全一致,避免集群出現腦裂的情況。如果你最終還是無法確認故障原因,可以向 Proxmox 社區尋求幫助。

5.8.3 Corosync 參數說明

ringX_addr

用於設置各個節點在不同的 totem 環內的地址,以用於進行 corosync 集群通信。

bindnetaddr

定義當前節點當前 totem 環所要綁定的網卡端口。可以設置為網卡端口上配置的集群網絡內的任意地址。但一般情況下,我們建議在網卡端口上僅綁定一個地址。

rrp_mode

用於設置冗余環協議的運行模式。目前有三種參數值可選,分別是 passive,active 和none。其中 active 仍處於試驗階段,官方不推薦使用。選用 passive 較為合適,不僅可以將集群網絡通信帶寬提高一倍,而且可以實現集群網絡的高可用性。

5.9 集群冷啟動

很顯然,當所有節點都斷線時,集群是無法達到多數票要求的。例如,機房意外斷電后,集群往往就處於這樣的狀態。

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

當節點重啟啟動時,pve-manager 服務會等待該節點加入集群並獲得多數票狀態。一旦獲得多數票,該服務會啟動所有設置了 onboot 標識的虛擬機。

因此,當你啟動節點時,或者是意外斷電后恢復供電時,你會發現一些節點啟動速度會比其他節點快。另外要注意的是,在你的集群獲得多數票之間,任何虛擬機都無法啟動。

5.10 虛擬機遷移

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

5.10.1 遷移類型

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

因此,我們強烈建議使用安全通道遷移虛擬機,特別在你無法控制整個網絡鏈路並無法保證網絡不受竊聽時。

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

由於數據加密會耗費大量計算資源,所以該虛擬機遷移時經常會選用“不安全”的傳輸方式,以節約計算資源。較新型的系統采用了硬件方式進行 AES 加密,受此影響較小。但在 10Gb 或更高速的網絡中,該參數設置對於性能的影響會十分明顯。

5.10.2 專用遷移網絡

默認情況下,Proxmox VE 通過集群網絡傳輸虛擬機遷移數據。但這樣虛擬機遷移流量很可能會干擾到敏感的集群網絡通信,並且集群網絡也未必就是服務器節點所能利用的最大帶寬網絡。

通過設置遷移網絡參數,可以選擇一個專用網絡進行虛擬機遷移。除傳輸內存數據,還可以在離線遷移時傳輸虛擬機磁盤鏡像數據。

遷移網絡參數值為 CIDR 格式的網絡地址。這樣的好處是,你無須分別設置遷移的源節點和目標節點地址。Proxmox VE 能夠根據 CIDR 格式的網絡地址自動決定目標節點應使用的 IP 地址。為確保該機制的正常工作,每個節點在遷移網絡中都必須被分配一個且僅分配一個 IP 地址。

遷移網絡配置示例

假定有一個 3 節點集群,節點之間通過 3 個不同的網絡連接。其中一個是公共的互聯網,一個是集群通信網絡,一個是高帶寬的快速網絡。這里我們將選擇該快速網絡作為虛擬機遷移網絡。

該集群的網絡配置示例如下:

iface eth0 inet manual
# public network
auto vmbr0
iface vmbr0 inet static
address 192.X.Y.57
netmask 255.255.250.0
gateway 192.X.Y.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
# cluster network
auto eth1
iface eth1 inet static
address 10.1.1.1
netmask 255.255.255.0
# fast network
auto eth2
iface eth2 inet static
address 10.1.2.1
netmask 255.255.255.0

這里,我們將選擇快速網絡 10.1.2.0/24 作為虛擬機遷移網絡。對於命令行方式的遷移操作,可以使用 migration_network 設置遷移網絡:

# qm migrate 106 tre --online --migration_network 10.1.2.0/24

如需將該快速網絡設置為默認的虛擬機遷移網絡,可利用/etc/pve/datacenter.cfg 中的migration 屬性進行設置:

# use dedicated migration network

migration: secure,network=10.1.2.0/24

注意:在/etc/pve/datacenter.cfg 中設置虛擬機遷移網絡時,必須同時設置遷移類型。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM