share facebook facebook twitter menu hatena pocket slack

2017.11.14 TUE

アクセスできなくなったWindowsインスタンスをAWSSupport-ExecuteEC2Rescueで復旧する

土持 昌志

WRITTEN BY 土持 昌志

概要

AWSからEC2Rescueというツールが提供されていて、EC2インスタンスのトラブルシューティングに使用できます。

ただしネットワーク的な問題がありインスタンスにログインできないといった場合、復旧作業用のインスタンスを立ち上げて問題のあるインスタンスからEBSボリュームをデタッチ、復旧用インスタンスにアタッチしてEC2Rescueを実行、ボリュームを再び元のインスタンスに戻すというような手順が必要でした。
トラブル発生中にこの手順を間違いなく実行するのは難しいものがあります。

今回、そんな一連の作業をSSM Automation(自動化)でまとめて実行してくれるAWSSupport-ExecuteEC2Rescueドキュメントが提供されているのを見つけたので試してみました。
(※2017/10現在Windows限定)

詳細については以下公式ドキュメントを確認してください。

事前準備

IAM Roleの作成

事前準備としてSSM Automationが使用するIAM Roleを作成します。
Role作成用のCloudFormationテンプレートが提供されていたのでそのまま利用しました。
http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/automation-ec2rescue.html#automation-ec2rescue-access-cfn

障害EC2インスタンスの作成

障害が発生したという想定のインスタンスを作成します。

手違いでDHCPで割り当てられているアドレスと関係ないアドレスを設定してしまいました。

RDP接続が切断され、

しばらくするとインスタンスステータスチェックにも失敗するようになります。

AWSSupport-ExecuteEC2Rescue を実行

マネジメントコンソールからAutomationを開きます。
AWSSupport-ExecuteEC2Rescueドキュメントを選択、パラメータに復旧したいインスタンスのID、作成したIAM RoleのARNを入力し実行します。

復旧処理が開始されました。

CloudFormationでLambda Function、復旧用インスタンスなどが展開されます。

一連の処理が完了したようです。この時は障害インスタンスの再起動に15分、作業時に作成されたリソースの削除も含めた完了に20分程度かかっていました。
createBackup がタイムアウトしていますが作業前に障害インスタンスのAMIバックアップが行われており、実際には問題なく作成されていました。

確認

障害インスタンスのインスタンスステータスチェックに合格しています。

RDP接続も問題なくでき、DHCP設定が元に戻されていました。

ステップrunEC2Rescueのログはこうなっていました。
DHCPを有効化すると同時にWindows Firewallも無効化したようです。

runEC2Rescue

CommandId : 9b0b2297-0838-40cd-b49e-fb924bbadc29

Output : ===== System Information =====
Operating System: Windows Server 2016 Datacenter
Service Pack: -
Version: 10.0.14393
Computer Name: EC2AMAZ-4T6ARMO
Time Zone: UTC
.NET Framework:
    v4.7 (4.7.02053)
EC2Launch Version: 1.3.630

===== Analysis =====
System Time
  OK - RealTimeIsUniversal (Enabled): This registry value should be enabled when timezone is not UTC.
Windows Firewall
  Warning - Domain networks (Enabled): Windows Firewall will be disabled.
  Warning - Private networks (Enabled): Windows Firewall will be disabled.
  Warning - Guest or public networks (Enabled): Windows Firewall will be disabled.
Remote Desktop
  OK - Service Start (Manual): Sets Remote Desktop service start to automatic.
  OK - Remote Desktop Connections (Enabled): The RDP listening port will be changed to TCP/3389.
  OK - TCP Port (3389): The RDP listening port will be changed to TCP/3389.
EC2Launch
  OK - Installation (Installed): EC2Launch 1.3.630 is installed.
  Information - Reset Administrator Password (Disabled): 
Network Interface
  OK - DHCP Service Startup (Automatic): The service will be set to start automatically.
  Information - ?????? 2 detail (N/A): AWS PV Network Device (7.4.6.0)
  Warning - DHCP on ?????? 2 (Disabled (Static: 172.21.27.100)): DHCP will be enabled.

===== Changes =====
Windows Firewall
  OK - Domain networks (Disabled)
  OK - Private networks (Disabled)
  OK - Guest or public networks (Disabled)
Network Interface
  OK - DHCP on ?????? 2 (Enabled)



ResponseCode : 0

Status : Success

まとめ

障害発生時に大きな手間なくトラブルシューティングを行えるので重宝しそうです。
IAM Roleだけでも事前に作成しておくと良さそう。

Linux対応版にも期待したいですね。

元記事はこちら

アクセスできなくなったWindowsインスタンスをAWSSupport-ExecuteEC2Rescueで復旧する

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。