7. 强制停止资源的详细信息

本章说明强制停止资源的详细信息。

7.1. 何谓强制停止功能?

当由于心跳中断而识别出宕机服务器时,从其他服务器(正常的服务器)强制停止宕机服务器的功能。
当服务器被识别为宕机时,它实际上可能由于服务器失速而暂时无法运行。在这种情况下,从宕机服务器将业务应用程序失效切换到正常的服务器之前,通过确保宕机服务器已切换到停止状态,可以减少从多个服务器访问同一资源并导致数据损坏的危险性。

强制停止宕机服务器的方法取决于配置集群的环境种类(物理机/虚拟机/Cloud)。使用强制停止功能时,请根据环境种类设置**强制停止资源**。

此外,也可以执行记述了停止宕机的服务器的处理的任意脚本。详情请参考"7.7. 理解使用任意脚本的强制停止"。

强制停止资源中有“执行强制停止”和“定期检查目标服务器可否被执行强制停止”两种操作。 各种操作内容和执行的时机如下。

  • 执行强制停止

    • 使用管理服务器状态的设备或基础架构系统的功能,强制停止宕机的服务器。

    • 识别服务器宕机时执行。详细的执行条件请参考“7.1.1. 强制停止的执行条件”。

  • 定期检查目标服务器可否被执行强制停止

    • 通过与将强制停止服务器的设备和基础架构系统进行通信,检查是否处于可以执行强制停止的状态。根据检查结果,强制停止资源的状态会变为“正常”(可以执行强制停止)或“异常”(不能执行强制停止)。

    • 在集群服务运行时定期执行。

7.1.1. 强制停止的执行条件

  • 以下情况不执行强制停止。

    • 服务器宕机前失效切换组已经正常停止时

    • 使用[clpdown]命令,Cluster WebUI关闭服务器,失效切换组已经正常停止时

    • 使用[clpcl]命令,Cluster WebUI停止集群,失效切换组已经正常停止时

    • 服务器宕机,但没有从宕机的服务器向其他服务器进行失效切换的失效切换组时。
      (包括宕机的服务器上没有启动失效切换组时。)
  • 以下情况执行强制停止。

    • 服务器宕机,且拥有从宕机的服务器向其他服务器进行失效切换的失效切换组时。

7.2. 理解物理环境下的强制停止

7.2.1. BMC 强制停止资源的设置

为了使用 BMC 强制停止资源,必须在每个集群服务器上安装 ipmitool。

在BMC强制停止资源中使用的命令

使用[ipmitool]命令强制停止物理设备,定期检查强制停止资源的状态,在执行强制停止后进行停止检查。

执行命令时请设置以下选项值。

[ipmitool]命令选项

BMC强制停止属性的
服务器列表的编辑[输入BMC]设置项

-N ip_address

IP地址

-U username

用户名

-P password

密码

BMC强制停止资源的强制停止时,执行以下命令。

强制停止动作

命令

BMC Power Off

ipmitool -H ip_address -U username -P password power off

BMC Reset

ipmitool -H ip_address -U username -P password power reset

BMC Power Cycle

ipmitool -H ip_address -U username -P password power cycle

BMC NMI

ipmitool -H ip_address -U username -P password power diag

以上命令失败时,执行以下命令。

强制停止动作

命令

BMC Power Off

ipmitool -H ip_address -I lanplus -U username -P password power off

BMC Reset

ipmitool -H ip_address -I lanplus -U username -P password power reset

BMC Power Cycle

ipmitool -H ip_address -I lanplus -U username -P password power cycle

BMC NMI

ipmitool -H ip_address -I lanplus -U username -P password power diag

BMC强制停止资源的定期检查以及执行强制停止后的停止检查时,执行以下命令。

定期检查命令
停止检查命令

ipmitool -H ip_address -U username -P password power status

以上命令失败时,执行以下命令。

定期检查命令
停止检查命令

ipmitool -H ip_address -I lanplus -U username -P password power status

