ALBのIPを固定したい? GlobalAccelaratorを紹介するよ!


この記事は CBcloud Advent Calendar 2019 10日目の記事です。
CBcloud 徳盛です。最近オフィスで飲みながら仕事をすることが増えました。
今回は、AWSのGlobalAccelaratorについて書いていきたいと思います。このサービスにいきついた背景としては、ALBで運用している最中、「IP固定して」という依頼を早急に対応する必要があったことが始まりです。

忙しい人向け要約

  • リージョンを跨いだロードバランシングが可能なので、耐障害性を向上させることができる!
  • GlobalAccelaratorにALBをぶら下げることができるので、これまでの環境を変えずにIPを固定できる
  • ALBを複数ぶら下げることができるため、Blue-Green Deployができる
  • weightの変更での1分以内にはほぼ全てのリクエストが切り替わるため、Blue-Green DeployするならEBのswap機能より使いやすい
  • 2019年9月より、接続元IPアドレスを保持できるようになり、さらに便利になった

GlobalAccelarator(GA)とは

かなり端折って説明するとリージョン間のロードバランサーです。
が、実はそれ以外での使い道もあります。それと名前がかっこいい。

ALB運用そのままにIPが固定できる

GAの特徴として、作成時に固定IPが二つ割り振られます。
また、ALB・NLB・EC2インスタンス・EIPをぶら下げることが可能なので、これまでALB運用していたサービスでも簡単にIPを固定することが可能になります。

Blue-Green Deployに利用できる

複数のALBをぶら下げた際に、Weightの設定でリクエストを振り分けることが可能です。
この機能を利用し、デプロイの際に新しく立ち上げる環境を始めはWeight0で紐づけておき、環境が整ったらWeight設定を元の環境と逆転させることで実現させます。

EBとGAのBlue Green デプロイした際の比較

Blue-Green Deployを簡単に行う手段として、他にElasticBeanstalk(EB)のswap機能を利用した方法があります。ただ、DNSレコードの有効期限が切れるまで旧環境へのリクエストが発生する可能性があるため、切り替えてすぐ旧環境を止めることはできません。
公式でもEBのスワップは以下のように注意事項があります。

Elastic Beanstalk がスワップ操作を完了した後、古い環境の URL に接続するときに新しい環境が応答することを確認します。DNS の変更が一括適用され、古い DNS レコードの有効期限が切れるまで、古い環境を終了しないでください。DNS サーバーは、ユーザーが DNS レコードで設定したライブ期間 (TTL) に基づいてキャッシュから古いレコードを消去するわけではありません。

その点、GAは1分以内にほとんどのリクエストが切り替わるため、扱いやすいです。

利用コスト

固定料金+データ転送量で課金されます。
固定料金は0.025USD/hです。
また転送量はGB単位の課金になっており、クロスリージョンだとさらに価格が上がります。

アジア→アジア 0.01USD/GB
米国→アジア 0.035USD/GB

弊社ではGAを本番で運用した際の転送量が90GB程度だったため、だいたい$20/月ぐらいの利用料に収まりました。

まとめ

今回はGlobalAcceralatorについて書かせていただきました。
もともとALBのIPを固定するために利用を始めたGAですが、その他にも恩恵があり、意外と便利です。

また、今回は速度面をそこまでシビアに考えていないため書きませんでしたが、エニーキャストを介してトラフィックを最も近いエッジロケーションにルーティングし、さらに最も近いリージョナルエンドポイントにルーティングすることによってアプリケーションのパフォーマンスを向上させてくれるようです。