内部負荷分散構成 [東日本/西日本リージョン3向け]#

要求事項#

オンプレ同様、クラウドでもシステムの可用性を考慮した設計を行う必要があります。
本パターンでは以下の要求事項に対応します。

  • FJcloud-Oの内部負荷分散機能を使用し、サービスの可用性や性能を考慮した構成を実現したい

対応するデザインパターン概要#

FJcloud-Oでは、サービス提供の機会損失を防ぎ、可用性や性能を向上させる負荷分散機能として、ロードバランサーサービスを提供しています。

ロードバランサーサービスによる負荷分散の構成としては、以下の2構成が利用可能です。

構成 説明
外部負荷分散構成 インターネットからのアクセスを、外部ネットワークに接続された内部ネットワークの仮想サーバを経由し負荷分散します。
内部負荷分散構成 内部ネットワークの仮想サーバから、内部ネットワークの仮想サーバへ通信を負荷分散します。
この構成では、IPSecVPNや構内接続等のセキュアな接続を併用すると、社内イントラネット環境から負荷分散構成を利用したシステムが利用可能です。

本パターンでは、東日本/西日本リージョン3向けのロードバランサーサービスを使用した内部負荷分散構成について記載します。

構造 (イメージ図)#

1. 同一サブネット#

  • ロードバランサーのアクセス元と同一のサブネットにロードバランサーを配置する構成例です。

image

2. 異なるサブネット#

  • ロードバランサーのアクセス元と異なるサブネットにロードバランサーを配置する構成例です。

image

実装サンプル#

  • 同一サブネット構成にて内部負荷分散に対応したロードバランサーを配備する手順を示します。
  • 構成例 image

1. 仮想ネットワークの作成#

仮想ネットワーク、サブネットを作成します。

  • IaaSポータル画面から「ネットワーク」>「仮想ネットワーク」を選択し、「仮想ネットワーク一覧」画面で、画面右上の「+」ボタンをクリックし、以下の要領で項目を入力します。

(1) 仮想ネットワーク#

仮想ネットワーク名 管理状態
east3-CDP-NW60 UP

(2) サブネット#

サブネット作成 サブネット名 仮想ネットワークアドレス ゲートウェイ ゲートウェイIP
あり east3-CDP-SN60 192.168.60.0/24 あり 192.168.60.1

(3) サブネット詳細#

DHCP IPアドレス割当プール DNSサーバ 追加のルート設定 備考
有効 - 8.8.8.8 - DNSサーバは必要に応じて設定

[参考] 詳細手順は初期構築ガイドでご確認頂けます。

2. 仮想ルータ#

仮想ルータを作成、インターフェースを追加します。

  • IaaSポータル画面から「ネットワーク」>「仮想ルータ」を選択し、「仮想ルータ一覧」画面で、画面右上の「+」ボタンをクリックし、以下の要領で項目を入力します。
仮想ルータ名 外部仮想ネットワーク
east3-CDP-RT60 fip-net
  • 作成した仮想ルータ名をクリックし、仮想ルータ詳細画面下部の「インターフェース」欄の右側にある「+」ボタンをクリックし、以下の要領で項目を入力します。
サブネット IPアドレス
east3-CDP-SN60 192.168.60.1

[参考] 詳細手順は初期構築ガイドでご確認頂けます。

3. SSL-VPN接続の作成#

必要に応じて、VPNサービス、及びSSL-VPN接続を作成します。

  • IaaSポータル画面から「ネットワーク」>「VPNサービス」を選択し、「VPNサービス一覧」画面で、画面右上の「+」ボタンをクリックし、以下の要領で項目を入力します。
仮想ルータ名 サブネット名 VPNサービス名 管理状態
east3-CDP-RT60 east3-CDP-SN60 east3-CDP-VPN60 true
  • IaaSポータル画面から「ネットワーク」>「VPNサービス」を選択し、作成したVPNサービスをクリックします。

  • VPNサービス詳細画面下部の「SSL-VPN接続」欄の右側にある「+」ボタンをクリックし、以下の要領で項目を入力します。

SSL-VPN接続名 管理状態 証明書 クライアントIPプール
east3-CDP-CON60 true FJCS証明書(デフォルト) 192.168.246.0/24

[参考] 詳細手順は初期構築ガイドでご確認頂けます。

4. セキュリティグループの作成#

