高可用性#
本文档是 NVIDIA DGX BasePOD:部署指南,以 NVIDIA DGX A100 系统为特色 的一部分。
警告
#
提示符表示您以 root 用户身份在头节点上执行的命令。%
提示符表示您在 cmsh 中执行的命令。
配置高可用性#
本节介绍如何使用 cmha-setup CLI 向导配置高可用性 (HA)。
确保两个头节点都已获得许可。
我们在安装集群许可证时提供了辅助头的 MAC 地址。有关详细信息,请参阅 集群配置步骤。
1% main licenseinfo | grep ^MAC 2MAC address / Cloud ID 04:3F:72:E7:67:07|14:02:EC:DA:AF:18
配置 NFS 共享存储。
在 fsmounts 中配置的挂载将由 CMDaemon 自动挂载。
1% device 2% use master 3% fsmounts 4% add /nfs/general 5% set device 10.227.48.252:/var/nfs/general 6% set filesystem nfs 7% commit 8% show 9Parameter Value 10---------------------------- ------------------------------------------------ 11Device 10.227.48.252:/var/nfs/general 12Revision 13Filesystem nfs 14Mountpoint /nfs/general 15Dump no 16RDMA no 17Filesystem Check NONE 18Mount options defaults
验证共享存储已挂载。
1# mount | grep '/nfs/general' 210.227.48.252:/var/nfs/general on /nfs/general type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.130.12210.227.48_lock=none,addr=10.130.122.252)10.227.48
验证头节点是否具有对集群节点的电源控制。
1% device 2% power -c dgx,k8s-master status 3[basepod-head1->device]% power -c dgx,k8s-master status 4ipmi0 .................... [ ON ] dgx01 5ipmi0 .................... [ ON ] dgx02 6ipmi0 .................... [ ON ] dgx03 7ipmi0 .................... [ ON ] dgx04 8ipmi0 .................... [ ON ] knode01 9ipmi0 .................... [ ON ] knode02 10ipmi0 .................... [ ON ] knode03 11[basepod-head1->device]%
关闭集群节点的电源。在配置 HA 之前,必须关闭集群节点的电源。
1% power -c k8s-master,dgx off 2ipmi0 .................... [ OFF ] knode01 3ipmi0 .................... [ OFF ] knode02 4ipmi0 .................... [ OFF ] knode03 5ipmi0 .................... [ OFF ] dgx01 6ipmi0 .................... [ OFF ] dgx02 7ipmi0 .................... [ OFF ] dgx03 8ipmi0 .................... [ OFF ] dgx04
在主头节点上以 root 用户身份启动 cmha-setup CLI 向导。
1# cmha-setup
选择 Setup,然后选择 SELECT。
选择 Configure,然后选择 NEXT。
验证向导找到的集群许可证信息是否正确,然后选择 CONTINUE。
配置一个外部虚拟 IP 地址,供 HA 配置中的活动头节点使用,然后选择 NEXT。
这将是应始终用于访问活动头节点的 IP 地址。
提供一个内部虚拟 IP 地址,供 HA 配置中的活动头节点使用,然后选择 NEXT。
提供辅助头节点的名称,然后选择 NEXT。
DGX BasePOD 使用内部网络作为故障转移网络,因此选择 SKIP。
配置辅助头节点的 IP 地址,然后选择 NEXT。
查看配置摘要,然后选择 NEXT。
此屏幕显示将分配给内部和外部接口的 VIP。
选择 Yes 以继续故障转移配置。
输入 MySQL root 密码,然后选择 OK。这应与 root 密码相同。
向导实现 HA 配置的第一步。如果所有步骤都显示 OK,请按 ENTER 继续。进度如下所示
1Initializing failover setup on master.............. [ OK ] 2Updating shared internal interface................. [ OK ] 3Updating shared external interface................. [ OK ] 4Updating extra shared internal interfaces.......... [ OK ] 5Cloning head node.................................. [ OK ] 6Updating secondary master interfaces............... [ OK ] 7Updating Failover Object........................... [ OK ] 8Restarting cmdaemon................................ [ OK ] 9Press any key to continue
当主 master 上的故障转移设置安装完成后,选择 OK 退出向导。
PXE 启动辅助头节点,然后从 grub 菜单中选择 RESCUE。
由于这是此节点的初始启动,因此必须在 Base Command Manager (BMC 或物理电源按钮) 之外完成。
在辅助头节点启动到救援环境后,运行 /cm/cm-clone-install –failover 命令,然后在提示时输入 yes。
辅助头节点将从主节点克隆。
克隆完成后,输入 y 以重新启动辅助头节点。
辅助节点必须从其硬盘驱动器启动。不应启用 PXE 启动。
等待辅助头节点重新启动,然后在主头节点上继续 HA 设置过程。
从 cmha-setup 菜单中选择 finalize,然后选择 NEXT。
这会将 MySQL 数据库从主节点克隆到辅助头节点。
在确认屏幕上选择 CONTINUE。
输入 MySQL root 密码,然后选择 OK。这应与 root 密码相同。
cmha-setup 向导继续。在提示时按 ENTER 继续。
进度如下所示
1Updating secondary master mac address.............. [ OK ] 2Initializing failover setup on basepod-head2....... [ OK ] 3Stopping cmdaemon.................................. [ OK ] 4Cloning cmdaemon database.......................... [ OK ] 5Checking database consistency...................... [ OK ] 6Starting cmdaemon, chkconfig services.............. [ OK ] 7Cloning workload manager databases................. [ OK ] 8Cloning additional databases....................... [ OK ] 9Update DB permissions.............................. [ OK ] 10Checking for dedicated failover network............ [ OK ] 11Press any key to continue
当显示 WARNING: REBOOT REQUIRED 屏幕时,选择 REBOOT。
等待辅助头节点重新启动,然后再继续。
辅助头节点现在已启动。
1% device list -f hostname:20,category:12,ip:20,status:15 2hostname (key) category ip status 3-------------------- ---------- -------------------- --------------- 4basepod-head1 10.227.48.254 [ UP ] 5basepod-head2 10.227.48.253 [ UP ] 6knode01 k8s-master 10.227.48.9 [ DOWN ] 7knode02 k8s-master 10.227.48.10 [ DOWN ] 8knode03 k8s-master 10.227.48.11 [ DOWN ] 9dgx01 dgx 10.227.48.5 [ DOWN ] 10dgx02 dgx 10.227.48.6 [ DOWN ] 11dgx03 dgx 10.227.48.7 [ DOWN ] 12dgx04 dgx 10.227.48.8 [ DOWN ]
从 cmha-setup 菜单中选择 Shared Storage,然后选择 SELECT。
在此最终 HA 配置步骤中,cmha-setup 会将 /cm/shared 和 /home 目录复制到共享存储,并配置两个头节点和所有集群节点来挂载它。
选择 NAS,然后选择 SELECT。
选择 /cm/shared 和 /home,然后选择 NEXT。
提供 NAS 主机的 IP 地址,以及应将 /cm/shared 和 /home 目录复制到的共享存储路径,然后选择 NEXT。
在本例中,/var/nfs/general 已导出,因此 /cm/shared 目录将被复制到 10.227.48.252:/var/nfs/general/cmshared,并将挂载到集群节点上的 /cm/shared 上。
向导显示它收集的信息摘要。按 ENTER 继续。
在提示是否继续设置时,选择 YES。
cmha-setup 向导继续工作。完成后,选择 ENTER 完成 HA 设置。
进度如下所示
1Copying NAS data................................... [ OK ] 2Mount NAS storage.................................. [ OK ] 3Remove old fsmounts................................ [ OK ] 4Add new fsmounts................................... [ OK ] 5Remove old fsexports............................... [ OK ] 6Write NAS mount/unmount scripts.................... [ OK ] 7Copy mount/unmount scripts......................... [ OK ] 8Press any key to continue
cmha-setup 现在已完成。选择 EXIT 返回到 shell 提示符。
验证高可用性设置#
运行 cmha status 命令以验证故障转移配置是否正确且按预期工作。
请注意,该命令从两个方向测试配置:从主头节点到辅助节点,以及从辅助节点到主节点。活动头节点用星号表示。
1# cmha status 2Node Status: running in active mode 3 4basepod-head1* -> basepod-head2 5mysql [ OK ] 6ping [ OK ] 7status [ OK ] 8 9basepod-head2 -> basepod-head1* 10mysql [ OK ] 11ping [ OK ] 12status [ OK ]
验证 /cm/shared 和 /home 目录是否正在从 NAS 服务器挂载。
1# mount 2. . . some output omitted . . . 310.227.48.252:/var/nfs/general/cmshared on /cm/shared type nfs4 (rw,relatime,vers=4.2,rsize=32768,wsize=32768,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.130.12210.227.48_lock=none,addr=10.130.122.252)10.227.48 410.227.48.252:/var/nfs/general/home on /home type nfs4 (rw,relatime,vers=4.2,rsize=32768,wsize=32768,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.130.12210.227.48_lock=none,addr=10.130.122.252)10.227.48
登录到要设为活动的头节点,并运行 cmha makeactive。
1# ssh basepod-head2 2# cmha makeactive 3========================================================================= 4This is the passive head node. Please confirm that this node should become 5the active head node. After this operation is complete, the HA status of 6the head nodes will be as follows: 7 8basepod-head2 will become active head node (current state: passive) 9basepod-head1 will become passive head node (current state: active) 10========================================================================= 11 12Continue(c)/Exit(e)? c 13 14Initiating failover.............................. [ OK ] 15 16basepod-head2 is now active head node, makeactive successful
再次运行 cmha status 命令以验证辅助头节点是否已成为活动头节点。
1# cmha status 2Node Status: running in active mode 3 4basepod-head2* -> basepod-head1 5mysql [ OK ] 6ping [ OK ] 7status [ OK ] 8 9basepod-head1 -> basepod-head2* 10mysql [ OK ] 11ping [ OK ] 12status [ OK ]
手动故障回复到主头节点。
1# ssh basepod-head1 2# cmha makeactive 3 4=========================================================================== 5This is the passive head node. Please confirm that this node should become 6the active head node. After this operation is complete, the HA status of 7the head nodes will be as follows: 8 9basepod-head1 will become active head node (current state: passive) 10basepod-head2 will become passive head node (current state: active) 11=========================================================================== 12 13Continue(c)/Exit(e)? c 14 15Initiating failover.............................. [ OK ] 16 17basepod-head1 is now active head node, makeactive successful
再次运行 cmsh status 以验证主头节点是否已成为活动头节点。
1# cmha status 2Node Status: running in active mode 3 4basepod-head1* -> basepod-head2 5mysql [ OK ] 6ping [ OK ] 7status [ OK ] 8 9basepod-head2 -> basepod-head1* 10mysql [ OK ] 11ping [ OK ] 12status [ OK ]
开启集群节点的电源。
1# cmsh -c “power -c k8s-master,dgx on” 2ipmi0 .................... [ ON ] knode01 3ipmi0 .................... [ ON ] knode02 4ipmi0 .................... [ ON ] knode03 5ipmi0 .................... [ ON ] dgx01 6ipmi0 .................... [ ON ] dgx02 7ipmi0 .................... [ ON ] dgx03 8ipmi0 .................... [ ON ] dgx04
(可选)配置 Jupyter 高可用性#
如果在配置 HA 之前在主头节点上部署了 Jupyter,请配置 Jupyter 服务以在活动头节点上运行。
1% device 2% use basepod-head1 3% services 4% use cm-jupyterhub 5% show 6Parameter Value 7-------------------------------- -------------------------------------------- 8Revision 9Service cm-jupyterhub 10Run if ALWAYS 11Monitored yes 12Autostart yes 13Timeout -1 14Belongs to role yes 15Sickness check script 16Sickness check script timeout 10 17Sickness check interval 60
将 runif 参数设置为 active。
1% set runif active 2% commit 3 4% show 5Parameter Value 6-------------------------------- -------------------------------------------- 7Revision 8Service cm-jupyterhub 9Run if ACTIVE 10Monitored yes 11Autostart yes 12Timeout -1 13Belongs to role yes 14Sickness check script 15Sickness check script timeout 10 16Sickness check interval 60
在辅助头节点上配置 Jupyter 服务。
1% device 2% use basepod-head2 3% services 4% use cm-jupyterhub 5% set runif active