7.2.2. BMC 强制停止资源的注意事项

  • 关于ipmitool命令的注意事项
  • 关于强行停止的影响
    使用强行停止功能时,不论OS和服务器状态如何,都将强行执行Power off, Reset,PowerCycle,NMI,所以以下功能会受到影响。
    • 轮询收集
      因为无法识别是否正在收集轮询信息,因此即使正在收集轮询,也会发生Power off, Reset,PowerCycle,从而导致轮询不能完成收集。
    • 心跳超时以内的电源关闭操作
      心跳超时时间内因为维护等目的重新打开服务器的电源时,心跳超时时间超过后,可执行会发生Power off,Reset,Power cycle,NMI。
  • 关于BMC的网络设置
    使用强制停止资源时,请设置禁用 iLO 共享网络端口。
    请通过设置保证BMC管理用LAN端口的IP地址和OS所使用的IP地址之间能够进行通信。在BMC管理用网络阻塞的情况下不能使用该功能。
    请将与BMC的管理用LAN端口中设置的IP地址相同的IP地址,从BMC强制停止属性的服务器列表标签页的编辑按钮设置为输入BMC。
    关于BMC管理用LAN端口的IP地址等的设置方法,请参考服务器的手册等资料。
  • 使用强制停止功能时,必须设置每台服务器BMC的IP地址、用户名和密码。 请务必设置已注册密码的用户名。

7.3. 理解vCenter环境中的强制停止

7.3.1. vCenter 强制停止资源的设置

vCenter强制停止资源有两种使用方法:使用vSphere Automation API的方法和使用VMware vSphere Command Line Interface (vCLI) 的方法。

在VMware vSphere 7.0 Update 3或更高版本的环境中无法使用VMware vSphere Command Line Interface (vCLI)。此外,无法在早于VMware vSphere 7.0 Update 2的环境中使用vSphere Automation API。

vCenter 强制停止资源的参数设置

请在vCenter强制停止资源中设置以下参数。
vSphere Automation API是在请求中指定的参数。
VMware vSphere Command Line Interface (vCLI) 是在命令选项中指定的参数。
参数

vCenter强制停止属性的vCenter标签页的设置项

vCenter强制停止属性的
服务器列表的编辑[输入虚拟机名]设置项

ip_address

IP地址

-

username

用户名

-

password

密码

-

virtualmachine

-

虚拟机名

datacenter

-

数据中心名

在vCenter强制停止资源中使用的API

在vCenter强制停止资源中使用了vSphere Automation API 时,以下API将被执行。

创建会话,并获取会话ID(api_session_id)。

创建会话

curl -k -X POST -u {username}:{password} https://{ip_address}/api/session

从数据中心信息中获取数据中心ID(datacenter_id)。

获取数据中心信息

curl -k -X GET https://{ip_address}/api/vcenter/datacenter?names={datacenter} -H "vmware-api-session-id: {api_session_id}"

从虚拟机信息中获取电源状态和虚拟机ID(vm_id)。
电源状态用于vCenter强制停止资源的定期检查和执行强制停止后的停止检查。

获取虚拟机信息

curl -k -X GET https://{ip_address}/api/vcenter/vm?names={virtualmachine}&datacenters={datacenter_id} -H "vmware-api-session-id: {api_session_id}"

执行虚拟机的客户机OS的强制停止。

强制停止

poweroff

curl -k -X POST https://{ip_address}/api/vcenter/vm/{vm_id}/power?action=stop -H "vmware-api-session-id: {api_session_id}"

reset

curl -k -X POST https://{ip_address}/api/vcenter/vm/{vm_id}/power?action=reset -H "vmware-api-session-id: {api_session_id}"

删除创建的会话。

会话删除

curl -k -X DELETE https://{ip_address}/api/session -H "vmware-api-session-id: {api_session_id}"

在vCenter强制停止资源中使用的vCLI命令

使用VMware vSphere Command Line Interface (vCLI)的[vmcontrol]命令强制停止虚拟机的客户OS。

