7. 強制停止リソースの詳細

本章では、強制停止リソースの詳細について説明します。

7.1. 強制停止機能とは?

ハートビートの途絶によりサーバのダウンを認識したときに、残りのサーバ (正常なサーバ) からダウンしたサーバを強制的に停止させる機能です。
サーバがダウンしたと認識されたとき、実際にはサーバのストールにより一時的に動作不能になっている場合等があります。このような場合に、ダウンしたサーバから健全なサーバに業務アプリケーションをフェイルオーバする前に、ダウンしたサーバを確実に停止状態に移行させることにより、同一資源を複数のサーバからアクセスしデータ破壊を引き起こす危険性を減らすことができます。

ダウンしたサーバを強制的に停止させる方法は、クラスタを構築した環境の種類 (物理マシン・仮想マシン・クラウド) によって異なります。強制停止機能を使用する場合は、その環境の種類に対応した 強制停止リソース を設定してください。

また、ダウンしたサーバを停止させる処理を記述した任意のスクリプトを実行することもできます。詳細は「7.7. 任意のスクリプトを使用した強制停止を理解する」を参照してください。

強制停止リソースには「強制停止実行」と「定期チェック」という2種類の動作があります。 それぞれの動作内容や実行されるタイミングは以下のとおりです。

  • 強制停止実行

    • サーバの状態を管理する装置や基盤システムの機能を使用して、ダウンしたサーバを強制的に停止します。

    • サーバのダウンを認識したときに実行されます。詳細な実行条件は「7.1.1. 強制停止実行条件」を参照してください。

  • 定期チェック

    • サーバを強制停止する装置や基盤システムと通信を行うことにより、強制停止を実行できる状態であるかどうかをチェックします。チェックの結果に応じて、強制停止リソースのステータスは "正常" (強制停止を実行可能) または "異常" (強制停止を実行不可能) に変化します。

    • クラスタサービス起動中に、一定時間ごとに実行されます。

7.1.1. 強制停止実行条件

  • 以下の場合には強制停止を実行しません。

    • サーバダウンする前にフェイルオーバグループが正常に停止した場合

    • [clpdown] コマンド、OS のシャットダウンコマンド、Cluster WebUI でサーバをシャットダウンし、フェイルオーバグループが正常に停止した場合

    • [clpcl] コマンド、Cluster WebUI でクラスタを停止し、フェイルオーバグループが正常に停止した場合

    • サーバがダウンし、ダウンしたサーバから他のサーバにフェイルオーバさせるフェイルオーバグループが無い場合。
      (ダウンしたサーバでフェイルオーバグループが活性していない場合も含みます。)
  • 以下の場合には強制停止を実行します。

    • サーバがダウンし、ダウンしたサーバから他のサーバにフェイルオーバさせるフェイルオーバグループが有る場合。

7.2. 物理環境における強制停止を理解する

7.2.1. BMC 強制停止リソースの設定

BMC 強制停止リソースを使用するためには、各クラスタサーバに ipmitool をインストールする必要があります。

BMC 強制停止リソースで使用するコマンド

物理マシンの強制停止、強制停止リソースの状態定期チェック、強制停止実行後の停止チェックには、[ipmitool] コマンドを使用します。

コマンド実行時の下記のオプション値を設定してください。

[ipmitool] コマンドのオプション

BMC強制停止のプロパティの
サーバ一覧の編集[BMCの入力]設定項目

-H ip_address

IPアドレス

-U username

ユーザ名

-P password

パスワード

BMC 強制停止リソースの強制停止では以下のコマンドが実行されます。

強制停止アクション

コマンド

BMC パワーオフ

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

BMC リセット

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

BMC パワーサイクル

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

BMC NMI

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

上記コマンドに失敗した場合以下のコマンドを実行します。

強制停止アクション

コマンド

BMC パワーオフ

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

BMC リセット

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

BMC パワーサイクル

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 やサーバの状態によらず強制的にパワーオフ、リセット、パワーサイクル、NMI を行うため以下の機能が影響を受けます。
    • ダンプ採取
      ダンプ採取中であることが認識できないので、ダンプ採取の処理中であってもパワーオフ、リセット、パワーサイクルが発生しダンプ採取が完了しません。
    • ハートビートタイムアウト以内の電源オン操作
      ハートビートタイムアウト時間内に保守などの目的でサーバの電源を再度オンにした場合、ハートビートタイムアウト経過後にパワーオフ、リセット、パワーサイクル、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の強制停止を実行します。

強制停止

パワーオフ

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

