最近、AWSを使ったインフラタスクを簡単なものから対応することが増えてきており、
その中で調べた内容などをまとめていこうと思います。
今回はロードバランサーについての基本概要についてまとめました。
⭐️ロードバランサーの一般的な概念
前提
複数のアプリケーションサーバーがあること。
(ロードバランサーから振り分けるので。)
ロードバランサーは何をするの?
アクセスに対して、前提に書いた複数のアプリケーションサーバーへの振り分けを行います。
それによりサーバーの負荷を分散させ、負荷分散や高可用性を提供します。
ロードバランサーには仮想IPアドレスが割り当てられており、そこから各アプリケーションサーバの状態を考慮して、それぞれのサーバーに振り分けます。
ロードバランサーがもつ機能
- ロードバランサー自体を冗長化する
- パーシステンス(persistence)
- 持続性。IPやクッキーで判定し、同じユーザーからのアクセスは同じサーバに振り分ける。
- ユーザー側からすると、きちんとログイン情報などを維持することができる。
- ヘルスチェック
- 振り分け先のアプリケーションサーバーが正常な状態かを確認し、問題のないサーバーのIPをリクエスト先に返します。
DNSラウンドロビンとは?
ロードバランサーについて調べると、DNSラウンドロビンとの違いを説明している情報が多くありました。そのDNSラウンドロビンとは・・・
・ロードバランサーは使わず
・DNSサーバーが順にアプリケーションサーバーのIPアドレスを返し
・アクセスを分配する
というものです。
ヘルスチェックはせずに順番に対象のIPアドレスを返すので、たとえば障害の落ちているサーバーにも振り分けたり、セッションも管理しない異なるサーバーに振り分けることもあります。
⭐️AWSにおけるロードバランサーとは?
EC2で設定可能。
左サイトからロードバランサーを選び、右上の「ロードバランサーの作成」から確認できます。
作成できるロードバランサーを選択します。ここで4種類のロードバランサーがあることを確認できます。
◼️Application Load Balancer(ALB)
◼️Network Load Balancer(NLB)
◼️Gateway Load Balancer(GWLB)
◼️Classic Load Balancer(CLB)
これらを総称してELB(Elastic Load Balancing)と呼びます。
それぞれの特性、詳細はこちら。
https://docs.aws.amazon.com/ja_jp/autoscaling/ec2/userguide/autoscaling-load-balancer.html
それぞれのロードバランサーは、ざっくりとどんな時に使うものなのか?
以下のような認識でいるとよさそうです。
◼️ALB:HTTP/HTTPS トラフィックやルーティングが必要な場合。
Webアプリケーション(L7レベルのルーティングが必要な場合)の場合。
◼️NLB:低レイテンシ、非HTTP/HTTPSトラフィック、または固定IPが必要な場合。
高パフォーマンスかつL4レベルのトラフィック分散が必要な場合。
◼️GWLB:セキュリティ・トラフィック管理をしたい場合
◼️CLB:レガシーな設定での互換性が必要な場合。
ただし、基本的には新しいインフラには推奨されません。
今までの認識としては「サーバーアクセスを平均的に振り分けて負荷を平均化する」くらいものでしたが、概念をまとめてみて、少しだけ理解ができたと思います。
◼️参考記事