使用[vminfo]命令进行强制停止资源的状态定期检查,执行强制停止后的停止检查。

vCenter强制停止资源的强制停止时会执行以下命令。

强制停止

poweroff

vmcontrol.pl --server ip_address --username username --password password --vmname virtualmachine --datacenter datacenter --operation poweroff

reset

vmcontrol.pl --server ip_address --username username --password password --vmname virtualmachine --datacenter datacenter --operation reset

vCenter强制停止资源的定期检查时会执行以下命令。

定期检查命令

vminfo.pl --server ip_address --username username --password password --vmname virtualmachine --datacenter datacenter --powerstatus "poweredOn"

vCenter执行强制停止后的停止检查时会执行以下命令。

停止检查命令

vminfo.pl --server ip_address --username username --password password --vmname virtualmachine --datacenter datacenter --powerstatus "poweredOff"

7.3.2. vCenter 强制停止资源的注意事项

  • 关于虚拟机的客户机OS的强制停止
    只可以执行power off、reset。此外,以下情况下不能使用本功能。
    • vSphere基础架构 :没有与VMware vCenter Server进行通信。

  • 关于强制停止的影响点
    如果使用强制停止功能,则不论OS或服务器处于何种状态,都会进行强制的power off,reset,因此以下功能将受到影响。
    • Dump收集
      由于无法识别是否正在进行Dump收集,所以即便正在进行Dump收集处理,也会发生power off,reset,无法完成Dump收集。
    • 心跳超时以内的电源开启操作
      在心跳超时时间内以维护等为目的再次开启服务器电源时,超过心跳超时时间后,有时也会发生power off,reset。

7.4. 理解AWS环境中的强制停止

7.4.1. AWS 强制停止资源的设置

为了使用AWS强制停止资源,必须安装AWS Command Line Interface (AWS CLI)。

关于AWS CLI的获取和安装方法,请参考《开始指南》的"注意限制事项"的"安装OS后,安装EXPRESSCLUSTER前"的"AWS环境中的时刻同步"以及"关于AWS环境中IAM的设置"。

在AWS强制停止资源中使用的命令

使用AWS Command Line Interface (AWS CLI)命令,进行AWS实例的强制停止、强制停止资源的状态定期检查、执行强制停止后的停止检查。

执行命令时请设置以下选项值。

命令选项
AWS强制停止属性的
服务器列表的编辑[输入实例]设置项

--instance-ids instance-ids

实例ID

AWS强制停止资源的强制停止时执行以下命令。

强制停止动作

命令

stop

aws ec2 stop-instances --instance-ids instance-ids --force

reboot

aws ec2 reboot-instances --instance-ids instance-ids

AWS强制停止资源的定期检查时执行以下命令。

强制停止动作

定期检查命令

stop

aws ec2 stop-instances --instance-ids instance-ids --dry-run
aws ec2 describe-instances --instance-ids instance-ids
aws ec2 describe-instance-attribute --instance-ids instance-ids --attribute disableApiStop

reboot

aws ec2 reboot-instances --instance-ids instance-ids --dry-run
aws ec2 describe-instances --instance-ids instance-ids

AWS执行强制停止后的停止检查时执行以下命令。

停止检查命令

aws ec2 describe-instances --instance-ids instance-ids --filters \"Name=instance-state-name,Values=stopped\"

7.4.2. 使命令行选项反映到AWS强制停止资源执行的AWS CLI中

7.4.3. 使环境变量反映到AWS强制停止资源执行的AWS CLI中

