AWS Elastic Disaster Recovery (DRS) でレプリケーションが停止してしまった際の原因調査方法を教えてください
困っていること
AWS Elastic Disaster Recovery (DRS) を利用して別リージョンに EC2 インスタンスのレプリケーションを実施しています。
しかしながら、DRS コンソールからレプリケーションステータスを確認したところ「停滞」という表示が出ており、レプリケーションが停止してしまっている状況に見受けられました。
原因の調査方法を教えてください。
どう対応すればいいの?
レプリケーションステータスが「停滞」(Stalled)となっている場合、ソースサーバからレプリケーションサーバへのデータレプリケーションが正常に実行できていないことを示しています。
そのため、以下の観点から調査を実施してください。
- ソースサーバ上で DRS のエージェントが起動しているか
- ソースサーバからレプリケーションサーバへ TCP ポート 1500 で正常に疎通可能な状況にあるか
調査方法
ソースサーバ上で DRS のエージェントが起動しているか
何かしらの原因によってソースサーバ上の DRS エージェントが停止してしまった場合、レプリケーションステータスが「停滞」と表示される可能性があります。[1]
そのため、ソースサーバ上で以下のエージェントサービスが正常に起動しているかをまず確認してください。
Linux の場合
aws-replication-agent.service
Windows の場合
AwsReplicationService
ソースサーバからレプリケーションサーバへ TCP ポート 1500 で正常に疎通可能な状況にあるか
エージェントが正常に起動しているにも関わらず、レプリケーションが停止してしまっている場合は、ソースサーバからレプリケーションサーバへの通信経路に問題が発生している可能性があります。
まずソースサーバに接続し、以下のコマンドでエージェントのログファイルから接続先のレプリケーションサーバを特定してください。
Linux の場合
sudo cat /var/lib/aws-replication-agent/agent.log.0 | grep :1500 | tail -n 1
※replicatorAddress に表示されている値が、通信先レプリケーションサーバの IP アドレスになります
Windows の場合
findstr /L ":1500" "C:\Program Files (x86)\AWS Replication Agent\agent.log.0"
レプリケーションサーバを特定したら、続けて以下コマンドで当該インスタンスへの疎通を確認します。
Linux の場合
nc -vz <レプリケーションサーバのIPアドレス> 1500
Windows の場合
Test-NetConnection <レプリケーションサーバのIPアドレス> -Port 1500
Connection timed out になるなど、正常に結果が返ってこなかった場合は経路上のネットワークリソースの設定を見直します。
具体的には以下の設定状況を確認し、ソースサーバからレプリケーションサーバへの TCP ポート 1500 での通信が可能であるかを順番に調査してください。
- ソースサーバ上のファイアウォール設定(有効化している場合)
- ソースサーバおよびレプリケーションサーバのセキュリティグループ
- ソースサーバおよびレプリケーションサーバが稼働しているサブネットのネットワーク ACL
- ソースサーバおよびレプリケーションサーバが稼働しているサブネットのルートテーブル
- インターネット経由でのレプリケーションを実施している場合
- ソースサーバが NAT ゲートウェイなどを通してインターネットへ出れる環境にあるか
- レプリケーションサーバがパブリックサブネットに配置されているか