リセット

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 コマンド

仮想マシンのゲストOSの強制停止には、VMware vSphere Command Line Interface (vCLI) の [vmcontrol] コマンドを使用します。
強制停止リソースの状態定期チェック、強制停止実行後の停止チェックには [vminfo] コマンドを使用します。
vCenter 強制停止リソースの強制停止では以下のコマンドが実行されます。

強制停止コマンド

パワーオフ

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

リセット

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の強制停止について
    パワーオフ動作、リセット動作のみが実行可能です。また、以下の場合に本機能は使用できません。
    • vSphere基盤 : VMware vCenter Serverとの通信が行えない場合
  • 強制停止の影響点について
    強制停止機能を使用すると OS やサーバの状態によらず強制的にパワーオフ、リセットを行うため以下の機能が影響を受けます。
    • ダンプ採取
      ダンプ採取中であることが認識できないので、ダンプ採取の処理中であってもパワーオフ、リセットが発生しダンプ採取が完了しません。
    • ハートビートタイムアウト以内の電源オン操作
      ハートビートタイムアウト時間内に保守などの目的でサーバの電源を再度オンにした場合、ハートビートタイムアウト経過後にパワーオフ、リセットが発生することがあります。

7.4. AWS 環境における強制停止を理解する

7.4.1. AWS 強制停止リソースの設定

AWS 強制停止リソースを使用するためには、AWS Command Line Interface (AWS CLI)をインストールする必要があります。

AWS CLI の入手方法とインストール方法については『スタートアップガイド』 - 「注意制限事項」- 「OS インストール後、CLUSTERPRO インストール前」 - 「AWS 環境における時刻同期」および「AWS環境におけるIAMの設定について」および「AWS CLIのインストールパスについて」を参照してください。

AWS 強制停止リソースで使用するコマンド

AWS インスタンスの強制停止、強制停止リソースの状態定期チェック、強制停止実行後の停止チェックには、AWS Command Line Interface (AWS CLI)のコマンドを使用します。

コマンド実行時の下記のオプション値を設定してください。

コマンドの
オプション
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 強制停止リソースの注意事項

  • インスタンスの強制停止について
    stop 動作、reboot 動作のみが実行可能です。
  • 強制停止の影響点について
    強制停止機能を使用すると OS やサーバの状態によらず強制的に stop、reboot を行うため以下の機能が影響を受けます。
    • ダンプ採取
      ダンプ採取中であることが認識できないので、ダンプ採取の処理中であっても stop、reboot が発生しダンプ採取が完了しません。
    • ハートビートタイムアウト以内の電源オン操作
      ハートビートタイムアウト時間内に保守などの目的でサーバの電源を再度オンにした場合、ハートビートタイムアウト経過後に stop、reboot が発生することがあります。
  • AWS の [停止保護] の設定について
    [インスタンスの設定]の[停止保護]を有効化している場合、[強制停止アクション]を [stop] に設定していると強制停止と定期チェックが失敗します。
    CLUSTERPRO で強制停止機能を使用していて、かつ[強制停止アクション]を [stop] に設定する場合は、本設定は有効化しないでください。
  • クラスタ構成について
    マルチリージョン環境で構成されたクラスタの場合、強制停止機能は使用できません。

7.5. Azure 環境における強制停止を理解する

7.5.1. Azure 強制停止リソースの設定

Azure 強制停止リソースを使用するためには、Azure CLI をインストールする必要があります。

Azure 強制停止リソースで使用するコマンド

Azure インスタンスの強制停止、強制停止リソースの状態定期チェック、強制停止実行後の停止チェックには、Azure CLI のコマンドを使用します。

コマンド実行時の下記のオプション値を設定してください。

コマンドのオプション

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 強制停止リソースの注意事項

  • インスタンスの強制停止について
    停止(stop and deallocate, stop only)または再起動(reboot) 動作が実行可能です。
  • 強制停止の影響点について
    強制停止機能を使用すると OS やサーバの状態によらず強制的に 停止または再起動 を行うため以下の機能が影響を受けます。
    • ダンプ採取
      ダンプ採取中であることが認識できないので、ダンプ採取の処理中であっても 停止または再起動 が発生しダンプ採取が完了しません。
    • ハートビートタイムアウト以内の電源オン操作
      ハートビートタイムアウト時間内に保守などの目的でサーバの電源を再度オンにした場合、ハートビートタイムアウト経過後に 停止または再起動 が発生することがあります。
  • クラスタ構成について
    マルチリージョン環境で構成されたクラスタの場合、強制停止機能は使用できません。