ロードバランサーのアクセス元仮想サーバー用のセキュリティグループと、負荷分散対象仮想サーバ用のセキュリティグループをそれぞれ作成します。

Note

ロードバランサーにセキュリティグループを設定することはできません。

(1) ロードバランサーのアクセス元仮想サーバー用のセキュリティグループ#

  • IaaSポータル画面から「ネットワーク」>「セキュリティーグループ」を選択し、「セキュリティーグループ一覧」画面で、画面右上の「+」ボタンをクリックします。
セキュリティグループ名
east3-CDP-SG60
  • IaaSポータル画面から「ネットワーク」>「セキュリティーグループ」を選択し、作成したセキュリティグループのアクションから「ルール管理」をクリックします。

  • セキュリティグループルール管理画面右側の「ルールの追加」をクリックし、以下の要領で項目を入力します。

ロードバランサーへのHTTP(80/tcp)通信、SSL-VPN接続先からのSSH(22/tcp)通信を許可します。 必要に応じてデフォルトで入力されているセキュリティグループルールを削除します。

ルール 方向 オープンポート ポート番号 IPプロトコル 接続先 CIDR 説明
カスタムTCPルール 送信 ポート 80 TCP CIDR 192.168.60.100/32 内部LB通信用
カスタムTCPルール 受信 ポート 22 TCP CIDR 192.168.246.0/24 SSL-VPN接続用

image

(2) 負荷分散対象仮想サーバー用のセキュリティグループ#

  • IaaSポータル画面から「ネットワーク」>「セキュリティーグループ」を選択し、「セキュリティーグループ一覧」画面で、画面右上の「+」ボタンをクリックします。
セキュリティグループ名
east3-CDP-SG61
  • IaaSポータル画面から「ネットワーク」>「セキュリティーグループ」を選択し、作成したセキュリティグループのアクションから「ルール管理」をクリックします。

  • セキュリティグループルール管理画面右側の「ルールの追加」をクリックし、以下の要領で項目を入力します。

ロードバランサーからのHTTP(80/tcp)通信を許可します。

Note

ロードバランサーのバックエンド側のIPアドレスはサービス側で設定されます。
バックエンド側のIPアドレスは非公開ですので、WEBサーバやAPサーバに割当てるセキュリティグループには、ロードバランサーが配備されているサブネットのCIDRを指定する必要があります。

ルール 方向 オープンポート ポート番号 IPプロトコル 接続先 CIDR 説明
カスタムTCPルール 受信 ポート 80 TCP CIDR 192.168.60.0/24 内部LBからの通信を許可

image

[参考]詳細手順は初期構築ガイドでご確認頂けます。

5. 仮想サーバの作成#

ローバランサーのアクセス元仮想サーバ1台と、負荷分散対象の仮想サーバを2台作成します。

  • IaaSポータル画面から「コンピュート」>「仮想サーバ」を選択し、「仮想サーバ一覧」画面で、画面右上の「+」ボタンをクリックし、以下の要領で項目を入力します。

(1) 仮想サーバ#

サーバグループ 仮想サーバ名 仮想サーバタイプ 仮想サーバのブートリソース イメージ デバイスサイズ(GB)
設定なし east3-CDP-SV60 P3-1 イメージ Public
Cent OS 7.x 64bit (English)
30
設定なし east3-CDP-SV61 P3-1 イメージ Public
Cent OS 7.x 64bit (English)
30
設定なし east3-CDP-SV62 P3-1 イメージ Public
Cent OS 7.x 64bit (English)
30

(2) 仮想ネットワーク#

仮想サーバ名 選択済み仮想ネットワーク
east3-CDP-SV60 east3-CDP-NW60
east3-CDP-SV61 east3-CDP-NW60
east3-CDP-SV62 east3-CDP-NW60

(3) アクセスとセキュリティ#

仮想サーバ名 セキュリティグループ キーペア
east3-CDP-SV60 east3-CDP-SG60 (キーペアを選択)
east3-CDP-SV61 east3-CDP-SG61 (キーペアを選択)
east3-CDP-SV62 east3-CDP-SG61 (キーペアを選択)

[参考]詳細手順は初期構築ガイドでご確認頂けます。

(4) Webサービスの立ち上げ#

初期構築ガイドを参照し、作成した仮想サーバ(east3-CDP-SV61、east3-CDP-SV62)でWebサービスを立ち上げます。

6. ロードバランサーの作成と設定#

