24 设定客体机高可用性
24 设定客体机高可用性
24.1 高可用性的必要条件
尽管PVE已经内建高可用性机制,不过要启用之前,还是有几个先决条件需要达成。
- 已建立好的丛集,且至少3个节点。
- 客体机磁碟存放在共用存储,或是本机储存搭配复写机制。
- 具作业系统级或硬体级的隔离装置(Fence Device)。
PVE的丛集功能中,只要1个节点即可建立丛集,但若要使用高可用性,则至少3个节点,这是为了维持丛集票数(Vote)能够判断谁是正确存活节点的重要机制,整个丛集至少要有51%的节点在线上才能维持正常运作;如果低于51%,节点会进入锁定状态,以保护客体机与相关设定,避免届时造成脑裂等不可回复的问题。
隔离装置预设会采用内建的作业系统级监测,主要是以Watchdog(看门狗)持续监测节点运作是否正常,若节点运作发生异常,它会让自己进入重新启动程序,来确认回复正常运作模式。
隔离机制的时间范围预设在60秒至120秒之间,也就是说,我们设定好高可用性后,当节点发生故障,该节点上的客体机最慢会在120秒以内启动容错移转,至其他节点上启动运作。
共用储存可以是iSCSI、NFS、CIFS、ZFS over iSCSI,或者是分散式档案系统Ceph、GlusterFS等,只要是PVE所支持的共用储存类型即可。
24.2 建立高可用性群组
- 预设并没有启动高可用性设定,请选取【资料中心】,切换至【HA】下的【群组】页签,再按下【建立】按钮。
- 进入高可用性群组的建立画面后,在【ID】栏位输入一个容易识别的名称。右方两个核取方块的功能,说明如下:
- Restricted(限定运作节点):在勾选这个项目的情况下,当下方清单中有勾选的节点全部故障后,如果有其他节点还正常运作、但没有被勾选的话,客体机也不会尝试在其他未勾选的节点上启动。
- Nofailback(不需容错回复):在勾选这个项目的情况下,客体机原本所在的节点发生故障,而在其他节点上启动起来运作,若原本所在的节点已经恢复上线运作,高可用性机制不会再自动将它迁移回去原本的节点。
通常我习惯的方式是勾选【nofailback】,这样的作法可避免故障的节点恢复上线后,马上触发许多客体机要迁移回原本节点,导致大量网路频宽与磁碟读写效能的占用情况,有需要迁移回去的经过人工判断后,再择期手动执行。
下方的节点清单中,可以勾选这个高可用性群组要适用至哪些节点,后方的【Priority】栏位是优先权设定,数字越高者会在高可用性机制运作时,优先将客体机在高优先权的节点启动,这部分请依据客体机的资源状况决定。
- 建立完成以后,可以在清单中看到已经多出了这一笔设定。
如果有不同的策略,例如:某些客体机特别重要,就可以建立一个可以在所有节点启动接手运作的群组;若】有一些客体机只能在某几个特定的节点才有足够的效能运作,则可以建立一个只有勾选特定节点的群组,并启用【Restricted】选项。
24.3 建立高可用性客体机
前面将高可用性群组建立完成后,即可开始将客体机加入高可用性资源清单里。
- 选取【资料中心】,切换至【HA】页签,再按下【增加】按钮。
- 进入高可用性资源增加视窗后,请在【VM】栏位中下拉选取要设定的客体机,本例选取【104】这一部客体机。
- 接着在【群组】栏位下拉选取这个客体机要套用的群组是哪一个,可以选取刚才所建立的【faster-nodes】这一个群组。
- 在【需求状态】栏位中,下拉选取客体机在高可用性机制启动后,移到另一个节点需要进行的动作:
- started:高可用性机制完成后,在另一个节点启动客体机(开机)。
- stopped:关机。
- ignored:不做任何处理。
- disabled:停止(关机)。
- 最多重新启动:如果启动失败,要再次尝试重新启动的上限次数。
- 最多重新迁移:如果无法启动,要迁往下一个节点的上限总次数。