Oracle Cloud Infrastructure Load Balancing(OCI Load Balancer)でWebサーバの負荷を分散する

 2022.09.08  株式会社システムエグゼ オラクルクラウドチーム

Oracle Cloud Infrastructure Load Balancing(以下、OCI Load Balancer)サービスは、仮想クラウド・ネットワーク(VCN)内の複数のサーバに対して、1つのエントリーポイント(システムの最初、今回の場合LB本体)からのネットワーク・トラフィックを負荷分散させることができます。

Webアプリやデータベースなどが複数のサーバで構成されている大規模なシステムに対し、代表IPからアクセスを分散させることで、負荷の分散や可用性の担保を担っています。

今回は、コンピュート(OCI環境内におけるサーバ)にロードバランサを作成し、負荷分散機能の確認と注意点、良かった点をご紹介します。

“無償”でクラウド移行の意思決定に必要な情報を提供
OCIに特化した無償移行アセスメントサービス

「高品質・低コストなOracle Cloudに移行したいがノウハウがない」「まだ比較検討段階で外部にアセスメントを依頼する予算がない」「まるっとクラウド移行を任せられるベンダーが欲しい」などのお困りごとは、ぜひ私たちシステムエグゼへご相談ください。

3回のワークショップでスピーディーにお客さまのシステムのアセスメント結果をご提供します!

サービスの詳細はこちらから

ロードバランサとは

一般的なロードバランサは、システムに対するリクエストを複数のサーバに分散させ、処理のバランスを調整するための仕組みです。ロードバランサを導入することで、想定以上にアクセスが集中しても対象のサーバ台数を増やすことによって、負荷の分散ができるようになり安定したサービスを提供することができます。また、ロードバランス対象のサーバに対してはヘルスチェック(死活監視)を行っているため、サーバ障害が発生してもアクティブなサーバにのみリクエストを転送しサービス全体の停止を防ぐことができます。

OCI Load Balancerの利点としては、GUIでの構築ができ、直感的にわかりやすく構築ができる点になります。また、設定変更、編集も簡易にできるなど、取り組みやすいロードバランサだと思います。

次にOCI Load Balancerの仕組みについて説明します。

リクエストの流れは以下となります。

  1. クライアントからロードバランサの代表IP(100.10.10.1)に向けてリクエストを送信します。
  2. リクエストのポートが443の場合、ロードバランサはバックエンドセット1に対しリクエストを振り分けます。
  3. バックエンドセット1からロードバランサに対し、リクエストを返します。
  4. ロードバランサからクライアントに対し、ロードバランサが属しているサブネットのCIDR内で毎回自動的にIPが振られ、リクエストを返します。また、バックエンドセットのサーバからLBを介して外部のサーバにアクセスする際は、代表IPではなく、ロードバランサの属しているサブネットのCIDR内で自動的に振り分けられたIPでアクセスします。

OCI Load Balancerの仕組み
ロードバランサに着信したパケットをサーバへ振り分けるロードバランシングにはいくつかの種類があります。その中でも代表的な方式についてご紹介します。

ラウンドロビン
クライアントからのリクエストをサーバに均等に転送する方式です。クライアントからのリクエストを比率に応じてサーバに分散します。

最少接続
クライアントをアクセス数の少ないサーバに転送します。アクセス数が非常に多い環境で少しでもアクセスが偏るとパフォーマンスに影響があるような場面で勧められます。

IPハッシュ
同じクライアントからの接続は同じサーバに飛ばします。アプリのログイン情報など、セッションを保ちたい場合に役立ちます。同じサーバにアクセスをしたい場合はこちらの使用が勧められます。

クラウド利用における三大課題と理想的なクラウド運用
忖度無しの徹底比較! Oracle Cloud Infrastructure VS Amazon Web Services

Oracle Cloud Infrastructure Load Balancingの構築

1.同じコンパートメント内にコンピュートを2つ用意し、HTTPサーバをインストールしておきます。このときコンピュートのネットワークはVCN(仮想クラウド・ネットワーク)、サブネット(仮想クラウド・ネットワーク内におけるネットワークのグループ)共にDefaultでかまいません。
また、同じVCN内にLB用のサブネットを用意します。
コンパートメント内のInstances


LB_subnet


LB_route


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号機どちらにもアクセスできることを確認します。
    Web Server 1

    Web Server 2

    外部からの接続確認
  • 片系停止時の動作確認(test1コンピュート停止)
    片方のコンピュートを停止してもアクセスでき、実行しているコンピュートに振り分けられることを確認します。

    片系停止時の動作確認 1

    片系停止時の動作確認 2

    片系停止時の動作確認 3
  • 片系停止からの復旧(test1コンピュート起動)
    再度起動し、両コンピュートにアクセスできることを確認します。

    片系停止からの復旧 1
    片系停止からの復旧 2
    片系停止からの復旧 3
    片系停止からの復旧 4

おわりに

ロードバランサを導入することで簡単に負荷分散を実現することができます。スケーラビリティ(拡張性)やアベイラビリティ(可用性)の向上も大きなメリットです。

また、OCI Load Balancerは、GUIでの構築ができるため直感的に分かりやすく、他のロードバランサに対して難しいイメージを持たれている方や、ロードバランサを構築したことがない方にとって、初めて構築するロードバランサとして非常におすすめです。

今回は触れませんでしたが、OCIにはLBのバックエンドセットに対するヘルスチェックや帯域幅などに対してモニタリングを行える機能があるので、活用されると良いかもしれません。

OCI Load Balancerついて、ご不明な点はシステムエグゼまでお問い合わせください。

Oracle Cloudのすすめクラウド移行まるわかりガイド

RECENT POST「エンジニアリング」の最新記事


エンジニアリング

Oracle Cloud Infrastructureのチュートリアルで使い方の基本を学ぼう

エンジニアリング

OCIロードバランサの基本構造、作成手順をわかりやすく解説!

エンジニアリング

Oracle Cloudの基本サービス(compute、storage、network)を理解しよう

エンジニアリング

Oracle Cloud Infrastructure(OCI)とは?特長と導入メリットをわかりやすく解説

Oracle Cloud Infrastructure Load Balancing(OCI Load Balancer)でWebサーバの負荷を分散する