2&>1

AWSとかGCPとかGolangとかとか

AWS Global AcceleratorをLBチックに使う

AWS Global Acceleratorが目についたので実験がてら触りました。

AWS Global Acceleratorとは

複数静的IPを持っており対象エンドポイントに対して通信をルーティングし、トラフィック制御や 簡単なセッション維持と冗長化を提供してくれます。

対象エンドポイントはALB、NLB、ElasticIPが現在サービスされてます。

aws.amazon.com

構成

今回実験した構成は以下

AWS Global Accelerator(省略するとナニ?)からEC2へ

f:id:piyojir0:20190514141035j:plain

AWS Global Acceleratorの作成

まずは適当に名前を決める f:id:piyojir0:20190514142106j:plain

Listbnerを作成する

PortsAWS Global Acceleratorが外部から許可するポート

Protocol :TCP or UDP

Client affinity : SurceIPとすると同じソースIPからは同じエンドポイントへルーティングする

f:id:piyojir0:20190514142112j:plain

エンドポイントを指定

Region : 対象エンドポイントのあるリージョンを選択

Traffic dial:対象リージョンのルーティング割合

Configure health checks

ポートやらプロトコルやらHTTPならパスやらを設定

ただしここで設定した内容でヘルスチェックを行うのはターゲットがElasticIPの場合だけ。

LBの場合はLB側のヘルスチェックルールが適応される。

f:id:piyojir0:20190514142126j:plain

Endpoint type:ALB,NLB,ElasticIPから選択

Endpoint :エンドポイントを指定

Weight:エンドポイントへのルーティング割合を指定

f:id:piyojir0:20190514142137j:plain

作成すると完了

下図のように静的IPが2つついてる f:id:piyojir0:20190514144945j:plain

あとはRoute53でAレコードを設定

f:id:piyojir0:20190514145224j:plain

アクセスすると無事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持たせれるような構成が恩恵大きそう。

以上