目的
- ALBにFQDNではなく、固定のIPアドレスでアクセスしたいという要件あり。Global Acceleratorでできるのではないかと思い検証することにした。
Global Acceleratorとは(自分の理解)
- Global Acceleratorを使うと、クライアント(PCやスマホ)と、サーバ(ELB配下のWEBとか)の通信時に、AWSが用意するネットワークを通る区間が長くなるため、通常のインターネット経由よりも速くなる。
- 固定のIPが払い出されるので、それをALBと紐づけることで、結果的にALBに固定IPでアクセスできるようになる。
やったこと
- ALB + EC2(nginx) の作成
- Global Accelerator と ALBの紐づけ(=ALBへの固定IPでのアクセス)
- 通常のインターネット経由とGlobal Accelerator経由の速度の比較
- ALBのアクセスログの確認
構成図
手順
- ALB + EC2(nginx) を作成 (ohioリージョン)。
- ACMで証明書を2個作成し、2つの証明書をそれぞれALBに適用。1個のALBに2個の証明書を付与する手順は以下サイトを参照。(ALBで複数のSSL/TLS証明書を設定できるSNIに対応しました)
- mksamba-web.aaa.com ⇒ インターネット経由で直接アクセスする用
- mksamba-web-ga.aaa.com ⇒ Global Accelerator 経由でアクセスする用
- Global Accelerator を申し込む。Global Acceleratorはohioリージョンにはなく、oregonリージョンになる。申し込むと固定IPが2個払い出され、それをohioリージョンに作成したALBとひもづける。この設定により、この2個のIPのどちらかをたたくとALBにGlobal Accelerator経由の経路でアクセス可能になる。
- Route53 で以下のレコード登録を行う。これにより、https://mksaba-web.aaa.com では通常のインターネット経由で、https://mksaba-web-ga.aaa.com ではGlobal Accelerator 経由で同じALBにアクセス可能になる。
- mksamba-web.aaa.com A "ALIAS ALB"
- mksamba-web-ga.aaa.com A "GlobalAcceleratorのIP2個"
アクセス速度の比較
筆者のPC(東京都内)からインターネット経由とGlobal Accelerator経由でALBにアクセス(ping)して、速度の差異を確認した。(FQDN、IPアドレス等は架空のものに修正)
- インターネット経由の場合:
C:\Users\mksamba>ping mksamba-web.aaa.com
mksamba-web.aaa.com [3.20.238.1]に ping を送信しています 32 バイトのデータ:
3.20.238.1 からの応答: バイト数 =32 時間 =250ms TTL=230
3.20.238.1 からの応答: バイト数 =32 時間 =180ms TTL=230
3.20.238.1 からの応答: バイト数 =32 時間 =265ms TTL=230
3.20.238.1 からの応答: バイト数 =32 時間 =207ms TTL=230
3.20.238.1 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 180ms、最大 = 265ms、平均 = 225ms
- Global Accelerator 経由の場合:
C:\Users\mksamba>ping mksamba-web-ga.aaa.com
mksamba-web-ga.aaa.com [13.245.141.1]に ping を送信しています 32 バイトのデータ:
13.245.141.1 からの応答: バイト数 =32 時間 =22ms TTL=115
13.245.141.1 からの応答: バイト数 =32 時間 =22ms TTL=115
13.245.141.1 からの応答: バイト数 =32 時間 =26ms TTL=115
13.245.141.1からの応答: バイト数 =32 時間 =24ms TTL=115
13.245.141.1 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 22ms、最大 = 26ms、平均 = 23ms
Global Acceleratorを使用した場合の詳細の経路は不明だが、AWSの高速なネットワークを通る区間が長いと想定されるため、今回の比較ではかなり高速になっている。
ALBのアクセスログの確認
インターネット経由とGlobal Accelerator経由でhttpsアクセスした際のALBのアクセスログを確認する。(FQDN、IPアドレス等は架空のものに修正)
- インターネット経由のアクセス
h2 2019-04-08T15:01:32.267255Z app/mksamba-alb/9a10856600279c13 100.100.100.1:58554 10.0.0.14:80 0.001 0.000 0.000 304 304 1426 102 "GET https://mksamba-web.aaa.com:443/ HTTP/2.0"
インターネット経由のアクセスの場合は、アクセス元のSRCIP(ここでは100.100.100/1)がログに記録される。
- Global Accelerator経由のアクセス
h2 2019-04-08T15:01:41.921439Z app/mksamba-alb/9a10856600279c13 13.245.98.3:39591 10.0.0.14:80 0.001 0.001 0.000 304 304 1429 102 "GET https://mksamba-web-ga.aaa.kddi.com:443/ HTTP/2.0"
Global Accelerator経由のアクセスの場合は、Global Accelerator用にAWSが持っていると思われるアドレス(ここでは13.248.98.3)がログに保存される。アクセス元のSRCIPはALB側では分からない。
まとめ
- Global Acceleratorを使えば、クライアント側からFQDNではなく、IP指定でALBにアクセスすることは可能。
- ただし、Global Accelerator経由でアクセスされた場合、ALB側で実際のアクセス元のIPが分からない。そのためIPアドレスレンジでのアクセス制限をかけることができない。(2019/4時点での仕様)
参考にした記事
[Application Load Balancer のアクセスログ]
(https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-access-logs.html)
Global Acceleratorを使ってALBを固定IP化する #reinvent