営業部 佐竹です。
本日は、Direct Connect (DX) と Site-to-Site VPN (VPN) を併用する構成において、AWS側の操作をトリガーに Direct Connect から VPN へフェイルオーバーを行う方法を掘り下げます。
はじめに
以前、Direct Connect と Site-to-Site VPN を併用している場合に、手動で VPN へとフェイルオーバーを行いたい場合にどのような手段があるのか考えました。
この時、AWS 側から実行可能な手段として「Direct Connect フェイルオーバーテスト」を紹介しました。
今回はこの手法に加えて、Direct Connect Gateway の設定における Transit Gateway との関連付けを解除することでフェイルオーバーを行う手法をご紹介します。
なお、本ブログはその前段階として、以下のブログ通り「Direct Connect × Direct Connect Gateway × Transit Gateway × Site-to-Site VPN」の構成として話を進めますため、合わせて以下もご覧ください。
構成図
今回の解説において前提となります、AWS 環境構成は以下の図の通りです。
AWS側の操作をトリガーに Direct Connect から VPN へフェイルオーバーを行う方法
現在、AWS側の操作をトリガーに Direct Connect から VPN へフェイルオーバーを行う方法は、把握してる範囲で以下の方法があります。
- Direct Connect フェイルオーバーテストを実行する
- Direct Connect Gateway と Transit Gateway 間の関連付けを解除する
それぞれを以下で解説します。
Direct Connect フェイルオーバーテストを実行する
本機能は AWS が提供しているフェイルオーバーテスト用の機能であり、AWS マネジメントコンソールから BGP ピアをダウンさせることが可能です。この機能を実行することにより、Direct Connect から VPN へのフェイルオーバーが可能です。
メリットとしては設定変更なくフェイルオーバーができる点と、フェイルバック(キャンセル)も任意のタイミングで実施できる点です。
ただし本操作の継続可能時間は「最大3時間(180分)」となっており、設定した時間が来ると自動的にフェイルバックしてしまう点に注意が必要です。Direct Connect の障害発生時、本手法でフェイルオーバーを行ったとしても、障害が 3時間以内に回復しない場合、再度本フェイルオーバーを実施することになってしまいます。
実環境の設定にもよりますが、本作業では Direct Connect から Site-to-Site VPN への切り替えに1分程度の接続断が発生しました。
Direct Connect Gateway と Transit Gateway 間の関連付けを解除する
本題です。
Direct Connect Gateway と Transit Gateway は、その関連付けを「解除 (Disassociate)」することができます。
この関連付けを解除することで、Direct Connect から VPN へのフェイルオーバーが可能です。実際に試したところ、どのような挙動となったのか以下に記載します。
フェイルオーバー前の構成
再掲ですが、フェイルオーバー前は本構成図の状態です。
Transit Gateway との関連付けを解除
「Direct Connect のマネジメントコンソール」から操作を行います。
対象となる Direct Connect Gateway を選択し、「Gateway associations」タブから対象の「Gateway association」を選択して Disassociate します。
この時、許可されたプレフィックス (Allowed prefixes) は手元に保存しておいてください。関連付けの解除によりこの設定も消えてしまうためです。
確認画面が出ますので、問題がなければ「Disassociate」を押下してください。
Direct Connect Gateway と Transit Gateway の関連付けを「解除 (Disassociate)」すると、以下の通りの構成に変化します。
- Attachment1(Direct Connect Gateway の Attachment)が削除されます
- これにより、Attachment1 とルートテーブルの関連付けが消失します
- さらに、各 VPC のルートテーブルで Direct Connect Gateway への Propagation 設定が消失します
- 各 VPC のルートテーブルで Direct Connect Gateway への Propagation が消失したことにより、Direct Connect Gateway のルートが消え VPN へのルートが優先となります
これらの動作により、Direct Connect Gateway から Site-to-Site VPN へのフェイルオーバーが完了します。
解除後の挙動についての詳細
Direct Connect Gateway と Transit Gateway の関連付けを「解除 (Disassociate)」すると、各 VPC の Transit Gateway ルートテーブルにおいて、即時 VPN へのルートが優先となります。しかし、解除設定の完了直後は Direct Connect Gateway と Transit Gateway が落ち切っていないため、AWS からオンプレミスへの通信は、非対称ルーティングとなった状態で十数秒程度疎通可能となりました。その後、通信は完全にダウンします。
また、関連付けは「disassosciating」ステータスとなり、このステータスのまま10分程度保持されます。
時間が経過すると、関連付けの一覧から削除されます。削除された状態にまでなると、オンプレミスのルータがフェイルオーバーされ、Site-to-Site VPN へと通信できるようになりました。
このように Site-to-Site VPN への切替が完了するまで、およそ10分程度の接続断が発生しました。
切り戻し方法
Direct Connect フェイルオーバーテストは、任意のタイミングでの「キャンセル」を実行することで容易に切り戻しが可能ですが、Transit Gateway との関連付けを解除する場合には、元の構成に戻すためにある程度の作業が必要です。
Transit Gateway との関連付けを再度設定し、ルートテーブルを関連付ける
解除した Direct Connect Gateway と Transit Gateway の関連付けを元通り再設定します。設定において、許可されたプレフィックス (Allowed prefixes) も元通り記載しなおす必要があります。
この関連付け作業も解除と同様、ステータスが「associated」となるまでに10分程度かかるため、切り戻しにも時間がかかる点にご留意ください。
そしてこの作業により、Direct Connect Gateway 用の Attachment が作成されるため、Attachment1
が復旧します。ただし、前回のものと Attachment-ID は変更されていますため注意が必要です。
加えて、再度作成された Attachment1
と Transit Gateway ルートテーブルの関連付けを行う必要がありますため、これを行います。
各 VPC のルートテーブルに Propagation の設定を行う
各 VPC の Attachment に関連付けられている Transit Gateway ルートテーブルで、Direct Connect Gateway への Propagation 設定が消失しているため、これを元通り設定しなおす必要があります。
新しく作成された Attachment1 をターゲットに、「Create propagation」を再度実行します。
ただし、この段階では Site-to-Site VPN がまだ優先されたままの状態である可能性に注意してください。Direct Connect Gateway 側が優先されるようになるためには、Direct Connect Gateway と Transit Gateway の関連付けの設定が正しく完了している必要があります。
Propagation により、Direct Connect Gateway が優先に切り替わる
Propagation により、Site-to-Site VPN を優先しているルートから、Direct Connect Gateway が優先のルートに切り替わることを見届けて、切り戻しの作業は完了します。
これで元通り Direct Connect を経由してオンプレミスと通信が可能となります。
補足
Direct Connect Gateway と Transit Gateway の関連付けには、許可されたプレフィックス (Allowed prefixes) を記載する必要がありますが、これを空に設定することはできません。
そのため、許可されたプレフィックス (Allowed prefixes) を空にすることによる「経路広報の停止」は不可となります。
まとめ
最後に、Direct Connect Gateway と Transit Gateway 間の関連付けを解除することにより VPN へとフェイルオーバーさせる場合の手順を、フェイルバックと合わせて作業内容をまとめます。
フェイルオーバーを行う場合の作業
- 許可されたプレフィックス (Allowed prefixes) の記載内容を手元に保管する
- Direct Connect Gateway と Transit Gateway 間の関連付けを解除する
フェイルバックを行う場合の作業
- Direct Connect Gateway と Transit Gateway の関連付けを再度設定し、許可されたプレフィックス (Allowed prefixes) を元通りに記載しなおす
- 作成される Direct Connect Gateway 用の Attachment と Transit Gateway ルートテーブルの関連付けを行う
- 各 VPC の Attachment に関連付けられている Transit Gateway ルートテーブルに Direct Connect Gateway への Propagation 設定を追加する
以上になります。
本手法は、AWS 側の設定変更で VPN へのフェイルオーバーを行うことが可能となる手法ですため、以前発生したような Direct Connect 障害のために予め手順書を作成しておくのも良いと考えます。
加えて、本手法が実際の環境で想定通りに動作するかどうかは、十分に動作検証を実施くださいますようお願い致します。
では、またお会いしましょう。
佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ
マネージドサービス部所属。AWS資格全冠。2010年1月からAWSを利用してきています。2021-2022 AWS Ambassadors/2023-2024 Japan AWS Top Engineers/2020-2024 All Certifications Engineers。AWSのコスト削減、最適化を得意としています。