1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ロードバランサー基礎の基礎[概要 + AWS]

Last updated at Posted at 2024-11-01

最近、AWSを使ったインフラタスクを簡単なものから対応することが増えてきており、
その中で調べた内容などをまとめていこうと思います。
今回はロードバランサーについての基本概要についてまとめました。

⭐️ロードバランサーの一般的な概念

前提

複数のアプリケーションサーバーがあること。
(ロードバランサーから振り分けるので。)

ロードバランサーは何をするの?

アクセスに対して、前提に書いた複数のアプリケーションサーバーへの振り分けを行います。
それによりサーバーの負荷を分散させ、高可用性を提供します。
ロードバランサーには仮想IPアドレスが割り当てられており、そこにアクセスがあると、そこから各アプリケーションサーバの状態(今ちょっと忙しいとか、負荷が低いとか)を考慮して、調子が良さそうなサーバーに振り分けます。

ロードバランサーがもつ機能

  • ロードバランサー自体を冗長化する
  • パーシステンス(persistence)
    • 持続性。IPやクッキーで判定し、同じユーザーからのアクセスは同じサーバに振り分ける。
    • ユーザー側からすると、きちんとログイン情報などを維持することができる。
  • ヘルスチェック
    • 振り分け先のアプリケーションサーバーが正常な状態かを確認し、問題のないサーバーのIPをリクエスト先に返します。

DNSラウンドロビンとは?

ロードバランサーについて調べると、DNSラウンドロビンとの違いを説明している情報が多くありました。そのDNSラウンドロビンとは・・・

・ロードバランサーは使わず
・DNSサーバーが順にアプリケーションサーバーのIPアドレスを返し
・アクセスを分配する

というものです。
ヘルスチェックはせずに順番に対象のIPアドレスを返すので、たとえば障害の落ちているサーバーにも振り分けたり、セッションも管理しない異なるサーバーに振り分けることもあります。とにかく無心に振り分ける。

⭐️AWSにおけるロードバランサーとは?

EC2で設定可能です。左サイドのメニューから「ロードバランサー」を選び、右上の「ロードバランサーの作成」から確認できます。0.png
作成できるロードバランサーを選択します。ここで4種類のロードバランサーがあることを確認できます。
1.png

✅ロードバランサーの種類

◼️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:レガシーな設定での互換性が必要な場合。
ただし、基本的には新しいインフラには推奨されません。

◼️(もう少し噛み砕く)どのケースで、どのロードバランサーを選ぶべきか?

  • Webアプリケーション(L7レベルのルーティングが必要な場合)ALB(Application Load Balancer)を使用。
  • 高パフォーマンスかつL4レベルのトラフィック分散が必要な場合NLB(Network Load Balancer)を使用。
  • 古いシステムやシンプルな負荷分散が必要な場合CLB(Classic Load Balancer)を使用。新しいインフラには推奨されません。
特徴 ALB(Application Load Balancer) NLB(Network Load Balancer) CLB(Classic Load Balancer)
OSIモデル層 L7(アプリケーション層) L4(トランスポート層) L4/L7
対応プロトコル HTTP、HTTPS、WebSocket TCP、UDP、TLS HTTP、HTTPS、TCP
ルーティング 高度なルーティング(パス、ヘッダー) シンプルなポートベースのルーティング 基本的なラウンドロビン
WebSocket対応 あり なし なし
コンテナ対応 あり あり なし
高スループット 中程度 高い 中程度
固定IPアドレス なし(ALBはDNSベース) あり(Elastic IPが使用可能) なし

今までの認識としては「サーバーアクセスを平均的に振り分けて負荷を平均化する」くらいものでしたが、概念をまとめてみて、少しだけ理解ができたと思います。

◼️参考記事

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?