7.4.4. AWS 强制停止资源的注意事项

  • 关于虚拟机的客户机OS的强制停止
    只可以执行stop 、reboot操作。此外,以下情况下不能使用本功能。
  • 关于强制停止的影响点
    如果使用强制停止功能,则不论OS或服务器处于何种状态,都会进行强制的power off,reset,因此以下功能将受到影响。
    • Dump收集
      由于无法识别是否正在进行Dump收集,所以即便正在进行Dump收集处理,也会发生power off,reset,无法完成Dump收集。
    • 心跳超时以内的电源开启操作
      在心跳超时时间内以维护等为目的再次开启服务器电源时,超过心跳超时时间后,有时也会发生power off,reset。
  • 关于AWS的[停止保护]设置
    如果在[实例设置]中启用[停止保护],将[强制停止动作]设置为[stop],则强制停止和定期检查会失败。
    如果在ExpressCluster中使用强制停止功能,并且将[强制停止动作]设置为[stop],则请勿启用该设置。
  • 关于集群配置
    如果是在多地区环境下配置的集群,无法使用强制停止功能。

7.5. 理解Azure环境中的强制停止

7.5.1. Azure 强制停止资源的设置

为了使用Azure强制停止资源,必须要安装Azure CLI。

在Azure强制停止资源中使用的命令

使用Azure CLI命令,进行Azure实例的强制停止、强制停止资源状态的定期检查、执行强制停止后的停止检查。

执行命令时请设置以下选项值。

命令选项

Azure强制停止属性的Azure标签页的设置项

Azure强制停止属性的
服务器列表的编辑[输入虚拟机名]设置项

--name/-n

-

虚拟机名

--username/-u

用户URI

-

--tenant/-t

租户ID

-

--password/-p

服务主体的文件路径

-

--resource-group/-g

资源组名

-

为了使用Azure CLI命令执行以下命令。

登录到Azure CLI

az login --service-principal -u MyUserUri -p MyCertfile.pem --tenant MyTenantId

Azure强制停止资源的强制停止时执行以下命令。

强制停止动作

命令

stop and deallocate 1

az vm deallocate -g MyResourceGroup -n MyVm --no-wait

stop only 2

az vm stop -g MyResourceGroup -n MyVm --no-wait --skip-shutdown

reboot

az vm restart -g MyResourceGroup -n MyVm --no-wait

1

通过关闭序列停止实例。此外,已分配的资源(公共IP地址等)会被释放,因此不会产生费用。

2

不通过关闭序列停止实例。但是,已分配的资源会被保留,因此会继续产生费用。

Azure强制停止资源的定期检查时执行以下命令。

定期检查命令

az vm update -g MyResourceGroup -n MyVm --no-wait

az vm get-instance-view -g MyResourceGroup -n MyVm

Azure执行强制停止后的停止检查时执行以下命令。

停止检查命令

az vm get-instance-view -g MyResourceGroup -n MyVm --query instanceView.statuses[1].displayStatus --output tsv

7.5.2. Azure 强制停止资源的注意事项

  • 关于虚拟机的客户机OS的强制停止
    可以执行停止(stop and deallocate, stop only)或重启(reboot)操作。
  • 关于强制停止的影响点
    如果使用强制停止功能,则不论OS或服务器处于何种状态,都会进行强制的power off,reset,因此以下功能将受到影响。
    • Dump收集
      由于无法识别是否正在进行Dump收集,所以即便正在进行Dump收集处理,也会发生power off,reset,无法完成Dump收集。
    • 心跳超时以内的电源开启操作
      在心跳超时时间内以维护等为目的再次开启服务器电源时,超过心跳超时时间后,有时也会发生power off,reset。
  • 关于集群配置
    如果是在多地区环境下配置的集群,无法使用强制停止功能。

7.6. 理解OCI环境中的强制停止

7.6.1. OCI 强制停止资源的设置

为了使用OCI强制停止资源,必须要安装Oracle Cloud Infrastructure CLI (OCI CLI)。

关于OCI CLI的获取和安装方法,请参考《开始指南》的"注意限制事项"的"安装OS后,安装EXPRESSCLUSTER前"的"关于OCI环境中CLI的设置"。

在OCI强制停止资源中使用的命令

使用Oracle Cloud Infrastructure CLI (OCI CLI)命令,进行OCI实例的强制停止、强制停止资源状态的定期检查、执行强制停止后的停止检查。