(1) ロードバランサー作成#

負荷分散対象の仮想サーバが接続されているサブネットに、ロードバランサーを作成します。

  • IaaSポータル画面から「ネットワーク」>「ロードバランサー」を選択し、「ロードバランサー一覧」画面で、画面右上の「+」ボタンをクリック。します。

  • 以下の項目を入力し、「次へ」をクリックします。

項目 設定値例 内容
反映元ロードバランサー名 (空欄) 別のロードバランサーから設定値を引き継ぐ場合に使用
ロードバランサー名 "east3-CDP-LB60" 任意のロードバランサー名を入力
説明 "内部負荷分散用LB" 任意で説明を入力
管理状態 "Up" 稼働(Up)または停止(Down)を選択
本手順では「Up」を選択
プライベートIPアドレス "192.168.60.100" ロードバランサーに設定するプライベートIPアドレスを入力
※設定したプライベートIPアドレスがロードバランサーのアクセス元仮想サーバーからの送信先となります。
サブネット "east3-CDP-SN60" ロードバランサーを配備するサブネットを選択
  • IaaSポータル画面例

image

  • ロードバランサーの一覧参照画面にて"プロビジョニングステータス"が"ACTIVE"になっていることを確認してください。

image

(2) 負荷分散条件(リスナー)を作成#

負荷分散の対象となるトラフィックの条件を設定します。

  • IaaSポータルのサイドバーから「ネットワーク」>「ロードバランサー」をクリックし、作成したロードバランサーの行の 「アクション」>「負荷分散設定」をクリックします。

  • 以下の項目を入力し、「次へ」をクリックします。

項目 設定値例 内容
反映元リスナー名 (空欄) 別のリスナーから設定を引き継ぐ場合に使用
リスナー名 "east3-CDP-Lis60" 任意のリスナー名を入力

※ロードバランサー内で一意である必要があります

説明 (空欄) 任意で悦明を入力
管理状態 "Up" 稼働(Up)または停止(Down)を選択
プロトコル "HTTP-HTTP" フロントエンド側とバックエンド側の通信プロトコルを指定
フロントエンドポート "80" ロードバランサーがリクエストを待ち受けるポート番号を入力
最大接続数 "2000" 最大接続数を入力
SSL証明書URL (空欄) HTTPS-HTTP通信を行う際に使用するSSL証明書のURLを入力
  • IaaSポータル画面例

image

  • 通信プロトコルの組合せ
フロントエンド バックエンド
HTTP HTTP
HTTPS HTTP
HTTPS HTTPS
TCP TCP

(3) 負荷分散条件(プール)を作成#

負荷分散の対象となったトラフィックを、どのような条件に基づいて負荷分散対象の仮想サーバへ振り分けるかを設定します。

以下の項目を入力し、「次へ」をクリックします。

項目 設定値例 内容
反映元プール名 (空欄) 別のプールから設定を引き継ぐ場合に使用
プール名 "east3-CDP-PL60" 任意のプール名を入力
説明 (空欄) 任意で悦明を入力
負荷分散アルゴリズム "ROUND_ROBIN" 仮想サーバに対する負荷分散のアルゴリズムです。
ROUND_ROBIN:トラフィックを均等に仮想サーバへ振り分けます。
LEAST_CONNECTIONS:コネクション数が少ない仮想サーバへ優先してトラフィックを振り分けます。
SOURCE_IP:特定の送信元IPアドレスからのトラフィックを、特定の仮想サーバに振り分けます。リスナーに設定したバックエンドの通信プロトコルと同じプロトコルを指定してください。
セッション維持ポリシー "HTTP-COOKIE" 仮想サーバに対するセッション維持ポリシーです。
HTTP_COOKIE : クライアントから生成されるクッキーを利用してセッション維持を行います。
APP_COOKIE : 仮想サーバから生成されるクッキーを使用してセッション維持を行います。
SOURCE_IP : クライアントIPを使用してセッション維持を行います。
クッキー名 (空欄) セッション維持ポリシーでAPP_COOLIEを選択した際に入力
バックエンドプロトコル "HTTP" リスナーの設定時に入力したものが自動で反映
バックエンドポート "80" ロードバランサーから負荷分散対象仮想サーバへ通信する際のポート番号
  • IaaSポータル画面例

image

(4) 負荷分散対象(メンバー)を登録#

負荷分散対象となる仮想サーバを設定します。

