AWS Global AcceleratorをLBチックに使う
AWS Global Acceleratorが目についたので実験がてら触りました。
AWS Global Acceleratorとは
複数静的IPを持っており対象エンドポイントに対して通信をルーティングし、トラフィック制御や 簡単なセッション維持と冗長化を提供してくれます。
対象エンドポイントはALB、NLB、ElasticIPが現在サービスされてます。
構成
今回実験した構成は以下
AWS Global Accelerator(省略するとナニ?)からEC2へ
AWS Global Acceleratorの作成
まずは適当に名前を決める
Listbnerを作成する
Ports :AWS Global Acceleratorが外部から許可するポート
Client affinity : SurceIPとすると同じソースIPからは同じエンドポイントへルーティングする
エンドポイントを指定
Region : 対象エンドポイントのあるリージョンを選択
Traffic dial:対象リージョンのルーティング割合
Configure health checks
ポートやらプロトコルやらHTTPならパスやらを設定
ただしここで設定した内容でヘルスチェックを行うのはターゲットがElasticIPの場合だけ。
LBの場合はLB側のヘルスチェックルールが適応される。
Endpoint type:ALB,NLB,ElasticIPから選択
Endpoint :エンドポイントを指定
Weight:エンドポイントへのルーティング割合を指定
作成すると完了
下図のように静的IPが2つついてる
あとはRoute53でAレコードを設定
アクセスすると無事EC2へ割り振られます。
おまけ
ヘルスチェックログがアクセスログにずら~っときます。 (ok.htmlはヘルスチェックターゲットに指定したもの)
54.244.52.230 - - [14/May/2019:04:05:05 +0000] "GET /ok.html HTTP/1.1" 200 3 "-" "Amazon-Route53-Health-Check-Service (ref a337232a-2f4d-49a0-a277-6df9e3b4093e; report http://amzn.to/1vsZADi)" 54.245.168.6 - - [14/May/2019:04:05:06 +0000] "GET /ok.html HTTP/1.1" 200 3 "-" "Amazon-Route53-Health-Check-Service (ref a337232a-2f4d-49a0-a277-6df9e3b4093e; report http://amzn.to/1vsZADi)" 54.250.253.198 - - [14/May/2019:04:05:08 +0000] "GET /ok.html HTTP/1.1" 200 3 "-" "Amazon-Route53-Health-Check-Service (ref a337232a-2f4d-49a0-a277-6df9e3b4093e; report http://amzn.to/1vsZADi)" 54.252.79.134 - - [14/May/2019:04:05:08 +0000] "GET /ok.html HTTP/1.1" 200 3 "-" "Amazon-Route53-Health-Check-Service (ref a337232a-2f4d-49a0-a277-6df9e3b4093e; report http://amzn.to/1vsZADi)" 54.183.255.166 - - [14/May/2019:04:05:09 +0000] "GET /ok.html HTTP/1.1" 200 3 "-" "Amazon-Route53-Health-Check-Service (ref a337232a-2f4d-49a0-a277-6df9e3b4093e; report http://amzn.to/1vsZADi)" 54.241.32.70 - - [14/May/2019:04:05:09 +0000] "GET /ok.html HTTP/1.1" 200 3 "-" "Amazon-Route53-Health-Check-Service (ref a337232a-2f4d-49a0-a277-6df9e3b4093e; report http://amzn.to/1vsZADi)" 54.252.254.230 - - [14/May/2019:04:05:10 +0000] "GET /ok.html HTTP/1.1" 200 3 "-" "Amazon-Route53-Health-Check-Service (ref a337232a-2f4d-49a0-a277-6df9e3b4093e; report http://amzn.to/1vsZADi)" 176.34.159.198 - - [14/May/2019:04:05:12 +0000] "GET /ok.html HTTP/1.1" 200 3 "-" "Amazon-Route53-Health-Check-Service (ref a337232a-2f4d-49a0-a277-6df9e3b4093e; report http://amzn.to/1vsZADi)" 54.228.16.38 - - [14/May/2019:04:05:13 +0000] "GET /ok.html HTTP/1.1" 200 3 "-" "Amazon-Route53-Health-Check-Service (ref a337232a-2f4d-49a0-a277-6df9e3b4093e; report http://amzn.to/1vsZADi)"
ヘッダーがRoute53なんですねぇ。。AGA(AWS Global Accelerator)から思うんだけど。
とりあえずこれは邪魔です。
apacheのコンフを変更
これを
CustomLog "logs/access_log" combined
これに
SetEnvIf User-Agent "Amazon-Route53-Health-Check-*" nolog CustomLog "/var/log/httpd/access.log" combined env=!nolog
でApacheのリスタート
おまけ2
これ結構重要
アクセスログにソースIPがでない
ソースIPではない、AGAのIPでもない、AWSのGIPがアクセスログにでるんだけどなんでですねぇ。。
AGA側ではソースIP持ってるはずなのに。
これなんとかならんの?
おまけ3
証明書使えません。
まとめ
ALBの前に置いて、ALBに静的IP持たせれるような構成が恩恵大きそう。
以上