执行命令时请设置以下选项值。

命令选项
OCI强制停止属性的
服务器列表的编辑[输入实例]设置项

--instance-ids instance-ids

实例ID

OCI强制停止资源的强制停止时执行以下命令。

强制停止动作

命令

stop

oci compute instance action --action STOP --instance-id instance-ids

reboot

oci compute instance action --action RESET --instance-id instance-ids

OCI强制停止资源的定期检查时执行以下命令。

定期检查命令

oci compute instance update --instance-id instance-ids --wait-for-state RUNNING ––max-wait-seconds 1

OCI执行强制停止后的停止检查时执行以下命令。

停止检查命令

oci compute instance get --instance-id instance-ids | grep lifecycle-state | awk -F" '{print $4}'

7.6.2. OCI 强制停止资源的注意事项

  • 关于虚拟机的客户机OS的强制停止
    只可以执行stop 、reboot操作。此外,以下情况下不能使用本功能。
  • 关于强制停止的影响点
    如果使用强制停止功能,则不论OS或服务器处于何种状态,都会进行强制的power off,reset,因此以下功能将受到影响。
    • Dump收集
      由于无法识别是否正在进行Dump收集,所以即便正在进行Dump收集处理,也会发生power off,reset,无法完成Dump收集。
    • 心跳超时以内的电源开启操作
      在心跳超时时间内以维护等为目的再次开启服务器电源时,超过心跳超时时间后,有时也会发生power off,reset。
  • 关于集群配置
    如果是在多地区环境下配置的集群,无法使用强制停止功能。

7.7. 理解使用任意脚本的强制停止

7.7.1. 自定义强制停止资源的设置

当服务器识别为宕机时,在剩余的服务器中(正常的服务器)执行用户创建的任意脚本的功能。

通过编写脚本,可以强制停止宕机的服务器。

编写的脚本在“执行强制停止”和“定期检查目标服务器可否被执行强制停止”两种操作中执行。 为了确保根据操作能进行适当的处理,使用稍后描述的环境变量描述条件分支处理。

在任意脚本中使用的环境变量

执行脚本时,EXPRESSCLUSTER 设置环境变量,其中包含是否执行定期检查或强制停止以及哪个服务器宕机等信息。

在脚本中,可以使用下图的环境变量。

环境变量

环境变量的值

意思

CLP_FORCESTOP_MODE
・・・模式
0 : 定期检查时
1 : 执行强制停止时
表示执行的模式。
可以用于对每个模式进行分支处理。
CLP_SERVER_DOWN
・・・宕机服务器名

服务器名

表示宕机的服务器名。
定期检查时设置"" 。
CLP_SERVER_LOCAL
・・・本地服务器名

服务器名

表示执行脚本的服务器名。

任意脚本的返回值

脚本正常终了时请返回0。

关于设置自定义强制停止资源的详细内容请参考本指南的"2. 参数的详细信息" - "集群属性" - "Fencing 标签页" - "强制停止" - "自定义强制停止的属性"。

7.7.2. 自定义强制停止资源的注意事项

  • 请客户将停止服务器的处理记入到强制停止脚本中。

  • 如果不存在应作为定期检查执行的处理,请描述该处理,使其在作为定期检查执行时不做任何处理而结束(返回返回值 0)。

7.8. 强制停止资源的设置相关注意事项

  • 一个集群只能设置一个强制停止资源。

  • 设置强制停止资源时,建议同时设置网络分区解决资源。

  • 设置强制停止资源时,需要将组成集群的所有服务器设置为使用强制停止资源。

  • 为了防止在强制停止资源运行时失效切换组的两个系统都启动,请按如下方法设置服务启动延迟时间。

    服务启动延迟时间 >= 强制停止资源的强制停止超时时间 + 强制停止资源的停止完成等待时间 + 心跳超时时间 + 心跳间隔时间

    关于服务启动延迟时间,请参考“调整EXPRESSCLUSTER的服务启动时间(必须)”。