不特定多数のユーザが日々アクセスするWebサイトには、サーバダウンのリスクが常に潜んでいます。ユーザからのリクエストが短時間に集中すると、1台のサーバでは処理しきれない恐れまであるのです。
サーバを安定的に稼働させてユーザからの信頼を維持するうえで、サーバの負荷分散が鍵となります。それを可能にするのが「ロードバランサ」です。Oracle Cloud Infrastructure(OCI)を始めとしたクラウドサービスをお使いの方は、ロードバランサについて理解しておく必要があります。そこで今回はこのロードバランサについて、基礎知識から作成手順まで紹介します。
ロードバランサとは
Webサイトの稼働に欠かせないサーバは、不特定多数のユーザから受け取ったリクエストを常に処理する必要があります。リクエストにより生じるトラフィック量は流動的なため、1台のサーバにリクエストが集中することもあるでしょう。
サーバの処理能力を超えたリクエストが発生すると、レスポンス速度の低下は避けられません。最悪の場合、サーバがダウンし、ユーザが利用できなくなる恐れもあります。こうしたリスクを低減するための仕組みが「ロードバランサ」です。
ロードバランサはクライアントからのリクエストを集約し、処理負荷の少ないサーバへ振り分けます。そうすることで複数サーバによる処理負荷の分散が可能となり、リクエストの集中を防止できるのです。つまり「複数のサーバをバランスよく稼働させる」ことが、ロードバランサの端的な機能と言えます。
ロードバランサの特長
ロードバランサは、Webサイトのトラフィック量に応じて自動で帯域幅(周波数の範囲)を拡張できます。その結果、1度に通信できるデータ容量が増加し、サーバ1台の処理能力を超えたリクエストの処理が可能となるのです。サーバを追加することでWebサイトの需要拡大にも対応しやすくなり、拡張性の向上につながります。
また、ロードバランサには、サーバの稼働状況を監視する機能もあります。あるサーバで障害を検出した場合、リクエスト送信を停止し、正常稼働しているサーバへ振り分けることが可能です。結果としてWebサイト自体が稼働停止するリスクを低減し、信頼性・可用性の向上につながります。
OCIロードバランサの基本構造
ここでは、OCIにおけるロードバランサの基本構造について解説します。
OCIにより構成されるシステムは、冗長化された複数の「可用性ドメイン」を持ちます。各可用性ドメインは、複数のサーバを含む内部コンポーネントを統合したものです。ロードバランサが振り分ける可用性ドメインやサーバの特定は、それぞれに割り当てられた「LBサブネット」「Webサブネット」により行われます。
OCIロードバランサに割り当てられるIPアドレスは単一のもので、システムの起動から終了まで変わりません。Webサイトへのトラフィックは、すべてOCIロードバランサに集約されます。OCIロードバランサが各可用性ドメイン・サーバの稼働状態を判断し、リクエストを適切に振り分けます。そのため、サーバの障害時やメンテナンス時でも、Webサイトの稼働を継続できるのです。
FLBとNLBの機能比較
OCIロードバランサには、「フレキシブル・ロードバランサ(FLB)」と「ネットワーク・ロードバランサ(NLB)」の2種類が存在します。
FLBはOCIリリース初期から存在する有償サービスで、一般的なロードバランサと同様の仕組みです。まず、クライアントからのリクエストをロードバランサが受信。そして、新たなTCPコネクションを確立したうえで、適切なサーバへ送信します。FLBがクライアントとサーバを仲介することで、高精度かつ自由度の高い振り分けが可能となります。
一方のNLBは、2021年3月にリリースされた無償サービスです。ユーザからのリクエストを異なる接続に切り替えることなく、適切なサーバへそのまま送信します。FLBとは違い、接続の切り替えが発生しない分、リクエストをよりスピーディーに処理することが可能です。ただし、バランシング機能に関してはFLBの方が多彩で優れています。
FLBとNLBには、ほかにも対応プロトコルなど多くの相違点があります。詳しくは、下記の表をご覧ください。
|
対応プロトコル |
レイヤー3/4バランシング機能 |
レイヤー7バランシング機能 |
リスナーの最大数 |
---|---|---|---|---|
FLB | TCP、HTTPS、TCP | あり | あり | 16 |
NLB | TCP、UDP、ICMP | あり | なし | 50 |
ロードバランサの作成手順
ロードバランサの作成手順は、クラウドサービスにより異なります。ここでは一例として、OCIロードバランサにおける作成手順を整理して紹介します。
手順①
まずは「VCN(仮想クラウド・ネットワーク)」を作成します。VCNはOCIユーザが個別で作成する専用ネットワークで、仮想的なネットワークシステムを構成するために必要不可欠です。
次に、VCN内の全サーバを配置するための「リージョナルサブネット」を作成します。リージョナルサブネットは、物理的に同じ領域(リージョン)にある可用性ドメインであれば、すべて共通で利用できるサブネットです。
このリージョナルサブネットには、実際に利用するサーバの数だけ「インスタンス」を作成します。OCIにおけるインスタンスとは、サーバなどのコンポーネントを抽象化して管理するための概念です。各サーバが物理的に所属する可用性ドメイン内に、正しくインスタンスを作成する必要があります。
手順②
ロードバランサが参照する「ルートテーブル」と「セキュリティリスト」を作成します。作成したルートテーブルには、ロードバランサから各サーバへの接続経路を一通り列挙しなければなりません。
一方のセキュリティリストは、VCN内の通信におけるセキュリティルールを列挙するために使います。ただし、セキュリティルールはOCIのシステムにより自動で追加されるため、ここで定義する必要はありません。
手順③
ロードバランサが外部からのリクエストを受け取るための「リージョナルパブリックサブネット」を作成します。インターネットと通信するために、パブリック属性のサブネットとする必要があります。手順①で作成したサーバ用のサブネットと同様に、同一リージョン内の全可用性ドメインが共通で利用可能です。
手順④-1
手順③で作成したリージョナルパブリックサブネット内に「パブリックロードバランサ」を作成します。VCN内に存在するすべての可用性ドメインに対して、それぞれ1つずつ必要です。
手順④-2
「バックエンドセット」を作成します。バックエンドセットとは、VCN内の全サーバをまとめるグループのことです。バックエンドセットには、下記の4パラメータを設定します。
- Name
- Policy
- SSL
- Health Check(サーバの状態を監視するためにロードバランサが送信するテストデータ)
また、作成したバックエンドセットには、VCN内に存在する全サーバ情報の登録が必要です。具体的には、下記の3パラメータをサーバごとに設定します。
- Instance
- Port
- Weight(リクエストを振り分ける割合の重み付け)
なお、このとき設定した情報を基に、手順②で作成したセキュリティリストに、必要なセキュリティルールが自動で追加されます。
手順④-3
ロードバランサが受信するトラフィックをチェックするための「リスナー」を追加します。TCP、HTTPS(またはHTTP)といったトラフィックの通信プロトコルごとに、最低1つ以上のリスナーが必要です。各リスナーには、下記の5パラメータを設定します。
- Name
- Protocol
- Port
- SSL
- Backend Set(手順④-2で作成したもの)
手順⑤
手順④-2で自動追加されたセキュリティルールには、リスナーによるトラフィックの受け入れ設定があります。この設定を許可することで、リスナーがトラフィックを受信できるようになります。
まとめ
今回はロードバランサについて、基礎知識から作成手順まで紹介しました。ロードバランサを作成し、Webサイトの信頼性・可用性の向上に取り組む際には、ぜひ参考にしてください。
Webサイトのユーザ数が増加すればするほど、サーバにはより大きな負荷がかかりやすくなります。こうした状況でもWebサイトを安定的に稼働させるためには、ロードバランサによりサーバの負荷を分散することが重要です。これからクラウドサービスの導入・移行をお考えの方には、Oracle Cloud Infrastructureがおすすめです。世界トップシェアのデータベース管理システムであるOracle Databaseを、スピーディーにクラウド化できます。
システムエグゼは多数のOracle Cloud Infrastructure導入実績がございます。お気軽にご相談ください。
- カテゴリ:
- OCI基礎知識