Global Acceleratorを使ってALBを固定IP化する #reinvent
コンニチハ、千葉です。
Global Acceleratorは、固定IPアドレスを持つグローバルなロードバランサーで、特徴は以下です。
参考:https://aws.amazon.com/jp/global-accelerator/
- エニーキャストな固定IP持かつ、地理的に一番近いロケーションにルーティングされる。これは、IPを複数持つのではなく2つの固定IPが、各エッジローケションにアナウンスされ、ユーザーは意識せずに一番近いロケーションにルーティングされる(すごい)
- 固定IPのため、ALBやDNSのラウンドロビンで受けるDNSキャッシュの影響を受けなくなる、つまりフェイルオーバーに強くなる(サイコー)
- 2つの固定IPが割り当てられ、1つのIPネットワークが中断した場合は、別のネットワークゾーンから固定IPが復活する(ゾンビ的な?)
- ダイヤル機能により、0 - 100を指定し、例えば徐々にトラフィックを増やすような施行ができる
- ヘルスチェック機能があり、継続的にアプリケーションを監視する
- 地域内のバランシング > ELB、 地域間のバランシング > Global Accelerator なイメージ
詳細はこちら。
[新サービス]ジオロケーションレベルのバランシング機能を試してみた[AWS Global Accelerator] #reinvent
今回の実装イメージです。ALBの前段にGlobal Acceleratorを配置し、固定IP化します。シングルリージョンで対応して、ALBのIPアドレスを固定化します。
やってみた
ALB + EC2の構築
あらかじめ、東京リージョンにEC2 + ALB の環境を構築しました。
Global Acceleratorの作成
マネージメントコンソールから Global Accelerator へ移動します。
任意の名前を入力します。
リスナーを作成します。
東京リージョンを選択します。
ALB を選択し、作成したALBを指定します。
ヘルスチェックが正常になればOKです。また、スタティックIPも確認しておきましょう。
スタティックIPをAレコードを登録
Global AcceleratorのスタティックIPをAレコードに登録します。今回は、Route53を利用しました。
DNSに登録できてることを確認しました。
$ nslookup www.xxx.net Server: 68.xx.xx.xx Address: 68.xx.xx.xx#53 Non-authoritative answer: Name: www.xxx.net Address: xx.xx.xx.xx Name: www.xxx.net Address: xx.xx.xx.xx
アクセスしてみる
ブラウザからアクセスしてみます。
問題なくアクセスできました。
気になること
自分が気になる点を調べてみました。
可用性は?
エニーキャストIPアドレスで、2つIPを持ち、片方のネットワークの疎通ができなくなった場合、別のネットワークに切り替わり再接続できます。そのため冗長化されており問題なさそうです。
パフォーマンスは?
輻輳のない膨大なAWSグローバルネットワークが活用されています。具体的な帯域に関する記載は見つけられなかったのです。そもそもユーザーガイドがまだ公開されてないようなので、公開され次第確認しようと思います。いずれにせよ要件によるところなので、結局のところ性能テストをすると安心かなと思います。
参考:https://aws.amazon.com/jp/about-aws/global-infrastructure/
2つのヘルスチェック
Global AcceleratorとALB 両方でヘルスチェック が走ります。どのようにすみ分けるか?ですが、Global Acceleratorはリージョンレベルの通信に特化しているので、リージョンレベルでのヘルスチェック 、ALBはリージョン内のヘルスチェック と考えるのが良さそうです。
レイテンシは?
ロケーションにより結果が変わりそうですが、これも実際に試してみるのが良いかと思います。基本的には一番近くのエッジロケーションにルーティングされるようになり、AWSのネットワークが利用できるので、レイテンシが小さくなることが期待できると思います。
ユースケースとしても、レイテンシが求められるゲーム、メディア、モバイルアプリケーション、金融アプリケーションなどが紹介されていましす。
制限事項ある?
現状ドキュメントが公開されてないので、公開待ちかなと思います。
気になる方はFAQや機能に関するページを確認ください。
https://aws.amazon.com/jp/global-accelerator/faqs/ https://aws.amazon.com/jp/global-accelerator/features/
ALB側に出力されるIPは?
ALBのアクセスログを確認したところ、クライアントのIPでもなく、Global Acceleratorに付与されたIPでもなかったです。 AWSが保有しているIPアドレスのようでしたが...
分析などでログを利用している場合は、ちょっと工夫が必要そうです。
料金
AWS Global Acceleratorの料金がかかります。これは、固定料金 + データ転送料金です。トラフィック量でも変わるため、ALBの固定IPのためだけに使えるかは予算に合わせて検討が必要かなと思います。
参考:https://aws.amazon.com/jp/global-accelerator/pricing/
さいごに
とある案件で、ALBを固定したいという要件があったのですが、特定のルートだけNLBに置き換えた環境がありました。置き換えが可能か検討してみます。