負荷分散対象となる仮想サーバを選択し、「次へ」をクリックします。
※事前に、負荷分散対象となる仮想サーバを起動状態にしてください。

  • IaaSポータル画面例

image

(5) 異常監視(ヘルスモニター)を設定#

  • 負荷分散対象の仮想サーバに対する、ヘルスチェック条件を設定します。

  • 以下の項目を入力し、「次へ」をクリックします。

項目 設定値例 内容
チェック方式 "HTTP" 負荷分散対象仮想サーバを監視する方式
HTTP/HTTPS/TCP
管理状態 "Up" ヘルスモニターの状態を選択
チェック間隔(秒) "60" 負荷分散対象仮想サーバへプローブを送る時間間隔      
タイムアウト(秒) "30" 接続がタイムアウトするまでの最大待ち時間
チェック間隔より低い値を指定する必要があります。
異常検出しきい値(回) "5" 負荷分散対象仮想サーバのステータスをINACTIVEに変更するまでのリトライ回数(1-10)
HTTPメソッド "GET" ヘルスチェックの実行に使用するHTTPリクエストメソッド
チェックパス "/index.html" 負荷分散対象仮想サーバのアクセスURL。デフォルトは「/」
想定する応答コード "200" 負荷分散対象仮想サーバの正常ステータスコード

Note

負荷分散対象として登録した仮想サーバにヘルスチェックを実施できます。
応答しない仮想サーバは、自動的に負荷分散の対象から除外されます。

  • IaaSポータル画面例

image

(6) ロードバランサーの作成#

  • これまでの設定内容が反映されていることを確認し、「作成」をクリックします。

(7) ロードバランサーのステータス確認#

  • 負荷分散設定を行ったロードバランサーのオペレーションステータスが「ONLINE」となっていること確認します。

image

7. 通信確認#

east3-CDP-SV60から内部ロードバランサーにアクセスし、ロードバランシングされることを確認します。
例では、east3-CDP-SV60(192.168.60.3)からロードバランサー(192.168.60.100)に投げた通信がeast3-CDP-SV61(192.168.60.6)、east3-CDP-SV61(192.168.60.11)に振り分けられていることを示しています。

[k5user@east3-CDP-SV60 ~]$ curl 192.168.60.100
    <html>
      <head>
      </head>
      <body>
        <h1>CentOS Apache Test Page</h1>
        <h2>Welcome to this page!!!</h2>
        <h2>east3-CDP-SV61(192.168.60.6)</h2>
      </body>
    </html>

[k5user@east3-CDP-SV60 ~]$ curl 192.168.60.100
    <html>
      <head>
      </head>
      <body>
        <h1>CentOS Apache Test Page</h1>
        <h2>Welcome to this page!!!</h2>
        <h2>east3-CDP-SV62(192.168.60.11)</h2>
      </body>
    </html>

実装サンプルは以上となります。

メリット・効果#

ロードバランサーサービスを利用した場合のメリット・効果は以下の通りです。

  • 複数台の仮想サーバによる可用性向上/性能向上
  • IPSecVPNやその他の構内接続等のセキュアな接続を併用すると、
    社内イントラネット環境から負荷分散構成を利用したシステムが利用可能

注意事項#

  • 本パターンは2020年1月時点のFJcloud-O 東日本/西日本リージョン3にて動作検証しています。

  • ロードバランサーは、ロードバランサーに割り当てる仮想IPアドレス(プライベートIP)でアクセス可能です。

  • ロードバランサーに障害が発生した場合でも、フェイルオーバーによって待機系のロードバランサーに切り替わります。

  • 負荷分散機能で証明書を利用する場合は、リスナー作成時に証明書を登録してください。

  • すでに負荷分散対象として登録されている仮想サーバのIPアドレスを変更した場合、その仮想サーバは負荷分散の対象外になります。
    必要に応じて、負荷分散対象として再登録してください。

  • 負荷分散対象の仮想サーバの異常を検知するには、監視サービスをご利用いただくか、または、お客様にて仮想サーバの状態を監視する必要があります。

  • FJcloud-Oのロードバランサーサービスでは、L4層の負荷分散とL7層の負荷分散(http/httpsのみ)が可能です。
    ただし、L7層の負荷分散では、Cookieを使ったセッション維持のみ可能です。
    アクセス先のURLに含まれるドメイン名やパス等に応じて負荷分散条件を設定する負荷分散はできません。