本記事について
本記事は AWS 初学者の私が学習していく中でわからない単語や概要をなるべくわかりやすい様にまとめたものです。
もし誤りなどありましたらコメントにてお知らせいただけるとありがたいです。
ELBの概要
上の図だとEC2が一台のため、単一障害点になります。
そのため例えば AZ 1c にもう一台EC2を置いたとします(下の図)
そうするとまた違った問題点が起きます。
その問題点とは
・アクセスポイントが分かれてしまう(ユーザーから見るとアクセスポイントが2つになる)
・サーバーが正常かチャックをしないといけない(異常が出た場合、そのサーバーを停止させないといけない)
・セキュリティーの問題(直接、webサーバーにアクセスさせるのはセキュリティー上あまりよろしくない)
・セキュリティーの処理の負荷(HTTPSをHTTPに複合化するのは多少の負荷がかかり、本来コンテンツを提供するwebサーバーに通信の複合化の処理までさせるのは、あまりお勧めできません。)
上の問題点はDNS仕組み、監視仕組みを作りこむことはできますが、そこで代わりになるものがELBです。(下の図)
ELBの機能の特徴
ロードバランサーにはDNS名のアクセスポイントが付与される
ユーザーからのアクセスポイントを一つにして、ELBが自動でEC2の負荷状況を見て自動でリクエストを分散してくれます。(オートスケールと連動してEC2の平均のCPU使用率を見て、EC2を増やしたり、減らしたりすることも対応可能)
ヘルスチャック機能がある
定期的にELBが対象のファイルに通信を流し、正しいレスポンスが返ってくれば通信を流し、正しくないレスポンスがくれば通信をストップする。(この動きをロードバランサー切り離すという)
上の動きを、何秒ごとにチャックするかなどの設定もできる。
ELBに証明書を付与することでSSL通信の終端となる
HTTPS通信をするためには証明書が必要になります。(AWS Certificate Manager で無料でとれる)この証明書をELBに配置することでその先がHTTP通信で通信がすることができる。
これをSSLターミネーションと言うみたいです。
ALB,NLB,CLBについて
ALB,NLB,CLBはELBのロードバランサー種類になります。
ALB
アプリケーションレイヤー(L7)HTTP,HTTPSの負荷分散に使えます。
※L7 とはOSI参照モデルで第7層のこと
NLB
トランスポートレイヤー (L4) TCP,UDPの負荷分散に使えます。
※L4 とはOSI参照モデルで第4層のこと
CLB
こちらは古い規格であり、今後は機能追加もないことからあえて使う必要がないとのことでした。
##ELBの使用例
上の図のようにELBをPublic subnetに置き、あとはPribate subnetに置くとセキュリティーレベルが高まるようです。
あとこれだとEC2のメンテナンスができないため別途、踏み台サーバーを用意してメンテナンスを行います。
上の図はアプリケーションによってですが、フロントとAPIを担うサーバーをわけることがあるようです。
こちらだとEC2横並びで繋がっているだけですからEC2同士が単一障害点になってしまいます。
ですので下の図のように
このように内部でELBを使用してわけることができます。
なおもう少し踏み込んで話すと上の図のように外部向けはALBを使用して内部向けはNLBを使用する。理由はNLBは処理速度が速いみたいですのでアーキテクチャよりますが、内部はL7まで求めたものを使用しなくても良いみたいです。
最後に
少し訓練校でバランサーなどを実機で触ったおかげでなんとか概要はつかめた気になりましたが、本当に分かったか微妙です><
次は手を動かしながらもっと勉強していきます!!
またこの記事は AWS 初学者を導く体系的な動画学習サービス「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com/