Amazon VPC での AZ を跨いだ仮想プライベート IP アドレスの実装方法

テクニカルサポートノート。サービス名:VPC, 仮想 IP アドレス
2020.05.08

困っていた内容

Pacemaker を使用しての冗長構成を構築するため仮想プライベート IP アドレスの実装を検討しています。ただし、フェイルオーバー時に AZ を跨いでの仮想プライベート IP アドレスの付け替えを想定していますが、セカンダリプライベート IP アドレスはサブネットをまたぐことができないためフェイルオーバー時に仮想プライベート IP アドレスの付け替えを行うことができません。

どう対応すればいいの?

Amazon VPC の CIDR 範囲外の IP アドレスを仮想プライベート IP アドレスとして利用することで AZ を跨いだ仮想プライベート IP アドレスの実装が可能です。

具体的には VPC のルートテーブルに、プライマリとして動作する EC2インスタンスの ENI を指定し、EC2 の OS ネットワーク設定することで仮想プライベート IP アドレス宛てのトラフィックを受信することが可能です。

例えば、以下のような構成の場合

  • VPC の CIDR: 10.1.0.0/16
  • 仮想プライベート IP アドレス: 10.2.0.10/32

ルートテーブルを以下のように設定する。

OS 側のネットワークで以下のように設定する

# ip a show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
link/ether 0a:b6:9a:80:f2:fe brd ff:ff:ff:ff:ff:ff
inet 10.1.1.24/24 brd 10.1.1.255 scope global dynamic eth0
valid_lft 3142sec preferred_lft 3142sec
inet 10.2.0.10/32 scope global eth0 ← 仮想プライベート IP アドレスの設定を追加
valid_lft forever preferred_lft forever
inet6 fe80::8b6:9aff:fe80:f2fe/64 scope link
valid_lft forever preferred_lft forever

なお、フェイルオーバー発生時にはルートテーブル上で仮想プライベート IP アドレスの宛先をプライマリからセカンダリとして動作する EC2 インスタンスの ENI を指定する必要があります。

注意事項

基本的には ELB の利用や RDS マルチAZ 構成、Route 53 の別名指定が利用が出来ないかを検討しましょう。

やむを得ず利用する場合は利用の前に充分な評価検証を実施した上でご利用ください。

参考情報

テクニカルサポートノートとは?

クラスメソッドのカルチャー(CLP) の「情報発信を通じて、全ての人々の創造活動に貢献し続ける」という考えから、クラスメソッド メンバーズをご利用のお客様よりいただいたお問い合わせより、他の AWS ユーザーにとっても 有益な情報を一般的な TIPS としてご紹介しています。