ロードバランサーについて検証してみました。

みなさま、こんにちは。
Oracle Cloud Infrastructure 検証チームです。

今回は、OCIの応用チュートリアル「ロードバランサーでWebサーバーを負荷分散する」を参考に、
ロードバランサーについて検証してみました。

今回の執筆者はプライベートDNSで名前解決してみた!も執筆しています。
是非確認下さい!

ロードバランサーとは

OCIのロードバランサー・サービスは、VCN(仮想クラウド・ネットワーク)内の複数のサーバーに対し、ネットワークトラフィックを分散させるサービスです。

パブリックIPアドレスの分散を行うパブリック・ロードバランサーと、プライベートIPアドレスの分散を行うプライベート・ロードバランサーの2種類があり、双方のタイプのロードバランサーとも、一定の帯域(100MB/s~8000MB/s)の保証と、高可用性がデフォルトで提供されます。

検証の流れ

検証の流れ

今回は以下のような流れで検証していきます。

  1. 環境構築
  2. Webサーバーの起動・設定
  3. ロードバランサーの構成
  4. ロードバランサーへの通信許可設定
  5. ロードバランサーの動作確認

前提条件

前提条件は以下の通りです。

  • プライベートサブネットとパブリックサブネットが1つずつ存在するVCNを作成済みであること
  • それぞれのサブネットにセキュリティリストを作成済みであること
  • プライベートサブネットに2台のLinuxインスタンスが作成済みであること
  • 要塞等を利用してLinuxインスタンスにssh接続できること

検証開始

それでは早速検証を始めていきます!

環境構築

今回は実際に構築することが多い構成に近づけるため、チュートリアルとは少し構成を変えてみます。
以下の図のようにプライベートサブネットにWebサーバー2台、パブリックサブネットにロードバランサーを構成します。

Webサーバーをプライベートサブネットに置くことで、直接外部から接続されることを簡単に防ぐことができます。

まずは、プライベートサブネットにLinuxインスタンスを2台作成します。

インスタンスへのssh接続を行うために、今回は要塞サービスを有効にしておきます。

そして、パッケージインストールを行うためにサービスゲートウェイを作成し、プライベートサブネットのルート表を以下のように設定しておきます。

Webサーバーの起動・設定

事前に作成したインスタンス2台に対して、要塞等を利用してssh接続します。
要塞の利用方法は「Bastionサービスを使って、パブリックIPを持たないインスタンスに接続しよう!」をご参照ください!

まずはApache HTTPサーバーをインストールします。

sudo yum -y install httpd

次にファイアウォールでTCP80番(http)と443番(https)の穴あけを行います。

sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp

ファイアウォールをリロードします。

sudo firewall-cmd --reload

Webサーバーを起動します。

sudo systemctl start httpd

Webサーバーにアクセスした際にどちらのサーバーかを判別するためのファイルを作成します。

1号機では以下を実行します。

sudo sh -c 'echo "Web Server 1 (host:`hostname`)" > /var/www/html/index.html'

2号機では以下を実行します。

sudo sh -c 'echo "Web Server 2 (host:`hostname`)" > /var/www/html/index.html'

これでWebサーバーの起動・設定は完了です。

ロードバランサーの構成

次にロードバランサーを作成していきます。

コンソールメニューからネットワーキング>ロードバランサを選択し、「ロード・バランサの作成」をクリックします。

今回は以下のように設定します。

  • ロード・バランサ名:任意
  • パブリックIPアドレスの割当て:エフェメラルIPアドレス
  • 帯域幅:フレキシブル・シェイプ
  • 最小帯域幅/最大帯域幅:共に10Mbps
  • 仮想クラウド・ネットワーク:本環境のVCN
  • サブネット:本環境のパブリックサブネット

その他は任意で設定し、「次」をクリックします。

ロードバランサーから負荷分散を行うバックエンド・サーバーの選択を行います。
インスタンスの追加」をクリックします。

先ほど作成したWebサーバー2台を選択し、「インスタンスの追加」をクリックします。

バックエンド・サーバーが選択できました。

その他の設定は基本的にデフォルトで構成します。

ここでは「セキュリティ・リスト・ルールを自動的に追加します」が選択されていること、
エグレス、イングレスともにあらかじめ作成したセキュリティリストが選択されていること、
右にあるチェックボックスにチェックが入っていることを確認します。

「次」をクリックします。

リスナーの設定を行います。今回は検証のため、トラフィックタイプをHTTPに設定します。

「次」をクリックします。

確認画面が表示されます。「送信」をクリックします。

ロードバランサーが作成できました。しばらく待つとアクティブになり、全体的なヘルスもOKになります。
ヘルスがOKにならない場合は、インスタンスが起動しているかなどを確認してください。
また、動作確認の際に使用するので、ロードバランサーのIPアドレスを控えておいてください。

セキュリティリストを確認すると、先ほど選択したセキュリティリストに
自動的にルールが追加されていることが分かります。

こちらはWebサーバーが存在するプライベートサブネットのイングレスルールです。
一番下のルールが追加されています。

こちらはロードバランサーが存在するサブネットのセキュリティリストです。
一番下のルールが追加されています。

ロードバランサーへの通信許可設定

続いてロードバランサーへの通信許可設定を行います。

コンソールメニューからネットワーキング>仮想クラウド・ネットワークを選択し、
今回使用しているVCN名をクリックします。

左側メニュー「セキュリティ・リスト」を選択し、ロードバランサーが使用しているセキュリティリストをクリックします。

イングレス・ルールの追加」をクリックします。

以下の通り設定を入力し、「イングレス・ルールの追加」をクリックします。

  • ステートレス:いいえ
  • ソースCIDR:0.0.0.0/0
  • IPプロトコル:TCP
  • ソース・ポート範囲:ALL
  • 宛先ポート範囲:80

ルールが追加できました。

ロードバランサーの動作確認

いよいよロードバランサーの動作確認です。

ブラウザを開き、先ほど確認したロードバランサーのIPアドレスにアクセスします。
Web Server1またはWeb Server2と表示されることを確認します。

F5キーまたはリロードボタンを何度か押し、ブラウザのリロードを行います。
何度か押してWeb Server1とWeb Server2の表示が切り替わることを確認します。

上手く切り替わればロードバランサーの構成が成功しています!

おわりに

今回はロードバランサーについて検証してみました。
簡単な設定でWebサーバーなどの負荷分散ができることが分かりました。

みなさまもぜひ、簡単に活用できるOracle Cloudを試してみてください!

Webサーバ構築がこれからの方は
OCIで簡単なWebサーバを作ってみた!も合わせてどうぞ!

投稿者プロフィール

技術チーム
技術チーム
DBひとりでできるもんを盛り上げるべく、技術チームが立ち上がり早8年。ひとりでできるもんと言いつつ、技術者が読んでプッとなるような、極めてピンポイントでマニアックな技術ネタを執筆しています!
最新技術情報や資格情報をチェックしたいアナタ!毎日遊びに来てください。きっとお役に立てます。