Oracle Cloud Infrastructure Load Balancing(以下、OCI Load Balancer)サービスは、仮想クラウド・ネットワーク(VCN)内の複数のサーバに対して、1つのエントリーポイント(システムの最初、今回の場合LB本体)からのネットワーク・トラフィックを負荷分散させることができます。
Webアプリやデータベースなどが複数のサーバで構成されている大規模なシステムに対し、代表IPからアクセスを分散させることで、負荷の分散や可用性の担保を担っています。
今回は、コンピュート(OCI環境内におけるサーバ)にロードバランサを作成し、負荷分散機能の確認と注意点、良かった点をご紹介します。
ロードバランサとは
一般的なロードバランサは、システムに対するリクエストを複数のサーバに分散させ、処理のバランスを調整するための仕組みです。ロードバランサを導入することで、想定以上にアクセスが集中しても対象のサーバ台数を増やすことによって、負荷の分散ができるようになり安定したサービスを提供することができます。また、ロードバランス対象のサーバに対してはヘルスチェック(死活監視)を行っているため、サーバ障害が発生してもアクティブなサーバにのみリクエストを転送しサービス全体の停止を防ぐことができます。
OCI Load Balancerの利点としては、GUIでの構築ができ、直感的にわかりやすく構築ができる点になります。また、設定変更、編集も簡易にできるなど、取り組みやすいロードバランサだと思います。
次にOCI Load Balancerの仕組みについて説明します。
リクエストの流れは以下となります。
- クライアントからロードバランサの代表IP(100.10.10.1)に向けてリクエストを送信します。
- リクエストのポートが443の場合、ロードバランサはバックエンドセット1に対しリクエストを振り分けます。
- バックエンドセット1からロードバランサに対し、リクエストを返します。
- ロードバランサからクライアントに対し、ロードバランサが属しているサブネットのCIDR内で毎回自動的にIPが振られ、リクエストを返します。また、バックエンドセットのサーバからLBを介して外部のサーバにアクセスする際は、代表IPではなく、ロードバランサの属しているサブネットのCIDR内で自動的に振り分けられたIPでアクセスします。
ロードバランサに着信したパケットをサーバへ振り分けるロードバランシングにはいくつかの種類があります。その中でも代表的な方式についてご紹介します。
ラウンドロビン
クライアントからのリクエストをサーバに均等に転送する方式です。クライアントからのリクエストを比率に応じてサーバに分散します。
最少接続
クライアントをアクセス数の少ないサーバに転送します。アクセス数が非常に多い環境で少しでもアクセスが偏るとパフォーマンスに影響があるような場面で勧められます。
IPハッシュ
同じクライアントからの接続は同じサーバに飛ばします。アプリのログイン情報など、セッションを保ちたい場合に役立ちます。同じサーバにアクセスをしたい場合はこちらの使用が勧められます。
Oracle Cloud Infrastructure Load Balancingの構築
1.同じコンパートメント内にコンピュートを2つ用意し、HTTPサーバをインストールしておきます。このときコンピュートのネットワークはVCN(仮想クラウド・ネットワーク)、サブネット(仮想クラウド・ネットワーク内におけるネットワークのグループ)共にDefaultでかまいません。
また、同じVCN内にLB用のサブネットを用意します。
2.左上のメニュー>ネットワーキング>ロードバランサを選択 を押下します。
3.可用性タイプの選択:パブリック
パブリックIPアドレスの割り当て:エフェメラルIPアドレス
(注意)
ロードバランサにはシェイプを選ぶ際、「動的シェイプ」と「フレキシブルシェイプ」の2種類がありますが、オラクル社より2023年5月(UTC)に、新規固定シェイプ(動的シェイプ)でのロードバランサを作成する機能が廃止されることが発表されています。
オラクル社では、コスト効率に優れた柔軟なロードバランサを使用することを勧めていますが、既存の動的シェイプ・ロード・バランサは引き続きサポートされます。
4.帯域幅:最小値10Mbps 最大値10Mbps
ネットワーキングの選択
VCN:コンピュートの作成時に使用したVCNを選択
サブネット:LB用のサブネット
5.ポリシーの設定:重み付けロビン
バックエンドサーバ(ロードバランサから振り分けられるコンピュート)の選択:作成しておいたコンピュートを選択
また、バックエンドをまとめたグループのことをバックエンドセットといいます。
6.ヘルスチェックポリシーの設定:今回バックエンドに選択したコンピュートでHTTPサーバをインストールしているため各デフォルト
7.リスナーの構成 リスナー名:任意 トラフィックタイプ:HTTP ポート:80
リスナーとは、ロードバランサが受信したトラフィックと同じプロトコルを設定し、バックエンドに送信するための橋渡しのような役割をしています。今回はHTTPのポート80を設定し、外部からの受信をバックエンドに設定したコンピュートにつなぎます。
8.ロギングの管理 エラーログ:有効 コンパートメント:自環境
ロググループ:任意 ログ名:任意 ログの保持:1カ月
9.ロギングの管理 アクセスログ:有効 コンパートメント:自環境
ロググループ:エラーログと同グループ ログ名:任意 ログの保持:1カ月
10.構築完了
11.バックエンドのヘルスチェック確認
ここが「OK」でない場合、ロードバランサとバックエンドでうまく疎通ができていないことが分かります。
Oracle Cloud Infrastructure Load Balancingの機能検証
- 外部からの接続確認
代表IP(同じアドレス)で1号機、2号機どちらにもアクセスできることを確認します。 - 片系停止時の動作確認(test1コンピュート停止)
片方のコンピュートを停止してもアクセスでき、実行しているコンピュートに振り分けられることを確認します。 - 片系停止からの復旧(test1コンピュート起動)
再度起動し、両コンピュートにアクセスできることを確認します。
おわりに
ロードバランサを導入することで簡単に負荷分散を実現することができます。スケーラビリティ(拡張性)やアベイラビリティ(可用性)の向上も大きなメリットです。
また、OCI Load Balancerは、GUIでの構築ができるため直感的に分かりやすく、他のロードバランサに対して難しいイメージを持たれている方や、ロードバランサを構築したことがない方にとって、初めて構築するロードバランサとして非常におすすめです。
今回は触れませんでしたが、OCIにはLBのバックエンドセットに対するヘルスチェックや帯域幅などに対してモニタリングを行える機能があるので、活用されると良いかもしれません。
OCI Load Balancerついて、ご不明な点はシステムエグゼまでお問い合わせください。
- カテゴリ:
- エンジニアリング