AWS OpsWorks Stacks が正常なインスタンスを突然再起動するのを停止するにはどうすればよいですか?
最終更新日: 2021 年 8 月 17 日
AWS OpsWorks Stacks は、インスタンスが Amazon EC2 ヘルスチェックに合格した場合でも、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを再起動します。なぜこのような状況が生じているのでしょうか? 停止するにはどうすればよいですか?
簡単な説明
OpsWorks Stacks の自動修復機能がアクティブ化され、管理するインスタンスに障害が発生するとサービスが判断した場合、次のいずれかが発生します。
- インスタンスが Amazon Elastic Block Store (Amazon EBS) によってバックアップされている場合、OpsWorks Stacks API が障害が発生しているインスタンスを停止し、再起動します。
- インスタンスが Amazon EC2 インスタンスストアによってバックアップされている場合、インスタンスは終了します。その後、そのインスタンスは OpsWorks Stacks がインスタンスを再び起動するときに再度作成されます。
- インスタンスが OpsWorks スタックに登録され、オンプレミスの場合、インスタンスのステータスは [connection lost] (接続が失われました) に変更されますが、再起動されません。
管理するインスタンスを OpsWorks Stacks が自動修復しないようにするには、まずこの記事のトラブルシューティング手順に従ってください。問題が解決しない場合は、OpsWorks Stacks レイヤーの [General Settings] (一般設定) で自動修復をオフにすることもできます。
詳細については、AWS OpsWorks デバッグおよびトラブルシューティングガイドのインスタンスが予期せずに再起動するを参照してください。
解決方法
OpsWorks Stacks によって管理されている Amazon EC2 インスタンスがインターネットにアクセスできることを確認する
Amazon EC2 インスタンスが OpsWorks Stacks サービスへの接続を失った場合、OpsWorks Stacks はインスタンスを失敗として扱います。
Amazon EC2 インスタンスがインターネットにアクセスできることを確認するには、次の手順を実行します。
- インスタンスが、インターネットゲートウェイまたはネットワークアドレス変換 (NAT) ゲートウェイを介してインターネットにアクセスできることを確認します。
- インバウンド HTTPS アクセスが、インスタンス、セキュリティグループ、およびネットワークアクセスコントロールリスト (ネットワーク ACL) レベルでポート 443 を介して許可されていることを確認します。
NAT ゲートウェイの接続に関する問題のトラブルシューティングについては、「EC2 インスタンスが NAT ゲートウェイを使用してインターネットにアクセスできない理由を教えてください」を参照してください。
インターネットゲートウェイの接続に関する問題のトラブルシューティングについては、「Amazon EC2 インスタンスがインターネットゲートウェイを使用してインターネットに接続できないのはなぜですか?」を参照してください。
インスタンスに余分な負荷がかかっていてもアプリケーションが機能するように、アプリケーションにインスタンスレベルのメモリおよび CPU 性能が十分あることを確認してください。
キープアライブシグナルの送信を許可するのに十分なインスタンスレベルのリソースが OpsWorks エージェントにない場合、OpsWorks Stacks はインスタンスを失敗として扱います。
インスタンスのメトリクスを確認するには、Monitoring stacks using Amazon CloudWatch の手順に従います。
インスタンスの CPU、メモリ、またはネットワークトラフィックの負荷が高い場合に警告するアラームを設定するには、Amazon CloudWatch アラームを使用するを参照してください。
Amazon EC2 インスタンスが OpsWorks Stacks コンソールまたは OpsWorks Stacks API の外部で停止していないことを確認する
注: AWS Command Line Interface (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
OpsWorks Stacks マネージドインスタンスが Amazon EC2 コンソールで停止した場合、OpsWorks Stacks は OpsWorks エージェントからのキープアライブシグナルの受信を停止します。そして、OpsWorks Stacks はインスタンスを失敗として扱います。
Amazon EC2 コンソールでインスタンスが停止したかどうかを確認するには、OpsWorks Stacks コンソールでインスタンスを停止してみてください。インスタンスが stop_failed 状態にあり、Internal Error メッセージが表示された場合、インスタンスは Amazon EC2 コンソールで停止しました。
Amazon EC2 コンソールで停止した後に OpsWorks Stacks 内のインスタンスを停止するには、AWS CLI stop-instance コマンドを実行します。
重要: stop-instance コマンドには、このユースケースの --force パラメータを含める必要があります。
詳細については、「stop_failed」状態にある AWS OpsWorks Stacks インスタンスを停止するときに、「内部エラー」メッセージのトラブルシューティングを行うにはどうすればよいですか? を参照してください。
Amazon EC2 インスタンスが Instance Metadata Service Version 1 (IMDSv1) を使用していることを確認する
OpsWorks Stacks は IMDSv1 のみをサポートしており、IMDSv2 はサポートしていません。OpsWorks Stacks マネージドインスタンスが IMDSv2 を使用している場合、OpsWorks Stacks はインスタンスを失敗として扱います。
インスタンスが使用するメタデータサービスを確認し、必要に応じてインスタンスを再設定するには、Configure the instance metadata options を参照してください。