ロードバランサーでWebサーバーを負荷分散する - Oracle Cloud Infrastructureアドバンスド

Version 24

    目次に戻る : チュートリアル : Oracle Cloud Infrastructure を使ってみよう

     

     

    Oracle Cloud Infrastructure ロードバランサー・サービスを利用することにより、仮想クラウド・ネットワーク(VCN)内の複数のサーバーに対して一つのエントリーポイントからのネットワーク・トラフィックを分散させることができます。ロードバランサー・サービスは、パブリックIPアドレスの分散を行うパブリック・ロードバランサーと、プライベートIPアドレスの分散を行うプライベート・ロードバランサーの2種類が提供されます。双方のタイプのロードバランサーとも、一定の帯域(100MB/s~8000MB/s)の保証と、高可用性がデフォルトで提供されます。またパブリック・ロードバランサーについてはVCN内の2つの異なるサブネットに跨って構成されるため、アベイラビリティ・ドメイン全体の障害に対する耐障害性が提供されます。

     

    この章では、シンプルなパブリック・ロードバランサーを構成し、VNC内の2台のWebサーバーに対する負荷分散を構成する手順について学習します。

     

    所要時間 : 50分

     

    前提条件 :

    1. クラウドに仮想ネットワーク(VCN)を作る - Oracle Cloud Infrastructureを使ってみよう(その2)  を通じて仮想クラウド・ネットワーク(VCN)の作成が完了していること
    2. 2048bit 以上のRSA鍵ペアを作成していること

     

    注意 : チュートリアル内の画面ショットについては Oracle Cloud Infrastructure の現在のコンソール画面と異なっている場合があります

     

    1. 仮想クラウド・ネットワークと2つのサブネットの作成

     

    クラウドに仮想ネットワーク(VCN)を作る - Oracle Cloud Infrastructureを使ってみよう(その2)  を参考に、仮想クラウド・ネットワーク(VCN)および付随するネットワーク・コンポーネントを作成してください。

    作成時に CREATE VIRTUAL CLOUD NETWORK PLUS RELATED RESOURCES オプションで作成することで、簡単に今回のチュートリアルに必要なVCNおよび付随コンポーネントを作成することができます。

    作成が完了すると、以下のようなネットワークが作成されています。

     

     

    2. 2つのインスタンスの作成とWebサーバーの起動

     

    インスタンスを作成する - Oracle Cloud Infrastructureを使ってみよう(その3) を参考に、2つの異なるパブリック・サブネットにそれぞれ仮想マシン・インスタンスを作成してください。

     

    インスタンスが2つ起動したら、以下の手順に従ってそれぞれにWebサーバーを起動します。

     

    1. sshで2つのインスタンスにアクセスします
      インスタンスへのsshでのアクセス方法が不明な場合は、 インスタンスを作成する - Oracle Cloud Infrastructureを使ってみよう(その3) を参考にしてください。

      以下の手順は、2つのインスタンスに対してそれぞれsshセッションを起動することで、同時に作業を実行して時間を短縮することができます

    2. Apache HTTPサーバーをインストールします

      sudo yum -y install httpd

    3. TCPの80番(http)および443番(https)ポートをオープンします

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

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

    4. ファイアウォールを再ロードします

      sudo firewall-cmd --reload

    5. Webサーバーを起動します

      sudo systemctl start httpd

    6. index.html ファイルを作成し、それぞれにどちらのWebサーバーかを示す文字列を記述します。
      1台目のWebサーバーで以下を実行します。

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


      次に2台めのWebサーバーで以下を実行します。

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

    3. ロードバランサー用のサブネットの作成

    ロードバランサーは、先ほど作成したWebサーバーと同じサブネットに配置することも可能ですが、別のサブネットに配置することでWebサーバーをプライベート・サブネット上に配置して外部から直接アクセスされることを防ぐことができるようになります。

    今回は、Webサーバーが配置されているサブネットとは別のパブリック・サブネットを2つ作成し、そこにロードバランサーを配置していきます。

     

    3-1. ロードバランサー用のセキュリティ・リストの追加

     

    1. コンソールメニューから NetworkingVirtual Cloud Networks を選択し、リストから今回Webサーバーが存在する仮想クラウド・ネットワークの名称のリンクを押します

    2. 画面左下部の Resources メニューにある Security Lists を選択し、Create Security List ボタンを押します

    3. 立ち上がった Create Security List ウィンドウに以下の項目を入力し、Create Security List ボタンを押します
      • CREATE IN COMPARTMENT - デフォルトで現在のコンパートメントが選択されています。もし別のコンパートメントに作成したい場合は選択します
      • SECURITY LIST NAME - 任意 (画面はLoad Balancer Security Listとして入力しています)
      • Ingress RuleEgress Rule のエントリーをすべて削除

        この時点ではセキュリティリストにはルールを付与しないでください。後の作業ステップにおいてロードバランサーを作成した際に、適切なルールが自動的に付与されます


        WS000489.JPG

    3-2. ロードバランサー用のルート・テーブルの追加

     

    1. 画面左下部の Resources メニューにある Route Tables を選択し、Create Route Tables ボタンを押します

    2. 立ち上がった Create Route Table ウィンドウに以下の項目を入力し、Create Route Table ボタンを押します
      • CREATE IN COMPARTMENT - デフォルトで現在のコンパートメントが選択されています。もし別のコンパートメントに作成したい場合は選択します
      • NAME - 任意 (画面はLoad Balancer Route Tableとして入力しています)
      • CIDR BLOCK - 0.0.0.0/0
      • TARGET TYPE - Internet Gateway を選択
      • TARGET COMPARTMENT - デフォルトで現在のコンパートメントが選択されています。もし別のコンパートメントに作成したい場合は選択します
      • TARGET - VCNのインターネットゲートウェイを選択

        WS000490.JPG

    3-3. ロードバランサー用の1つめのサブネットの追加

     

    1. 画面左下部の Resources メニューにある Subnets を選択し、Create Subnet ボタンを押します

    2. 立ち上がった Create Subnet ウィンドウに以下の項目を入力し、Create Subnet ボタンを押します
      • NAME - 任意 (画面では Load Balancer Subnet 1 と入力しています)
      • AVAILABILITY DOMAIN - AD-1 を選択 (集合ハンズオン研修の場合は講師の指示に従ってください)
      • CIDR BLOCK - 10.0.4.0/24
      • ROUTE TABLE - ステップ3-2で作成したルート・テーブルを選択 (画面では Load Balancer Route Table を選択しています)
      • SUBNET ACCESS - PUBLIC SUBNET を選択
      • DNS RESOLUTION - チェックを外す
      • DHCP OPTIONS - 入力なしのまま
      • Security Lists - ステップ3-1で作成したセキュリティ・リストを選択 (画面では Load Balancer Security List を選択しています)

        WS000491.JPG

    3-3. ロードバランサー用の2つめのサブネットの追加

     

    2つめのロードバランサー用のサブネットを追加します。3-2で追加した1つめのサブネットとは異なるアベイラビリティ・ドメインに作成してください。

     

    1. もう一度 Create Subnet ボタンを押します

    2. 立ち上がった Create Subnet ウィンドウに以下の項目を入力し、Create Subnet ボタンを押します
      • NAME - 任意 (画面では Load Balancer Subnet 2 と入力しています)
      • AVAILABILITY DOMAIN - AD-2 を選択 (集合ハンズオン研修の場合は講師の指示に従ってください)
      • CIDR BLOCK - 10.0.5.0/24
      • ROUTE TABLE - ステップ3-2で作成したルート・テーブルを選択 (画面では Load Balancer Route Table を選択しています)
      • SUBNET ACCESS - PUBLIC SUBNET を選択
      • DNS RESOLUTION - チェックを外す
      • DHCP OPTIONS - 入力なしのまま
      • Security Lists - ステップ3-1で作成したセキュリティ・リストを選択 (画面では Load Balancer Security List を選択しています)

        WS000000.JPG

     

    4. ロードバランサーの構成

     

    ロードバランサーを作成します。作成の際にロードバランサーに必要なシェイプ(帯域)とともに、配置先として異なるアベイラビリティのサブネットを2つ選択します。これによりアベイラビリティ・ドメインの障害に対するロードバランサーの可用性が保証されます。

     

    4-1. ロードバランサーの作成

     

    1. コンソールメニューから NetworkingLoad Balancers を選択し、Create Load Balancer ボタンを押します

    2. 立ち上がった Create Load Balancer ウィンドウに以下の項目を入力し、下部の Create ボタンを押します
      • NAME - 任意 (画面では Tutorial Load Balancer と入力しています)
      • SHAPE - 100Mbps を選択
      • VIRTUAL CLOUD NETWORK - サブネットを作成したVCNを選択 (画面では TutorialVCN を選択しています)
      • VISIBILITY - Create Public Load Balancer を選択
      • SUBNET (1 OF 2) - ステップ3-3 で作成した1つめのサブネットを選択
      • SUBNET (2 OF 2) - ステップ3-4 で作成した2つめのサブネットを選択

        WS000001.JPG
    3. ロードバランサーの作成が開始されます。作成はバックエンドで行われ、完了するとステータスが AVAILABLE になります

      WS000003.JPG

    4. この時点で、ロードバランサーにグローバルIPアドレスが1つ付与されています。
      ロードバランサーの概要で IP Address: xxx.xxx.xxx.xxx (Public) と表示されているものを確認し、手元に値をメモしておいてください。このIPアドレスは後のステップで使用します。

    4-2. バックエンド・セットの作成とAPサーバーのヘルスチェックの構成

     

    バックエンド・セットはロードバランサーの背後に位置するサーバーのセットで、これを作成することでロードバランサーからトラフィックを流すことができるようになります。また、合わせてバックエンドのサーバーに対するヘルスチェックを設定することができます。

     

    1. 先ほど作成したロードバランサーの名前のリンクをクリックし、詳細情報を表示します

      WS000004.JPG

    2. Create Backend Set ボタンを押します
    3. 立ち上がってきた Create Backend Set ウィンドウに以下を入力し、下部の Create ボタンを押します
      • NAME - 任意 (画面では TurorialBackendSet と入力しています)
      • POLICY - Weighted Round Robin を選択
      • USE SSL - 未選択のまま
      • USE SESSION PERSISTENCE - 未選択のまま
      • HEALTH CHECK : PROTOCOL - HTTP を選択
      • HEALTH CHECK : PORT - 80
        ※HEALTH CHECK のその他の項目はオプションです、今回は空欄のままで作成します

        WS000006.JPG
    4. バックエンド・セットの作成が開始されます。作成が完了すると、ステータスが IN PROGRESS... から SUCCEEDED に変化します。
      Close ボタンを押して Work Request ダイアログボックスを閉じます。

      WS000008.JPG

    4-2. バックエンド・セットへのWebサーバーの追加と、セキュリティ・リストの構成

     

    作成したバックエンド・セットに、ステップ1で作成した2台のWebサーバーを追加します。また同時に、ロードバランサーからWebサーバーへ適切な通信を許可するセキュリティ・リストを構成します。

     

    1. 先ほど作成したバックエンド・セットの名前のリンクをクリックし、詳細情報を表示します

      WS000005.JPG

    2. Edit Backends ボタンを押します
    3. 立ち上がってきた Edit Backends ウィンドウで、負荷分散を行うWebサーバーを登録します
      View Instances リンクをクリックすると、ブラウザの別タブにインスタンスの一覧画面が起動します

      WS000007.JPG
    4. ステップ2で作成した2台のWebサーバーのうち、1台目のインスタンスの詳細画面にて、OCID : ...<文字列> の右に表示されている Copy リンクをクリックします
      これにより、クリップボードに1台目のWebサーバー・インスタンスのOCIDがコピーされます

      WS000009.JPG
    5. ブラウザのタブを Edit Backends に戻し、Backend 1 リージョンの中の INSTANCE OCID ボックスの中に先ほどコピーしたOCIDをペーストします

      WS000010.JPG
    6. Port に 80 を入力します。WEIGHT は未入力のままにします。
    7. 上記ステップの4~6を繰り返し、もう一つのWebサーバーインスタンスの情報を Backend 2 に登録します
    8. 登録が完了すると、以下のような画面になり、Backend 1 および Backend 2 の右側に Defined という緑色の表示がされているはずです。
      正しく入力できたことを確認し、下部の Submit ボタンを押します。

      WS000011.JPG
    9. バックエンド・セットへのインスタンスの追加が開始されます。作業が完了すると、ステータスが SUCCEEDED に変化します。

      WS000012.JPG
    10. 下部の Create Rules ボタンをクリックします。そうすると、ロードバランサーからバックエンドのWebサーバー・インスタンスへのセキュリティ・リストが自動的に構成され、通信が疎通するようになります。
      作成されたセキュリティ・リストは、NetworkingVirtual Cloud Networks<作成したVCN名>Security Lists<セキュリティ・リスト名> にて確認することができます。

      ロードバランサーのサブネットに設定されたセキュリティ・ルール(Egress)
      WS000013.JPG

      Webサーバーのサブネットに設定されたセキュリティ・ルール(Ingress)
      WS000014.JPG
      ※オレンジの部分が追加されたルールです


    4-3. リスナーの作成

     

    リスナーは、ロードバランサー上で通信のリスニングを行うエンドポイントです。

    リスナーはロードバランサー毎に複数作成できますが、必ず一つのバックエンド・セットを指定する必要があります。作成したリスナーに対するトラフィックは、指定したバックエンド・セットに所属するインスタンスに転送されます。

     

    1. コンソールメニューから NetworkingLoad Balancers を選択し、チュートリアルで作成したロードバランサーの名前のリンクをクリックします

    2. 左下メニューから Listeners を選択し、Create Listener ボタンを押します
    3. 立ち上がってきた Create Listener ウィンドウに以下を入力し、下部の Create ボタンを押します
      • NAME - 任意 (画面では TutorialListener と入力しています)
      • PROTOCOL - HTTP を選択
      • PORT - 80
      • USE SSL - 未選択のまま
      • BACKEND SET - ステップ4-2で作成したバックエンド・セットを選択

        WS000017.JPG
    4. リスナーの作成作業が開始されます。作業が完了すると、ステータスが SUCCEEDED に変化します。
      Close ボタンを押して Work Request ダイアログを閉じます。


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

     

    ここまでで、ロードバランサーの設定は完了しています。最後にロードバランサーに対してインターネットからのhttp通信を許可する設定を行い、トラフィックの転送を完成させます。

     

    1. コンソールメニューから NetworkingVirtual Cloud Networks を選択し、チュートリアルで使用している仮想クラウド・ネットワークの名前のリンクをクリックします

    2. 左下メニューから Security Lists を選択し、ステップ3-1で追加したロードバランサー用のセキュリティリスト名のリンクをクリックします
    3. Edit All Rules ボタンを押します
    4. 上部の Allow Rules for Ingress リージョンにある + Add Rule ボタンを押します
    5. 入力フィールドが開くので、以下の情報を入力し、下部の Save Security List Rules をクリックします
      • SOURCE CIDR - 0.0.0.0/0
      • IP PROTOCOL - TCP を選択
      • SOURCE PORT RANGE - 空欄のまま
      • DESTINATION PORT RANGE - 80
        WS000018.JPG

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

     

    ブラウザからアクセスし、ロードバランサーが正しく動作していることを確認します。

     

    1. ステップ 4-1 で作成した、ロードバランサーのグローバルIPアドレスを確認します。(手元にメモしているはずです)
    2. ブラウザの新しいタブを開き、IPアドレスを入力して ENTER キーを押します
      Web Server 1 または Web Server 2 と表示されることを確認します

    3. ブラウザのウィンドウにフォーカスした状態で、F5キーを何度か押します
      すると、ウィンドウがリロードされ、Web Server 1 という表示と Web Server 2 という表示が切り替わることを確認します
      うまく切り替わるようであれば、無事にロードバランサーの構成が成功しています

    7. Webサーバーの保護

     

    最後に、Webサーバーのサブネットに設定されたルート・テーブルとセキュリティ・リストを更新し、Webサーバーを保護します。

     

    1. コンソールメニューから NetworkingVirtual Cloud Networks を選択し、チュートリアルで使用している仮想クラウド・ネットワークの名前のリンクをクリックします

    2. 左下メニューから Route Tables を選択し、使用しているVCNのデフォルト・ルート・テーブルを選択します (おそらく Default Route Table for TutrialVCN のような名前になっているはずです)

    3. 下部の Route Rules 表示されている CIDR Block: 0.0.0.0/0 というルールの右端の Delete ボタンを押して削除します

      WS000019.JPG

      これで、Webサーバーはインターネット・ゲートウェイとの間でのルーティングが行われなくなります。(つまり、インターネットからのロードバランサーを介さない直接のアクセスができなくなります)
    4. 次に、上部のブレッドクラム・リンクの Virtual Cloud Network Details を押し、左下メニューから Security Lists を選択し、使用しているVCNのデフォルト・セキュリティ・リストを選択します (おそらく Default Security List for TutrialVCN のような名前になっているはずです)
    5. Edit All Rules ボタンを押します
    6. Allow Rules for Ingress の欄にあるイングレス・ルールのうち、以下のものを削除します

      SOURCE CIDR
      IP Protocol
      Destination Port Range
      0.0.0.0/0TCP22
      0.0.0.0/0ICMP3,4
      10.0.0.0/16ICMP3
    7. Allow Rules for Egress の欄にあるイグレス・ルールをすべて削除します。
      完了すると、以下のようなルールが残っています。

      WS000020.JPG
      SaveSecurity List Rules ボタンをクリックして、セキュリティ・リストの変更を保存します

    これで、Webサーバーのネットワークは保護され、インターネットとの間で直接通信はできなくなりました。引き続きロードバランサー経由でのhttpアクセスは許可されており、Webページは閲覧することができます。
    管理用途に外部からの通信が必要な場合は、必要に応じてルート・テーブルおよびセキュリティ・リストの設定を変更してください。

     

    以上で、この章の作業は終了です。

     

    目次に戻る: チュートリアル : Oracle Cloud Infrastructure を使ってみよう