外部負荷分散構成#

本構成は従来リージョン向けとなります。
東日本/西日本リージョン3向けは、外部負荷分散構成 [東日本/西日本リージョン3向け] を参照ください。

要求事項#

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

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

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

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

ロードバランサーサービスによる負荷分散の構成としては、以下の2構成が利用可能です。
これらの構成はともに、1つのAZ内の分散でも、複数のAZ間の分散でも可能です。

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

本パターンでは、ロードバランサーサービスを使用した外部負荷分散構成について記載します。

構造 (イメージ図)#

image

実装サンプル#

外部負荷分散に対応した構成を配備する手順を示します。

1. セキュリティグループ#

2. 負荷分散対象の仮想サーバ配備#

3. ロードバランサー の配備#

  • IaaSポータルにログインします。
  • 「ネットワーク」⇒「ロードバランサー」画面で、「+」ボタンをクリックします。
  • 「ロードバランサー作成」画面で、以下の項目を入力し、「作成」ボタンをクリックします。
タブ 項目 必須 設定値例 内容
ロードバランサー定義 ロードバランサー名 必須 "demo-lb" 30文字以下、半角英数字と "-" が使用可能です。
タイプ 選択 "public" ロードバランサーのタイプを選択してください。
  • public:インターネットからアクセス可能なグローバルIPアドレスとFQDNが付与されます。
  • internal:内部からアクセス可能なプライベートIPアドレスとFQDNが付与されます。
  • グレード 選択 "Standard" ロードバランサーのグレードを選択してください。
    グレードごとに、AZ内のサブネットごとに作成されるロードバランサーの数がかわります。
  • Standard:標準性能版
  • Middle:中間性能版
  • High:高性能版
  • リスナー ロードバランサープロトコル 必須 "HTTP" ロードバランサーが受け付けるプロトコルを選択してください。
  • HTTP
  • HTTPS
  • TCP
  • SSL
  • ロードバランサーポート 必須 "80" ロードバランサーが受け付けるポート番号を入力してください。
    仮想サーバプロトコル 必須 "HTTP" 仮想サーバがロードバランサーからのアクセスを受け付けるプロトコルを選択してください。
  • HTTP
  • HTTPS
  • TCP
  • SSL
  • 仮想サーバのポート 必須 "81" 仮想サーバがロードバランサーからのアクセスを受け付けるポート番号を入力してください。
    証明書 必須 - 証明書は、ロードバランサープロトコルが "HTTPS" の場合は、証明書の選択が必須となります。
    証明書のインストールは API で行います。IaaSポータルでは行えません。
    サブネット設定 サブネット 必須 "demo-subnet" ロードバランサーを配備する内部ネットワークを選択して、「追加」ボタンをクリックしてください。
    セキュリティグループ設定 セキュリティグループ 必須 "SG_LB" セキュリティグループの "SG_LB" や、その他必要なセキュリティグループを選択して、「追加」ボタンをクリックしてください。
    • ロードバランサー "demo-lb" が作成されます。"demo-lb" の状態が InService になれば、作成完了です。

    Note

    上記表の項目 "サブネット設定" について

  • サブネットを選択する際、複数のサブネットを選択可能です。
  •   複数サブネットを選択した場合、それぞれのサブネットにロードバランサーが作成されます。

  • サブネットを選択する際、AZ1 のサブネットと AZ2 のサブネットを選択すると、マルチAZ環境での負荷分散構成とすることが可能です。
  •   ・マルチAZ環境での負荷分散構成例については、マルチAZ環境での負荷分散構成パターン を参照してください。
      ・マルチAZ環境での負荷分散構成では、別途ネットワークコネクタの設定が必要です。マルチAZ環境をネットワークコネクタで接続する手順については、マルチAZ接続パターン を参照してください。

    4. 負荷分散対象の仮想サーバの追加#

    • 「ネットワーク」⇒「ロードバランサー」画面で、作成したロードバランサー "demo-lb" の「アクション」メニューから、 「仮想サーバ」⇒「追加」をクリックします。
    • 「仮想サーバ追加」画面で、負荷分散させる仮想サーバを選択し、「追加」ボタンをクリックします。
    • ロードバランサー "demo-lb" の状態が InService になれば、追加完了です。

    5. 負荷分散対象の仮想サーバのヘルスチェック情報設定#

    • 「ネットワーク」⇒「ロードバランサー」画面で、作成したロードバランサー "demo-lb" の「アクション」メニューから、「ヘルスチェック情報設定」をクリックします。
    • 「ヘルスチェック情報設定」画面で、負荷分散対象の仮想サーバのヘルスチェック情報を入力し、 「設定」ボタンをクリックします。
    項目 必須 設定値例 内容
    復旧と判断するヘルスチェック連続成功回数 必須 "3" 適宜設定してください。
    ヘルスチェック実施時間間隔(秒) 必須 "5" 適宜設定してください。
    プロトコル 必須 "HTTP" 仮想サーバをチェックするプロトコルを選択してください。
  • HTTP
  • HTTPS
  • TCP
  • SSL
  • ポート 必須 "81" 適宜設定してください。
    URL 必須 "/index.html" 適宜設定してください。
    プロトコルが "HTTP" または "HTTPS" の場合は必須です。
    ヘルスチェック応答のタイムアウト時間(秒) 必須 "5" 適宜設定してください。
    故障と判断するヘルスチェック連続失敗回数 必須 "2" 適宜設定してください。
    • ロードバランサー "demo-lb" の状態が InService になれば、設定完了です。

    6. セッション維持のポリシー作成#

    リスナーが "HTTP" または "HTTPS" で、セッションの維持を行う場合は、 セッション維持のポリシーを作成して設定します。

    • 「ネットワーク」⇒「ロードバランサー」画面で、作成したロードバランサー "demo-lb" の「アクション」メニューから、「ポリシー」⇒「セッション維持ポリシー作成」をクリックします。
    • 「セッション維持のポリシー作成」画面で、セッション維持のポリシー情報を入力し、「作成」ボタンをクリックします。
    項目 必須 設定値例 内容
    ポリシー名 必須 "demo-session-policy" 適宜設定してください。
    セッションを維持する最大時間(秒) 必須 "3600" 適宜設定してください。

    7. SorryServerのポリシー作成#

    負荷分散対象の仮想サーバがすべてダウンした場合には、リダイレクト先を設定して画面を飛ばすことが可能です。
    画面を飛ばす場合は、SorryServerポリシーを作成して設定します。

    • 「ネットワーク」⇒「ロードバランサー」画面で、作成したロードバランサー "demo-lb" の「アクション」メニューから、 「ポリシー」⇒「SorryServerポリシー作成」をクリックします。
    • 「SorryServerへリダイレクトするためのポリシー作成」画面で、リダイレクト先のサーバ情報を入力し、「作成」ボタンをクリックします。
    項目 必須 設定値例 内容
    ポリシー名称 必須 "demo-sorry-policy" 適宜設定してください。
    リダイレクト先の Location の URI 必須 "http://www.****.com/Sorry.html" 適宜設定してください。

    8. ポリシーの登録#

    セッション維持ポリシー、SorryServerポリシーをロードバランサーに登録します。

    • 「ネットワーク」⇒「ロードバランサー」画面で、作成したロードバランサー "demo-lb" の「アクション」メニューから、 「ポリシー」⇒「ポリシー登録/解除」をクリックします。
    • 「ポリシー登録/解除」画面で、セッション維持のポリシー情報とSorryServerポリシー情報を選択し、 「設定」ボタンをクリックします。
    項目 必須 設定値例 内容
    ロードバランサーポート 必須 "80" ロードバランサーが受け付けるポート番号を入力してください。
    設定するセッション維持ポリシー 選択 "demo-session-policy" 適宜選択してください。
    設定するSorryServerポリシー 選択 "demo-sorry-policy" 適宜選択してください。
    • ロードバランサー "demo-lb" の状態が InService になれば、設定完了です。

    メリット・効果#

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

    • 複数台の仮想サーバによる可用性向上/性能向上

    注意事項#

    • 本パターンは2017年6月時点のFJcloud-O 従来リージョンにて動作検証しています。

    • ロードバランサーのリスナーでは、仮想サーバ側で待ち受けするプロトコルとポート番号は1つのみ設定可能です。
      詳細は ロードバランサーで構成可能なリスナーパターン を参照してください。

    • 負荷分散機能で証明書を利用する場合は、APIで証明書を登録してください。

    • ロードバランサーは、ロードバランサーが作成された時に生成される 1つの FQDN でのみアクセス可能です。
      生成時にロードバランサーに割り当てられたIPアドレスは、メンテナンスにより変更される可能性があります。

    • ロードバランサーの名前解決は、インターネットで提供されている FJcloud-O の DNS で行います。
      インターネットに接続していない環境では、ロードバランサーの名前解決は出来ません。

    • ロードバランサーの設定変更後に次の変更を行う場合は、サービスの状態が InService になってから次の変更を行ってください。

    • ロードバランサーは、1つのサブネットに対してグレードごとに以下の個数のIPアドレスが必要です。
      必要な個数のIPアドレスを確保できる構成にしてください。
      なお、以下の個数は、それぞれのグレードで必要な最大数です。
      ロードバランサーのメンテナンスの際に必要な個数も含まれています。
      ※グレードごとに必要なIPアドレス数

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

    その他#

    ロードバランサーで構成可能なリスナーパターン#

    ロードバランサーのリスナーでは、以下のように、バックエンドの仮想サーバ側は待ち受けするプロトコルとポート番号が1つである必要があります。
    フロントのロードバランサー側では、複数のプロトコルとポート番号の組み合わせが可能です。

    パターン フロントエンド
    (ロードバランサー側)
    プロトコル
    フロントエンド
    (ロードバランサー側)
    設定例
    バックエンド
    (仮想サーバ側)
    プロトコル
    バックエンド
    (仮想サーバ側)
    設定例
    1 HTTP
    HTTPS
    HTTP (80/tcp)
    HTTPS (443/tcp)
    HTTP HTTP (8080/tcp)
    2 HTTP
    HTTP
    HTTP (80/tcp)
    HTTP (81/tcp)
    HTTP HTTP (8080/tcp)
    3 HTTPS
    HTTPS
    HTTPS (443/tcp)
    HTTPS (444/tcp)
    HTTP HTTP (8080/tcp)
    4 HTTPS
    HTTPS
    HTTPS (443/tcp)
    HTTPS (444/tcp)
    HTTPS HTTPS (443/tcp)
    5 TCP
    SSL
    TCP (440/tcp)
    SSL (443/tcp)
    TCP TCP (443/tcp)
    6 TCP
    TCP
    TCP (440/tcp)
    TCP (441/tcp)
    TCP TCP (443/tcp)
    7 SSL
    SSL
    SSL (443/tcp)
    SSL (444/tcp)
    TCP TCP (443/tcp)
    8 SSL
    SSL
    SSL (443/tcp)
    SSL (444/tcp)
    SSL SSL (443/tcp)