STONITH を使用することで、異常なノードが共有データにアクセスしたり破損したりしないようにします。Quorum/Witness と併用することにより、より強固にスプリットブレインを防止できるようになります。SSM エージェント経由で Linux kernel を停止させるのと、EC2 インスタンス経由で落とすのを併用することでより確実にします。

要件

パッケージ

AWS CLI と SSMエージェントを各クラスターノードにインストールします。SSM エージェントは以下でインストールできます。

# dnf install https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
# systemctl enable amazon-ssm-agent
# systemctl start amazon-ssm-agent

より詳細な手順については、AWS ユーザーズガイド Linux用 EC2インスタンスに SSM Agentを手動でインストール及びアンインストールする を参考にしてください。

IAM ロール

IAM ロールには、仮想マシンを powerOff できる権限と SSM エージェントと通信できる権限が必要です。

  • ec2:StopInstances
  • ssm:SendCommand

事前確認

各ノードで以下のコマンドを実行し、AWS 上の認証が機能していることを確認してください。

# aws ec2 stop-instances --instance-ids <instance> --force --region <region>
# aws ssm send-command --document-name AWS-RunShellScript --instance-ids <instance> --parameters '{"commands":["dohalt() { sleep 1; echo o > /proc/sysrq-trigger; }","echo 1 > /proc/sys/kernel/sysrq","dohalt &","echo shutoff the system"],"executionTimeout":["10"]}' --timeout-seconds 30 --region <region>

STONITH のインストール

次のコマンドを実行して、すべてのサーバーへのコミュニケーションパスが構成されている 各サーバー に、LifeKeeper STONITH スクリプトをインストールします。

# /opt/LifeKeeper/samples/STONITH/stonith-install

ec2-stonith.sh の作成

以下の STONITH スクリプトを作成し、/usr/local/bin/ec2-stonith.sh に置きます。

#!/bin/sh
instance="--instance-ids $1"
region="${2:+--region $2}"
aws ssm send-command --document-name AWS-RunShellScript $instance --parameters '{"commands":["dohalt() { sleep 1; echo o > /proc/sysrq-trigger; }","echo 1 > /proc/sys/kernel/sysrq","dohalt &","echo shutoff the system"],"executionTimeout":["10"]}' --timeout-seconds 30 $region
sleep 1
aws ec2 stop-instances $instance --force $region
sleep 1
aws ec2 stop-instances $instance --force $region

実行権限を与えます。

# chmod 755 /usr/local/bin/ec2-stonith.sh

/opt/LifeKeeper/config/stonith.conf の更新

stonith.conf を更新します。

vm-HostA /usr/local/bin/ec2-stonith.sh <instance> <region>
vm-HostB /usr/local/bin/ec2-stonith.sh <instance> <region>

フィードバック

お役に立ちましたか?

はい いいえ
お役に立ちましたか
理由をお聞かせください
フィードバックありがとうございました

このトピックへフィードバック

送信