升級至 BeeGFS 8
請依照以下步驟將您的 BeeGFS HA 叢集從 BeeGFS 7.4 升級到 BeeGFS 8。
總覽
BeeGFS 8 引入了一些重大變化,從 BeeGFS 7 升級之前需要額外的設定。本文檔將指導您如何為 BeeGFS 8 的新要求準備叢集,以及如何升級到 BeeGFS 8。
|
|
在升級到 BeeGFS 8 之前,請確保您的系統至少運作的是 BeeGFS 7.4。任何運行 BeeGFS 7.4 之前版本的叢集都必須先 "升級至 BeeGFS 7.4" 再升級到 BeeGFS 8。 |
BeeGFS 8 的主要變化
BeeGFS 8 引入了以下主要變化:
-
授權強制執行: BeeGFS 8 需要授權才能使用進階功能,例如儲存資源池、遠端儲存目標、BeeOND 等。在升級之前,請為您的 BeeGFS 叢集取得有效的授權。如有需要,您可以從 "BeeGFS 授權入口網站" 取得臨時 BeeGFS 8 評估授權。
-
管理服務資料庫遷移: 若要啟用 BeeGFS 8 中基於 TOML 的新格式的配置,您必須手動將 BeeGFS 7 管理服務資料庫遷移到更新的 BeeGFS 8 格式。
-
TLS 加密: BeeGFS 8 引入了 TLS 加密,用於服務之間的安全通訊。升級過程中,您需要為 BeeGFS 管理服務和
beegfs命令列公用程式產生並分發 TLS 憑證。
有關 BeeGFS 8 的更多詳細資訊和其他更改,請參閱 "BeeGFS 8.0.0 升級指南"。
|
|
升級到 BeeGFS 8 需要叢集停機維護,且 BeeGFS 7 用戶端無法連線到 BeeGFS 8 叢集。請仔細協調升級時間,以最大程度地減少對運作的影響。 |
準備好 BeeGFS 叢集以進行升級
在開始升級之前,請仔細準備您的環境,以確保平穩過渡並最大限度地減少停機時間。
-
確認所有伺服器和客戶端都使用 "支援的 Linux 發行版本和核心版本" 用於 BeeGFS 8。
-
確保叢集處於健康狀態,所有 BeeGFS 服務都在其首選節點上運行。從執行 BeeGFS 服務的檔案節點,驗證所有 Pacemaker 資源是否都在其首選節點上執行:
pcs status -
請記錄並備份您的叢集配置。BeeGFS 管理服務資料將在稍後作為管理資料庫升級過程的一部分進行備份。
-
在 BeeGFS 用戶端上執行以下命令、並儲存輸出結果以供參考:
beegfs-ctl --getentryinfo --verbose /path/to/beegfs/mountpoint -
如果使用鏡像、請收集詳細的狀態資訊、以便在兩個鏡像成員都進入「需要重新同步」狀態時、能夠識別原始主要目標:
beegfs-ctl --listtargets --longnodes --state --spaceinfo --mirrorgroups --nodetype=meta beegfs-ctl --listtargets --longnodes --state --spaceinfo --mirrorgroups --nodetype=storage -
如果使用鏡像,請在升級之前驗證所有夥伴群組是否處於 `GOOD`狀態。
-
-
請依以下順序停止 BeeGFS 系統:
-
在每台客戶端上,卸載 BeeGFS 檔案系統並停止
beegfs-client服務。對每台客戶端執行以下命令:systemctl stop beegfs-client -
對於每個 Pacemaker 叢集,停用 STONITH,以便在升級後驗證叢集完整性,而不會觸發不必要的節點重新啟動:
pcs property set stonith-enabled=false -
在所有 Pacemaker 叢集上,停止叢集:
pcs cluster stop --all
-
升級 BeeGFS 管理套件
在叢集中的所有檔案節點上,新增適用於您 Linux 發行版的 BeeGFS 8 軟體包倉庫。有關如何新增適用於您 Linux 發行版的官方 BeeGFS 倉庫的說明,請造訪 "BeeGFS 下載頁面"。或者,請相應地配置您的本地 BeeGFS 鏡像倉庫。
-
在叢集的前兩個檔案節點上,僅將 BeeGFS 管理常駐程式套件更新至 BeeGFS 8:
對於 RHEL 系統,配置 BeeGFS 儲存庫後,執行以下命令:
dnf clean all dnf update beegfs-mgmtd
升級管理資料庫
在執行 BeeGFS 管理服務的檔案節點之一上,請依照下列步驟將管理資料庫從 BeeGFS 7 遷移到 BeeGFS 8。
-
列出所有 NVMe 裝置並識別管理目標:
nvme netapp smdevices | grep mgmt_tgt注意輸出中的設備路徑(例如,
/dev/nvmeXnY)。-
將管理目標裝置掛載到現有的管理目標掛載點(將
/dev/nvmeXnY替換為您的裝置路徑):mount /dev/nvmeXnY /mnt/mgmt_tgt_mgmt01/
-
-
執行管理資料目錄的備份:
tar --force-local -cpzf /mnt/mgmt_tgt_mgmt01/data_beegfs_7_backup_$(date +'%F_%T').tar.gz /mnt/mgmt_tgt_mgmt01/data -
執行以下命令,將您的 BeeGFS 7 管理資料匯入新的資料庫格式:
/opt/beegfs/sbin/beegfs-mgmtd --import-from-v7=/mnt/mgmt_tgt_mgmt01/data/預期輸出:
Created new database version 3 at "/var/lib/beegfs/mgmtd.sqlite". Successfully imported v7 management data from "/mnt/mgmt_tgt_mgmt01/data/".
由於 BeeGFS 8 中更嚴格的驗證要求,自動導入可能無法在所有情況下成功。例如,如果目標被指派到不存在的儲存池,則匯入會失敗。若遷移失敗,請勿繼續升級。請聯絡 NetApp 支援以取得資料庫遷移問題的協助。在問題解決期間,您可以降級 BeeGFS 8 管理包並繼續運行 BeeGFS 7。
-
將產生的 SQLite 檔案移到管理服務掛載點:
mv /var/lib/beegfs/mgmtd.sqlite /mnt/mgmt_tgt_mgmt01/data/ -
將產生的 `beegfs-mgmtd.toml`移至管理服務掛載點:
mv /etc/beegfs/beegfs-mgmtd.toml /mnt/mgmt_tgt_mgmt01/mgmt_config/完成以下各節中的授權和 TLS 設定步驟後,您將準備 `beegfs-mgmtd.toml`設定檔。
升級剩餘的 BeeGFS 套件
完成管理資料庫遷移後,升級叢集中所有檔案節點上的剩餘 BeeGFS 軟體包。對於 RHEL,配置 BeeGFS 儲存庫後,執行以下命令:
dnf clean all
dnf update beegfs-storage beegfs-meta libbeegfs-ib
設定授權
-
在所有執行 BeeGFS 管理服務的節點上安裝 BeeGFS 授權套件。這通常是叢集的前兩個檔案節點:
dnf install libbeegfs-license -
將您的 BeeGFS 8 授權檔案下載到管理節點並放置在以下位置:
/etc/beegfs/license.pem
設定 TLS 加密
BeeGFS 8 需要 TLS 加密才能在管理服務和 BeeGFS CLI 工具之間進行安全通訊(beegfs)。您可以選擇以下三種設定方法之一:使用受信任的憑證授權單位簽署的憑證、建立您自己的本機 CA 來為您的 BeeGFS 叢集簽署憑證,或完全停用 TLS 以進行故障排除(不建議在生產環境中使用)。
依照 "為 BeeGFS 8 設定 TLS 加密" 指南為檔案節點上的管理服務設定 TLS 加密。
|
|
BeeGFS 客戶端升級完成後,客戶端 TLS 設定將稍後完成。目前,只需在檔案節點上為管理服務和 beegfs-tool 配置 TLS 即可。 |
更新管理服務配置
手動將 BeeGFS 7 設定檔中的設定轉移到 `/mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml`檔案中,從而準備 BeeGFS 8 管理服務設定檔。
-
在已掛載管理目標的管理節點上,參考
/mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.confBeeGFS 7 的管理服務檔案,並將所有設定傳輸至/mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml檔案。對於基本設定,您的beegfs-mgmtd.toml可能如下所示:beemsg-port = 8008 grpc-port = 8010 log-level = "info" node-offline-timeout = "900s" quota-enable = false auth-disable = false auth-file = "/etc/beegfs/<mgmt_service_ip>_connAuthFile" db-file = "/mnt/mgmt_tgt_mgmt01/data/mgmtd.sqlite" license-disable = false license-cert-file = "/etc/beegfs/license.pem" tls-disable = false tls-cert-file = "/etc/beegfs/mgmtd_tls_cert.pem" tls-key-file = "/etc/beegfs/mgmtd_tls_key.pem" interfaces = ['i1b:mgmt_1', 'i2b:mgmt_2']根據您的環境和 TLS 配置調整所有路徑。
-
在每個執行管理服務的檔案節點上,修改 systemd 服務檔案,使其指向新的組態檔位置。
sudo sed -i 's|ExecStart=.*|ExecStart=nice -n -3 /opt/beegfs/sbin/beegfs-mgmtd --config-file /mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml|' /etc/systemd/system/beegfs-mgmtd.service-
重新載入 systemd:
systemctl daemon-reload
-
-
對於執行管理服務的每個檔案節點,開啟連接埠 8010 以進行管理服務的 gRPC 通訊。
-
將 TCP 連接埠 8010 新增至 beegfs 區域:
sudo firewall-cmd --zone=beegfs --permanent --add-port=8010/tcp-
重新載入防火牆以套用變更:
sudo firewall-cmd --reload
-
更新 BeeGFS 監控腳本
Pacemaker beegfs-monitor Open Cluster Framework (OCF) 腳本需要更新以支援新的 TOML 設定格式和 systemd 服務管理。請在叢集中的一個節點上更新腳本,然後將更新後的腳本複製到所有其他節點。
-
建立目前腳本的備份:
cp /usr/lib/ocf/resource.d/eseries/beegfs-monitor /usr/lib/ocf/resource.d/eseries/beegfs-monitor.bak.$(date +%F) -
將管理設定檔路徑從
.conf`更新為 `.toml:sed -i 's|mgmt_config/beegfs-mgmtd\.conf|mgmt_config/beegfs-mgmtd.toml|' /usr/lib/ocf/resource.d/eseries/beegfs-monitor或者,手動在腳本中找到以下程式碼區塊:
case $type in management) conf_path="${configuration_mount}/mgmt_config/beegfs-mgmtd.conf" ;;並將其替換為:
case $type in management) conf_path="${configuration_mount}/mgmt_config/beegfs-mgmtd.toml" ;; -
更新
get_interfaces()和get_subnet_ips()函數以支援 TOML 配置:-
在文字編輯器中開啟腳本:
vi /usr/lib/ocf/resource.d/eseries/beegfs-monitor -
找出這兩個函數:
get_interfaces()和get_subnet_ips()。 -
刪除這兩個完整函數,從
get_interfaces()開始到get_subnet_ips()結尾。 -
請將以下更新的函數複製並貼上到對應位置:
# Return network communication interface name(s) from the BeeGFS resource's connInterfaceFile get_interfaces() { # Determine BeeGFS service network IP interfaces. if [ "$type" = "management" ]; then interfaces_line=$(grep "^interfaces =" "$conf_path") interfaces_list=$(echo "$interfaces_line" | sed "s/.*= \[\(.*\)\]/\1/") interfaces=$(echo "$interfaces_list" | tr -d "'" | tr -d " " | tr ',' '\n') for entry in $interfaces; do echo "$entry" | cut -d ':' -f 1 done else connInterfacesFile_path=$(grep "^connInterfacesFile" "$conf_path" | tr -d "[:space:]" | cut -f 2 -d "=") if [ -f "$connInterfacesFile_path" ]; then while read -r entry; do echo "$entry" | cut -f 1 -d ':' done < "$connInterfacesFile_path" fi fi } # Return list containing all the BeeGFS resource's usable IP addresses. *Note that these are filtered by the connNetFilterFile entries. get_subnet_ips() { # Determine all possible BeeGFS service network IP addresses. if [ "$type" != "management" ]; then connNetFilterFile_path=$(grep "^connNetFilterFile" "$conf_path" | tr -d "[:space:]" | cut -f 2 -d "=") filter_ips="" if [ -n "$connNetFilterFile_path" ] && [ -e $connNetFilterFile_path ]; then while read -r filter; do filter_ips="$filter_ips $(get_ipv4_subnet_addresses $filter)" done < $connNetFilterFile_path fi echo "$filter_ips" fi } -
儲存並退出文字編輯器。
-
執行以下命令以在繼續之前檢查腳本的語法錯誤。如果沒有輸出出現,則腳本語法正確。
bash -n /usr/lib/ocf/resource.d/eseries/beegfs-monitor
-
-
將更新後的
beegfs-monitorOCF 腳本複製到叢集中的所有其他節點:scp /usr/lib/ocf/resource.d/eseries/beegfs-monitor user@node:/usr/lib/ocf/resource.d/eseries/beegfs-monitor
使叢集恢復上線
-
完成之前的所有升級步驟後,透過在所有節點上啟動 BeeGFS 服務,使叢集重新上線。
pcs cluster start --all -
驗證
beegfs-mgmtd服務是否成功啟動:journalctl -xeu beegfs-mgmtd預期輸出包含如下行:
Started Cluster Controlled beegfs-mgmtd. Loaded config file from "/mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml" Successfully initialized certificate verification library. Successfully loaded license certificate: TMP-113489268 Opened database at "/mnt/mgmt_tgt_mgmt01/data/mgmtd.sqlite" Listening for BeeGFS connections on [::]:8008 Serving gRPC requests on [::]:8010
如果日誌中出現錯誤,請檢查管理組態檔路徑,並驗證是否已從 BeeGFS 7 組態檔正確傳輸所有值。
-
執行
pcs status並驗證叢集是否運作正常,以及各項服務是否已在首選節點上啟動。 -
確認叢集運作狀況正常後,重新啟用 STONITH:
pcs property set stonith-enabled=true -
進入下一節,升級 BeeGFS 用戶端並驗證叢集的健康狀況。
升級 BeeGFS 用戶端
將叢集升級至 BeeGFS 8 後,您還必須升級所有 BeeGFS 用戶端。
-
如果您尚未停止 BeeGFS 用戶端服務、請立即停止:
systemctl stop beegfs-client -
為您的 Linux 發行版添加 BeeGFS 8 軟體包倉庫。有關新增官方 BeeGFS 倉庫的說明,請參閱 "BeeGFS 下載頁面"。或者,請相應地配置您的本地 BeeGFS 鏡像倉庫。
-
升級 BeeGFS 用戶端套件:
適用於 Ubuntu/Debian:
apt-get update apt-get install --only-upgrade beegfs-client -
為客戶端配置 TLS。從客戶端節點使用 BeeGFS CLI 需要 TLS。請參閱 TLS 部署指南中的 "為 BeeGFS 8 用戶端設定 TLS" 章節。
`beegfs-client` 服務掛載 BeeGFS 檔案系統不需要 TLS。TLS 僅在使用 BeeGFS CLI 工具和其他管理服務時才需要。
-
啟動 BeeGFS 用戶端服務:
systemctl start beegfs-client如果 BeeGFS 掛載失敗,請檢查系統日誌以尋找錯誤。如果您看到類似「沒有可用的根元資料節點,無法繼續」或「遠端 I/O 錯誤」之類的訊息,則表示 BeeGFS 7 匯入可能未成功完成。請聯絡 NetApp 支援以獲取協助。
-
(可選)在客戶端節點或其他需要執行 BeeGFS 管理命令的系統上安裝並設定新的
beegfsCLI 工具:-
安裝
beegfs-tools套件:適用於 Ubuntu/Debian:
apt-get install beegfs-tools-
為
beegfs工具配置 TLS。從客戶端節點使用 BeeGFS CLI 需要 TLS。請參閱 TLS 部署指南中的 "為 BeeGFS 8 用戶端設定 TLS" 章節。
-
驗證升級
完成升級至 BeeGFS 8 後,執行以下命令以驗證升級是否成功。
-
驗證根 inode 是否仍由先前的相同元資料節點擁有。如果您使用了管理服務中的
import-from-v7功能,則此過程應該會自動完成:beegfs entry info /mnt/beegfs -
確認所有節點和目標均在線上且處於正常狀態:
beegfs health check如果「可用容量」檢查警告目標可用空間不足,您可以調整
beegfs-mgmtd.toml檔案中定義的「容量池」閾值,使其更適合您的環境。