Date: 6 4 月, 2024
在 Linux 上使用 SIOS LifeKeeper 設定 NFS 檔案見證的逐步指南
SIOS Lifekeeper 和基於 NFS 的文件見證入門
在高可用集群,見證人對於保證集群的完整性和可靠性起著至關重要的作用。沒有第三個節點,可能很難達到法定人數,因為沒有數據可以幫助打破兩個節點都認為應該上線的平局(這稱為裂腦)。您可以透過多種方式解決此問題,例如,透過提供專用見證伺服器、整個叢集可見的共用儲存路徑,或簡單地透過在叢集本身中擁有更多節點(至少 3 個!)。值得慶幸的是,SIOS 生命守護者為在 Linux 環境中設定高可用性叢集提供了強大的解決方案,並且配置見證以提高仲裁是一項重要功能。
在本指南中,我們將引導您完成在 Linux 上使用 SIOS LifeKeeper 設定基於 NFS 的檔案見證的步驟,幫助您增強叢集應用程式的可用性和彈性。
目標:
使用基於 NFS 的儲存見證實現 2 節點集群,如下圖所示:
先決條件:開始之前,請確保您具備以下條件:
- Linux 伺服器是使用管理權限(即根存取權限)進行設定和連接的。
- SIOS LifeKeeper 已安裝或下載並準備安裝在每台伺服器上。
- NFS 共用可供叢集中的所有伺服器存取。
步驟 1:安裝/修改 SIOS LifeKeeper:
我們需要在此階段安裝 LifeKeeper 或重新執行安裝程式以新增 Witness 功能,除非您之前已包含它。
就我而言,我使用的是 RHEL8.8,因此我將在使用 RHEL8.8 所需的補充包運行安裝之前安裝 ISO。
[root@server1-LK ~]# mount /root/sps.img /mnt/loop -t iso9660 -o 循環
[root@server1-LK ~]# cd /mnt/loop/
[root@server1-LK 循環]# ./setup –addHADR /root/HADR-RHAS-4.18.0-477.10.1.el8_8.x86_64.rpm
這裡,我們目的的重要部分是啟用見證功能,如下面的螢幕截圖所示。但是,您還需要一個額外的許可證文件,您可以在此處添加該文件,也可以稍後透過命令列新增:
否則,根據您的目的配置 LifeKeeper,或者如果已經配置,只需在包含「使用仲裁/見證功能」選項後繼續完成設定即可。
如果您決定透過命令列新增許可證,請在叢集中的每個節點上執行以下命令,並使用許可證檔案的正確路徑:
[root@server1-LK ~]# /opt/LifeKeeper/bin/lkkeyins /<許可證文件路徑>l/quorum-disk.lic
步驟 2:設定並掛載共用儲存:
確保叢集中的所有伺服器都可以存取共用儲存。您可以使用“mount”命令或“findmnt”檢查每個伺服器,以驗證是否已在本機安裝:
[root@server1-LK 循環]# mount | grep NFS
/var/lib/nfs/rpc_pipefs 上的 sunrpc 類型 rpc_pipefs (rw,relatime)
172.16.200.254:/var/nfs/general on /nfs/general 類型 nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,
proto=tcp=timesproto 2、sec=sys、clientaddr=172.16.205.151、local_lock=none、addr=172.16.200.254)
或者
[root@server1-LK ~]# findmnt -l /nfs/general
目標來源 FSTYPE 選項
/nfs/general 172.16.200.254:/var/nfs/general nfs4 rw,relatime,vers=4.2,rsize=1048576,
wsize=1048576,namlen=255,hard,proto=tcp,wsize=1048576,namlen=255,hard,
proto=tcp,sectimeo=600, =sys,clientaddr=172.16.205.151,local_lock=無,addr=172.16.200.254
如果您仍需要自行掛載共享,請依照以下步驟操作:
首先,確認您可以在主機伺服器上看到 NFS 共用。
[root@server1-LK ~]# showmount -e 172.16.200.254
172.16.200.254 的導出清單:
/首頁172.16.205.244,172.16.205.151
/var/nfs/一般 172.16.205.244,172.16.205.151
就我而言,我想掛載“/var/nfs/general”共享。
要掛載此共享,首先請確保您計劃掛載的目錄存在。如果沒有,請創建它:
[root@server1-LK ~]# mkdir -p /nfs/general
現在,您可以使用以下命令手動掛載共享以確認可以連接,並且它可以工作:
[root@server1-LK ~]# mount 172.16.200.254:/var/nfs/general /nfs/general
最後,一旦滿意,將掛載點添加到您的 /etc/fstab 檔案中,以便它將在啟動時掛載:
[root@server1-LK ~]# cat /etc/fstab
#
# /etc/fstab
# 由 anaconda 創建於 2024 年 1 月 25 日星期四 12:07:15
#
# 透過引用,可存取的檔案系統維護在「/dev/disk/」下。
# 有關更多信息,請參閱手冊頁 fstab(5)、findfs(8)、mount(8) 和/或 blkid(8)。
#
# 編輯此檔案後,執行 ‘systemctl daemon-reload’ 來更新 systemd
從該檔案產生的 # 個單位。
#
/dev/mapper/rhel-root/xfs 預設 0 0
UUID=6b22cebf-8f1c-405b-8fa8-8f12e1b6b56c /boot xfs 預設 0 0
/dev/mapper/rhel-swap 無 交換預設值 0 0
#為 NFS 共享添加
172.16.200.254:/var/nfs/general /nfs/general nfs4 預設 0 0
現在,您可以使用 mount 命令確認它已安裝:
[root@server1-LK ~]# mount -l | grep NFS
/var/lib/nfs/rpc_pipefs 上的 sunrpc 類型 rpc_pipefs (rw,relatime)
172.16.200.254:/var/nfs/general on /nfs/general 類型 nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,
hard,proto=tcp=timesproto 2、sec=sys、clientaddr=172.16.205.151、local_lock=none、addr=172.16.200.254)
從上面突出顯示的文字可以看到,現在已經成功安裝了。在所有伺服器上重複此操作,直到確定所有伺服器都已安裝共享,然後再繼續。
步驟 4:檢查您的主機名稱並配置 /etc/default/LifeKeeper 設定:
您可以透過在每個節點上執行以下命令來查看 LifeKeeper 所知道的每個伺服器的主機名稱:
/opt/LifeKeeper/bin/lcduname
您需要新增到 /etc/default/LifeKeeper 檔案的設定範例:
WITNESS_MODE=存儲
QWK_STORAGE_TYPE=文件
QWK_STORAGE_HBEATTIME=6
QWK_STORAGE_NUMHBEATS=9
QWK_STORAGE_OBJECT_server1_LK_localdomain=/nfs/general/nodeA
QWK_STORAGE_OBJECT_server2_LK_localdomain=/nfs/general/nodeB
對於“QWK_STORAGE_OBJECT_<server-name>”,您需要為每個節點聲明它,它是使用您的主機名稱、路徑以及見證文件本身的所需位置形成的。
需要注意的是,如果主機名稱包含“-”或“.”,請將其替換為底線“_”(例如 lksios-1 → lksios_1 或 lksios-1.localdomain → lksios_1_localdomain )。
在我的範例中,我有以下主機名稱:
server1-LK.localdomain
server2-LK.localdomain
這意味著添加以下“QWK_STORAGE_OBJECT_”定義:
QWK_STORAGE_OBJECT_server1_LK_localdomain=/nfs/general/nodeA
QWK_STORAGE_OBJECT_server2_LK_localdomain=/nfs/general/nodeB
此外,我們需要調整 /etc/default/LifeKeeper 中的現有設定之一:
QUORUM_MODE=存儲
為了幫助理解為什麼我們將 WITNESS_MODE 和 QUORUM_MODE 設定為存儲,請查看下表:
支持仲裁模式和見證模式的組合
LifeKeeper 支援以下組合。
法定模式 | |||||
多數 | tcp_遠端 | 貯存 | 無/關 | ||
見證模式 | 遠端驗證 | 支援3個或更多節點 | 支援3個或更多節點 | 不支援 | 支援3個或更多節點 |
貯存 | 不支援 | 不支援 | 支援2到4個節點之間 | 不支援 | |
無/關 | 支援3個或更多節點 | 支援2個或更多節點 | 不支援 | 支持的 |
我們有一個雙節點集群,想要使用外部存儲來進行仲裁,因此唯一支援的組合是兩個值的「存儲」。但是,您可以從表中看到,當您需要更多節點時,這可以非常靈活,提供多種方式來實現通訊並提供法定人數。
第四步:初始化見證檔:
若要初始化見證檔案並啟用其使用,您必須在每個節點上執行以下命令:
[root@server1-LK ~]# /opt/LifeKeeper/bin/qwk_storage_init
運行時它將暫停,直到每個節點完成,因此在叢集中的第一個節點上執行命令,然後在第二個節點上執行命令,依此類推,然後返回檢查命令是否完成且沒有錯誤。
例子:
[root@server1-LK ~]# /opt/LifeKeeper/bin/qwk_storage_init
好的:LifeKeeper 正在運行。
ok:LifeKeeper 許可證金鑰已成功安裝。
ok:QWK 參數有效。
/nfs/general/nodeA 的 QWK 物件尚不可用。
/nfs/general/nodeA 已存在,但不存在 QWK_STORAGE_OBJECT:覆蓋? (是/否):是
ok:QWK物件的路徑有效。
好的:下:/opt/LifeKeeper/etc/service/qwk-storage:1377s
ok:本節點QWK物件初始化完成。
/nfs/general/nodeB 的 QWK 物件尚不可用。
/nfs/general/nodeB 的 QWK 物件尚不可用。
/nfs/general/nodeB 的 QWK 物件尚不可用。
/nfs/general/nodeB 的 QWK 物件尚不可用。
/nfs/general/nodeB 的 QWK 物件尚不可用。
/nfs/general/nodeB 的 QWK 物件尚不可用。
/nfs/general/nodeB 的 QWK 物件尚不可用。
ok:仲裁系統已準備就緒。
ok: 運行: /opt/LifeKeeper/etc/service/qwk-storage: (pid 14705) 1s, 正常down
成功的。
第 5 步:驗證配置:
可以透過執行以下命令來驗證配置:
/opt/LifeKeeper/bin/lktest
如果發現任何錯誤,它們將被列印到終端上。在下面的範例中,我沒有替換主機名稱中的特殊字符,因此它突出顯示無法找到儲存。
[root@server1-LK ~]# /opt/LifeKeeper/bin/lktest
/opt/LifeKeeper/bin/lktest: /etc/default/LifeKeeper[308]: QWK_STORAGE_OBJECT_server1_LK.localdomain=/nfs/general/nodeA: 找不到
/opt/LifeKeeper/bin/lktest: /etc/default/LifeKeeper[309]: QWK_STORAGE_OBJECT_server2_LK.localdomain=/nfs/general/nodeB: 找不到
FS UID PID PPID C CLS PRI NI SZ STIME TIME CMD
4 S 根 2348 873 0 TS 39 -20 7656 15:49 00:00:00 lcm
4 S 根 2388 882 0 TS 39 -20 59959 15:49 00:00:00 ttymonlcm
4 S 根 2392 872 0 TS 29 -10 10330 15:49 00:00:00 液晶
4 S 根 8591 8476 0 TS 19 0 7670 15:58 00:00:00 lcdremexec -d server2-LK.localdomain -e — cat /proc/mdstat
您也可以透過命令列確認見證文件正在更新,如下所示:
[root@server1-LK ~]# cat /nfs/general/nodeA
簽名=lifekeeper_qwk_object
local_node=server1-LK.localdomain
時間=2024年2月15日星期四14:10:56
序列=157
節點=server2-LK.localdomain
通訊狀態=UP
校驗和=13903688106811808601
使用 NFS 的成功文件共享見證
使用 NFS 設定檔共享見證非常簡單!如果您僅限於兩個節點,但需要更好地應對腦裂事件,那麼它可能會很強大,特別是在雲中,您可以利用AWS 的EFS 之類的東西……另一個重要部分可以是利用更多的通訊路徑,但這是一個不同的部落格。但是,透過遵循本指南中概述的步驟,您可以增強叢集應用程式的彈性並最大限度地降低停機風險。請始終參考SIOS文檔以及進一步指導和優化高可用性設定的最佳實踐。它是公開的並且非常全面!
SIOS 高可用性和災難復原
SIOS科技公司提供高可用性和災難復原透過針對最重要應用程式的叢集管理來保護和最佳化 IT 基礎架構的產品。今天聯繫我們有關我們的服務和專業支援的更多資訊。
經許可轉載安全作業系統