こんにちは。かじです。
今回は、AWSのELB(Elastic Load Balancing)を解説したいと思います。
ELBとは
ELBとはElastic Load Balancingの略称で、AWSが用意しているロードバランシングのためのマネージドサービスです。
負荷分散や冗長化するために複数用意したEC2などのAWSリソースに対して、リクエストを分散させる役割があります。
ロードバランサーとは
公開していたサービスが流行りユーザー数が増えるという場面を想像しましょう。最初は数十人までの利用を想定して用意したサーバーだと、一気に数千人まで使用するユーザが増えた場合、サーバの処理性能が足りなくなってしまいます。
こういった場合に対処する方法として、サーバーの台数を増やすスケールアウトという方法が取られます。この際、サーバーの台数を増やすのはいいですが、どうやって各サーバーへのアクセスを振り分けるのでしょうか。サーバーの台数を増やすということは、その分IPアドレスが増えることになりますし、ドメインも各サーバに対応させるには複数のドメインが必要になるのではないでしょうか。
そこで使用するのがロードバランサーです。
ロードバランサーはまず、クライアントからのアクセスを全て集め、処理できるサーバーにアクセスを振り分けることを行います。
これによって、クライアントはロードバランサーに対してのみリクエストをするだけで良くなり、サーバーのIPなどを意識する必要がなくなります。
また、複数用意したサーバーのうち、一つに障害が起きてしまった場合、ロードバランサーがそのサーバーに対してリクエストを振らないようにするため、障害の影響を最小限に抑えることができます。
ロードバランサーの役割
ロードバランサーの主な役割は下記の3つが挙げられます。
1.リクエストの分散
2.SSL処理
3.不正リクエスト対策
それぞれについて解説していきます。
1.リクエストの分散
まずは、リクエストの分散です。こちらは前項までで説明したところと同じになります。
用意した複数のサーバーに対して負荷分散されるよう適切にアクセスを振り分けます。
2.SSL処理
ロードバランサーはサーバーの代わりにクライアントからのリクエストを受け付けます。その際、SSL証明書をロードバランサーに配置しておくことで、SSLの暗号化および復号化処理をロードバランサーが行ってくれます。
3.不正リクエスト対策
不正なリクエストが送られた際、Webサーバー側で検知するようなプログラムを動かすこともできますが、大変な労力がかかります。ロードバランサーを使用することで、ロードバランサーが不正なリクエストを検知して処理してくれます。
ELBが提供しているロードバランサーの種類
ALB
まずは、ALB(Application Load Balancer)です。
HTTP(S)通信によるアクセスを分散させるためのロードバランサーになります。
負荷分散に加えて、SSL処理やセッションごとに分散対象を固定化するスティッキーセッション、アクセスログの記録、URIの文字列によって分散対象を変更するコンテントベースルーティングなどがあります。
NLB
次に、NLB(Network Load Balancer)です。
NLBには基本的な分散処理機能だけが備わっており、ソケット通信など様々な通信プロトコルに対応したロードバランサーとして使用できます。
GWLB
次に、GWLB(Gateway Load Balancer)です。
GWLBは、サードパーティの仮想アプライアンスをデプロイ、スケーリング、管理できるロードバランサーで、ファイアウォール、侵入検知防止システム、などのセキュリティ製品をAWSで利用する場合に適しています。GWLBを使用することで、仮想アプライアンスの可用性を向上させ、トラフィックを効率的に制御できます。
CLB
最後にCLB(Classic Load Balancer)です。
ALBやNLBが登場する前の古いロードバランサーになります。
SSL処理やセッションごとの分散、アクセスログの記録など機能のほとんどはALBに備えられているため、新規で使用することはほとんどありません。
今回は、ここまでになります。最後まで閲覧くださり、ありがとうございました。