AWSをいじり倒す(3.ELB)

qiita.com

今回もこちらを参考にしていく。

 

ELB作成

で、ELBってどこから設定するねん、と思ったらEC2の左のメニューにロードバランサの項目が。

f:id:Messerarche:20200424210659p:plain

なんか先人がお試しでつくった跡がみえるw

 

 

ロードバランサーの作成を押すとこんなメニューが

f:id:Messerarche:20200424210835p:plain

う〜〜ん、ネットワークにおける所謂LBって真ん中だよなぁと思いつつ

参考記事が左を選んでるので左をまずはトライすることに。

ALBでいいならALBが一番安いみたい

 

 

設定画面

f:id:Messerarche:20200424211209p:plain

名前はtest-balancer。

外からのリクエストを捌く位置におくのでインターネット向け。

プロトコルはHTTP(HTTPorHTTPSしか選びしろはない)

 

AZの設定

f:id:Messerarche:20200424211650p:plain

testのVPCを選択。ここで2つのAZにサブネットを作っておいたのが活きてきた!

 

タグ

適当に

f:id:Messerarche:20200424211759p:plain

 

 

セキュリティの設定

f:id:Messerarche:20200424211906p:plain

HTTPSじゃねえぞ?とのお達し。

すんません、証明書めんどくさいので今は勘弁してください

ALB-EC2構成のhttps接続を構築 | Oji-Cloud

この辺見てるとハードルは高くなさそうなので、そのうちやろう

 

セキュリティグループの設定。

f:id:Messerarche:20200424212900p:plain

ELBに対するセキュリティグループということは・・・

前回のEC2用は使いまわさず、新しく作ったほうがよいかも。

ということで必要最小限のHTTP+マイIPをとりあえずセット。

うまくいかなかったら後で調整すれば良い

 

 

ルーティングの設定

f:id:Messerarche:20200424213355p:plain

名前ぐらいしか変更するところがないが、

「指定するプロトコルとポートを使用してこのターゲットグループにリクエストをルーティング」の日本語がわからん。

[新機能] HTTPヘッダーやクエリ文字列などなどでルーティングができちゃう!!AWS ALBで高度なリクエストルーティングが可能になりました! | Developers.IO

この辺からふわっと察するに、HTTPのヘッダー情報とかからどこに振り分けるか決められるってこと?

 

ヘルスチェック

f:id:Messerarche:20200424213608p:plain

ここは変更なしでよさげ。

 

ターゲットの登録

f:id:Messerarche:20200424215300p:plain

 

 

 登録済みに追加。でもEC2は今1台しかないからイマイチだなぁ

f:id:Messerarche:20200424215338p:plain

 

 

確認画面がでて、作成。

f:id:Messerarche:20200424215512p:plain

 

 

できたっぽいが、provisioning...=準備中

f:id:Messerarche:20200424215648p:plain

activeになった。

f:id:Messerarche:20200424220446p:plain

 

 

ターゲットグループのメニューから、ターゲットをみると

f:id:Messerarche:20200424220424p:plain

ステータス:healtyになっている。これでELB-EC2間はOKみたいだ。

 

 

で、肝心の外からELB経由でEC2にアクセスできるのかの確認方法が不明。

試しにこのDNS名をブラウザに放り込んでみたら・・・

f:id:Messerarche:20200424220912p:plain

 

 

つながった。

f:id:Messerarche:20200424221007p:plain

う〜んモヤる。このELBのパブリックIPはどこからでてきたんだ?

 

試しにこのDNSをnslookupしてみたらこのような回答が。

Non-authoritative answer:

Name: test-balancer-798940081.us-east-2.elb.amazonaws.com

Address: 3.134.240.56

Name: test-balancer-798940081.us-east-2.elb.amazonaws.com

Address: 18.188.152.201

明らかに知らないアドレスが、2個もw

どこから湧いてきた。

 

 

試しに、前回作ったEC2向けのセキュリティグループから、

HTTP向けインバウンド通信をプライベートしか許可しないようにしてみる。

f:id:Messerarche:20200424221433p:plain

 

 

で、EC2のパブリックIPをブラウザに打ち込むと・・・あれ?繋がる

f:id:Messerarche:20200424221646p:plain

 

 

色々試しているうちに、ロードバランサのモニタリングにアクセスログが出始めているので、ひとまずELB経由でEC2にアクセスできているぽいことは確かとなる

f:id:Messerarche:20200424221905p:plain

 

 

そしてネットワークインターフェースのところに、

ロードバランサー用のNICが2枚(AZ毎に1つずつ)できていることを発見。

f:id:Messerarche:20200424222228p:plain

アドレスをみるとnslookupの結果と一致したので、これか〜!

思い返せば、設定画面のしょっぱなに「インターネット向け」って選んだので

自動的にパブリックIP持ったNICが生成されたというわけか。なるほどね。

 

 

で、なんでEC2自体にふられているパブリックIPがまだ生きているのか。

これはどうも、どこぞのサーバがキャッシュをもっているだけだった模様

スマホを自宅Wifiにつなげてアクセスしたら、無事に繋がりませんでしたとさ。

だよね、繋がるわけないよね・・・。

 

 

(余談)軽い気持ちでEC2にtracerouteしたら死ぬほどホップしてビビった

f:id:Messerarche:20200424223033p:plain

オハイオは遠い

 

 

(余談2)EC2をstopしたら、ターゲットグループ上の表記は以下になった。当然。

f:id:Messerarche:20200424225708p:plain

 

改めてblackbelt

[AWS Black Belt Online Seminar] Elastic Load Balancing (ELB) 資料及び QA 公開 | Amazon Web Services ブログ

を読むと、AZ毎にELBを作る仕組みみたいだ。

f:id:Messerarche:20200428200055p:plain

 

ということは、当初の絵とELBのイメージが違ったので修正。

進捗はこんな感じに。

f:id:Messerarche:20200428200623p:plain

 

さて、ロードバランサーという割に1台しか設定しなかったのが不満なので、

次は改めて、Auto-Scalingで複数台準備した環境にELBを適用してみようと思う。