pve+ceph一些坑 (五)

三臺服務器的時鐘很重要因此要配置時鐘一致node

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網絡

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

注意:有些交換機默認設置關閉了 IP 多播,須要先手工啓用多播通訊ssh

添加位於不一樣網段的節點
若是要添加一個節點,而該集羣網絡和該節點在不一樣網段,你須要使用 ringX_addr 參數來指定節點在集羣網絡內使用的地址。分佈式

pvecm add IP-ADDRESS-CLUSTER -ring0_addr IP-ADDRESS-RING0ide

若是你要使用冗餘環協議,你還須要設置 ring1_addr 參數以傳遞第二個集羣網絡地址。性能

刪除節點
警告:刪除節點前請仔細閱讀刪除操做步驟,否則極可能會發生你預料不到的狀況。測試

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

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

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

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 登陸集羣中其餘任何一個節點,執行節點刪除命令(這裏將刪除節點 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 或更高速的網絡中,該參數設置對於性能的影響會十分明顯。

相關文章
相關標籤/搜索