7.6. OCI 環境における強制停止を理解する

7.6.1. OCI 強制停止リソースの設定

OCI 強制停止リソースを使用するためには、Oracle Cloud Infrastructure CLI (OCI CLI)をインストールする必要があります。

OCI CLI の入手方法とインストール方法については『スタートアップガイド』 - 「注意制限事項」- 「OS インストール後、CLUSTERPRO インストール前」 - 「OCI 環境における CLI の設定について」を参照してください。

OCI 強制停止リソースで使用するコマンド

OCI インスタンスの強制停止、強制停止リソースの状態定期チェック、強制停止実行後の停止チェックには、Oracle Cloud Infrastructure CLI (OCI CLI)のコマンドを使用します。

コマンド実行時の下記のオプション値を設定してください。

コマンドの
オプション
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 強制停止リソースの注意事項

  • インスタンスの強制停止について
    stop 動作、reboot 動作のみが実行可能です。
  • 強制停止の影響点について
    強制停止機能を使用すると OS やサーバの状態によらず強制的に stop、reboot を行うため以下の機能が影響を受けます。
    • ダンプ採取
      ダンプ採取中であることが認識できないので、ダンプ採取の処理中であっても stop、reboot が発生しダンプ採取が完了しません。
    • ハートビートタイムアウト以内の電源オン操作
      ハートビートタイムアウト時間内に保守などの目的でサーバの電源を再度オンにした場合、ハートビートタイムアウト経過後に stop、reboot が発生することがあります。
  • クラスタ構成について
    マルチリージョン環境で構成されたクラスタの場合、強制停止機能は使用できません。

7.7. 任意のスクリプトを使用した強制停止を理解する

7.7.1. カスタム強制停止リソースの設定

サーバのダウンを認識したときに 残りのサーバ (正常なサーバ) でユーザが作成した任意のスクリプトを実行する機能です。 スクリプトを記述することで、ダウンしたサーバを強制的に停止させることが可能になります。

記述されたスクリプトは、「強制停止実行」と「定期チェック」の両方の動作で実行されます。 動作に応じて適切な処理が行われるように、後述の環境変数を使った条件分岐処理を記述してください。

任意のスクリプトで使用する環境変数

CLUSTERPROはスクリプトを実行する場合に、定期チェックの実行か強制停止の実行か、どのサーバがダウンしたかなどの情報を環境変数にセットします。

スクリプト内で下図の環境変数を使用することができます。

環境変数

環境変数の値

意味

CLP_FORCESTOP_MODE
・・・モード
0 : 定期チェック時
1 : 強制停止実行時
実行されるモードを示します。
モード毎の処理の分岐に使用できます。
CLP_SERVER_DOWN
・・・ダウンサーバ名

サーバ名

ダウンしたサーバ名を示します。
定期チェック時は "" がセットされます。
CLP_SERVER_LOCAL
・・・ローカルサーバ名

サーバ名

スクリプトを実行するサーバ名を示します。

任意のスクリプトの戻り値

スクリプトが正常終了する時には戻り値として 0 を返却してください。

カスタム強制停止リソースの設定の詳細については本ガイドの「2. パラメータの詳細」 - 「クラスタプロパティ」 - 「フェンシングタブ」 - 「強制停止」 - 「カスタム強制停止のプロパティ」を参照してください。

7.7.2. カスタム強制停止リソースの注意事項

  • サーバを停止させる処理はお客様にて用意し、強制停止スクリプトに記述してください。

  • 定期チェックとして実行すべき処理が無い場合は、定期チェックとして実行された際に何もせずに終了 (戻り値 0 を返却) するように処理を記述してください。

7.8. 強制停止リソースの設定に関する注意事項

  • 1つのクラスタには1つの強制停止リソースのみを設定可能です。

  • 強制停止リソースを設定する場合、ネットワークパーティション解決リソースを併せて設定することを推奨します。

  • 強制停止リソースを設定する場合、クラスタを構成する全てのサーバで強制停止リソースを使用するように設定する必要があります。

  • 強制停止リソース実行中のフェイルオーバグループの両系活性を防止するために、サービス起動遅延時間を以下となるように設定してください。

    サービス起動遅延時間 >= 強制停止リソースの強制停止タイムアウト + 強制停止リソースの停止完了待ち時間 + ハートビートタイムアウト + ハートビートインターバル

    サービス起動遅延時間につきましては 「CLUSTERPRO のサービス起動時間を調整する (必須)」 を参照してください。