いろいろな設定事例

バランシング設定

ロードバランサーを使った、代表的な2つのバランシング設定の例をご紹介します。

  • DSR(Direct Server Return)構成

  • ソースNAT構成

DSR構成

「DSR構成」では、図のようにサーバーからのレスポンスがロードバランサーを経由しないため、リクエスト量に対してロードバランサーのキャパシティが増えるというメリットがあり、コンテンツ・ストリーミング配信などのシステムに適しています。

L4でのバランシングのみ利用可能で、サーバーのループバックインターフェースやダミーインターフェースの設定などが必要となります。

<DSR構成でのパケットフロー>
  1. クライアントからのリクエストをロードバランサーが受信

  2. ロードバランサーはバランシングを行い、サーバーにリクエストを転送する

  3. サーバーはレスポンスを直接クライアントに返す

../../../_images/lb_example_dsr.png

DSR構成

ソースNAT構成

「ソースNAT構成」では、L4/L7でのバランシングともに利用可能で、サーバーに特別な設定を行う必要がないというメリットがあります。

サーバーからのレスポンスもロードバランサーを経由するため、SSLオフロードを有効にしてロードバランサーがSSL通信を終端することができます。
半面、ロードバランサー自体がボトルネックとなることがあります。

<ソースNAT構成でのパケットフロー>
  1. クライアントからのリクエストをロードバランサーが受信

  2. ロードバランサーはバランシングを行い、サーバーにリクエストを転送する

  3. サーバーはレスポンスをロードバランサーに返す

  4. ロードバランサーは返ってきたレスポンスをクライアントに返す

../../../_images/lb_example_snat.png

ソースNAT構成

DSR構成によるHTTPSバランシング設定

DSR構成によるHTTPSバランシング設定に必要な設定について説明していきます。

重要

  • 事前にウェブサーバーの構築とウェブサーバーへのSSL証明書のインストールを行ってください。

  • この手順では、以下の環境を想定しています。

    • サーバーのグローバル側インターフェースがボンディング構成であること

    • サーバーとロードバランサー間の通信がアクセス制限などで妨げられないこと

MBF(MAC base forwarding)を有効にする

DSRを構成するときは「MBF(MAC base forwarding)」を有効にします。

  1. [Configuration] - [System] - [Settings] - [Configure Modes] を選択します。
  2. [MAC based forwarding] をチェックし、[OK] を選択します。
    ../../../_images/lb_example_dsr_11.png

    画面サンプル: MBF(MAC base forwarding)の有効化

サーバーの作成

負荷分散の対象となるサーバーを作成します。

  1. [Configuration] - [Traffic Management] - [Load Balancing] - [Servers] を選択します。
  2. [Add] を選択して作成画面に入り、[Create Server] に以下の必須項目を入力し、[Create] を選択します。
    ../../../_images/lb_example_dsr_21.png

    画面サンプル: サーバーの作成

    Name

    任意の名称を入力します

    IP Address / Domain Name

    IP Address を選択します

    IPAddress

    物理サーバーのIPアドレスを入力します


  3. これを必要なサーバーの数だけ繰り返します。

サービスの作成

負荷分散の対象となるサーバーごとにサービスを作成します。

  1. [Configuration] - [Traffic Management] - [Load Balancing] - [Services] を選択します。
  2. [Add] を選択して作成画面に入り、[Basic Settings] に以下の必須項目を入力し、[OK] を選択します。
    ../../../_images/lb_example_dsr_31.png

    画面サンプル: サービスの作成(1)

    Service Name

    任意の名称を入力します

    New Server / Existing Server

    「Existing Server」を選択します

    Server

    作成済みのサーバーを選択します

    Protocol

    「ANY」を選択します
    (DSR構成の場合、プロトコルに関わらずANYを選択します)

    Port

    「443」を入力します


  3. 画面の遷移後、[Service Settings] の項目右の編集ボタンをクリックします。
    ../../../_images/lb_example_dsr_32.png

    画面サンプル: サービスの作成(2)


  4. 編集画面となるので、[Use Source IP Address] をチェックし、[OK] を選択します。
    ../../../_images/lb_example_dsr_33.png

    画面サンプル: サービスの作成(3)


  5. 「Use Source IP Address YES」となったことを確認して、[Done] を選択して作成を完了します。
    ../../../_images/lb_example_dsr_34.png

    画面サンプル: サービスの作成(4)


  6. これを必要なサービスの数だけ繰り返します。

モニタリングするサービスをhttpsに変更する

前項でサービスを作成した直後は「Load balancing monitor bind」に「ping-default」が選択されている状態です。
モニタするサービスを「https」に変更します。

  1. [Configuration]タブ - [Traffic Management] - [Load Balancing] - [Services] と選択します。
  2. 設定変更するサーバーにチェックを入れ [Edit] をクリックします。
    ../../../_images/lb_example_dsr_41.png

    画面サンプル: [Configuration]タブ - [Traffic Management] - [Load Balancing] - [Services]


  3. 次の画面 [Load Balancing Service] を、[Monitors]項目まで下へスクロールします。
  4. 「(数字) service to Load Balancing Monitor Binding」をクリックします。
    ../../../_images/lb_example_dsr_42.png

    画面サンプル: [Load Balancing Service]


  5. 次の画面 [Load Balancing Monitor Binding] から「ping-default」をチェックし[Add Binding]をクリックします。
    ../../../_images/lb_example_dsr_43.png

    画面サンプル: [Load Balancing Monitor Binding]


  6. 「Select Monitor*」- [Click to select>]を押下するとサービスの一覧に遷移します。
  7. 一覧から「https」を選択します。以降は画面の説明に従い完了します。
    ../../../_images/lb_example_dsr_44.png

    画面サンプル: [Monitors] - [バインドサービスの選択]


  8. これを必要なサーバーの数だけ繰り返します。

バーチャルサーバーの作成

クライアントにサービスを提供するためのバーチャルサーバーを作成します。


  1. [Configuration] - [Traffic Management] - [Load Balancing] - [Virtual Servers] を選択します。
  2. [Add] を選択して作成画面に入り、[Basic Settings] に以下の必須項目を入力し、[OK] を選択します。
    ../../../_images/lb_example_dsr_51.png

    画面サンプル: バーチャルサーバーの作成(1)

    Name

    任意の名称を入力します

    Protocol

    「ANY」を選択します
    (DSR構成の場合、プロトコルに関わらずANYを選択します)

    IP Address Type

    「IP Address」 を選択します

    IP Addres

    任意のIPアドレスを入力します

    Port

    「443」を入力します

    Redirection Mode

    「MAC Based」を選択します


  3. つぎに、[Services and Service Groups」項目の [No Load Balancing Virtual Server Service Binding]を選択します。
    ../../../_images/lb_example_dsr_52.png

    画面サンプル: バーチャルサーバーの作成(2)


  4. [Select Service] で [Click to select] を選択、[Service] の画面となるので、必要なサービスをチェックして [Select] を選択、[Bind] を選択して紐づけます。
    ../../../_images/lb_example_dsr_53.png

    画面サンプル: バーチャルサーバーの作成(3)


  5. [* Load Balancing Virtual Server Service Bindings] となったことを確認して、[Continue] を選択します。
    ../../../_images/lb_example_dsr_54.png

    画面サンプル: バーチャルサーバーの作成(4)


  6. [Method] の項目右の編集ボタンをクリックします。
    ../../../_images/lb_example_dsr_55.png

    画面サンプル: バーチャルサーバーの作成(5)


  7. [Load Balancing Method] のプルダウンメニューから [SOURCEIPHASH] を選択し、[OK] を選択します。
    ../../../_images/lb_example_dsr_56.png

    画面サンプル: バーチャルサーバーの作成(6)


  8. 「Load Balancing Method SOURCEIPHASH」となったことを確認し、に [Persistence] の項目右の編集ボタンをクリックします。
    ../../../_images/lb_example_dsr_57.png

    画面サンプル: バーチャルサーバーの作成(7)


  9. つぎに、以下の項目を入力し、[OK] を選択します。
    ../../../_images/lb_example_dsr_58.png

    画面サンプル: バーチャルサーバーの作成(8)

    SOURCEIP / OTHERS

    「SOURCEIP」を選択します

    Time-out (mins)

    任意のタイムアウト時間を入力します(初期値は2分です)


  10. 「Persistence SOURCEIP」となったことを確認し、次に [Traffic Settings] の項目右の編集ボタンをクリックします。
    ../../../_images/lb_example_dsr_59.png

    画面サンプル: バーチャルサーバーの作成(9)


  11. 編集画面で、[Sessionless load balancing] をチェックし、[OK] を選択します。
    ../../../_images/lb_example_dsr_510.png

    画面サンプル: バーチャルサーバーの作成(10)


  12. 「Sessionless load balancing ENABLE」となったことを確認して、[Done] を選択して作成を完了します。
    ../../../_images/lb_example_dsr_511.png

    画面サンプル: バーチャルサーバーの作成(11)


Note

「Sessionless load balancing」ではロードバランサーの負荷の原因となるロードバランサー上でのクライアント・サーバー間のセッションの保持をおこなわないので、大量のトラフィック処理を必要とする用途に適しています。
その反面、サービスグループをサポートしていないことや、セッションの保持を前提としたLeast Connectionなどの負荷分散メソッドが使用できないなどのいくつかの制限があります。
制限の内容は、以下のベンダーマニュアルを確認してください。

Note

ロードバランサーには同一のクライアントからのリクエストを同一のサーバーへと振り分ける「Persistence」と呼ばれるセッション維持機能があり、例示ではソースIPアドレスを元にセッション維持を行う設定とを行っています。
Persistenceの機能については ベンダーマニュアルを確認してください。

OSの設定

「DSR構成」では、バランシングの対象となる物理サーバーに以下の設定を行う必要があります。

  • ループバックインターフェース、あるいはダミーインターフェースにバーチャルサーバーのIPアドレスを設定

  • arpアナウンスの設定

CentOS 8 / CentOS Stream 8 / Red Hat Enterprise Linux 8 / AlmaLinux 8

ダミーインターフェースにバーチャルサーバーIPアドレスを設定します。


  1. ダミーインターフェースの設定を行います。
    # nmcli connection add type dummy ifname [ダミーインターフェース名] ipv4.method manual ipv4.addresses [バーチャルサーバーIPアドレス(IPv4)]/32 ipv6.method ignore
    

  2. 物理サーバーがバーチャルサーバー宛のARPに応答しないようにするために、Non-ARPingの設定を行います。
    sysctl.confファイル設定を記述します。
    /etc/sysctl.conf
     net.ipv4.conf.bond0.arp_ignore = 1
     net.ipv4.conf.bond0.arp_announce = 2
     net.ipv4.conf.all.arp_ignore = 1
     net.ipv4.conf.all.arp_announce = 2
    

  3. sysctl.confの設定を反映させます。
    # sudo sysctl -p
    

  4. ネットワークを再起動します。
    # systemctl restart network
    

  5. ネットワークが起動し、設定が反映されていることを確認します。
    # ip addr show
    

Ubuntu 18.04 / Ubuntu 20.04

ループバックインターフェースにバーチャルサーバーIPアドレスを設定します。


  1. netplanの設定ファイル中のethernets項目にループバックインターフェースの設定を追加します。
    /etc/netplan/01-netcfg.yaml
    ethernets:
      lo:
          addresses:
          - [バーチャルサーバーIPアドレス(IPv4)]/32
      eth0:
          dhcp4: no
      eth1:
          dhcp4: no
    

  2. 物理サーバーがバーチャルサーバー宛のARPに応答しないようにするために、Non-ARPingの設定を行います。
    sysctl.confファイルに設定を記述します。
    /etc/sysctl.conf
     net.ipv4.conf.bond0.arp_ignore = 1
     net.ipv4.conf.bond0.arp_announce = 2
     net.ipv4.conf.all.arp_ignore = 1
     net.ipv4.conf.all.arp_announce = 2
    

  3. sysctl.confの設定を反映させます。
    # sudo sysctl -p
    

  4. netplanの設定を反映させます。
    # netplan apply
    

  5. 設定が反映されていることを確認します。
    # ip addr show
    

CentOS 7 / Red Hat Enterprise Linux 7

ループバックインターフェースにバーチャルサーバーのIPアドレスを設定します。


  1. ループバックインターフェースの設定を行います。
    /etc/sysconfig/network-scripts/ifcfg-lo:0
     DEVICE=lo:0
     IPADDR=[バーチャルサーバーIPアドレス(IPv4)]
     NETMASK=255.255.255.255
     ONBOOT=yes
     NM_CONTROLLED="no"
    

  2. 物理サーバーがバーチャルサーバー宛のARPに応答しないようにするために、Non-ARPingの設定を行います。
    sysctl.confファイル設定を記述します。
    /etc/sysctl.conf
     net.ipv4.conf.bond0.arp_ignore = 1
     net.ipv4.conf.bond0.arp_announce = 2
     net.ipv4.conf.all.arp_ignore = 1
     net.ipv4.conf.all.arp_announce = 2
    

  3. sysctl.confの設定を反映させます。
    # sudo sysctl -p
    

  4. ネットワークを再起動します。
    # systemctl restart network
    

  5. ネットワークが起動し、設定が反映されていることを確認します。
    # ip addr show
    

ソースNAT構成でのHTTPSバランシング設定例

ソースNAT構成によるHTTPSバランシング設定に必要な設定について説明していきます。

重要

  • 事前にウェブサーバーの構築とWebサーバーへのSSL証明書のインストールを行ってください。

  • この手順では、以下の環境を想定しています。

    • サーバーのグローバル側インターフェースがボンディング構成であること

    • サーバーとロードバランサー間の通信がアクセス制限などで妨げられないこと

SSLオフロードの有効化

ロードバランサーでSSL通信を終端するため、SSLオフロードの有効化が必要となります。


  1. [Configuration] - [System] - [Settings] - [Configure Basic Features] を選択します。
  2. [SSL Offloading] をチェックし、[OK] を選択します。
    ../../../_images/lb_example_snat_11.png

    画面サンプル: SSLオフロードの有効化

SSL証明書の登録

SSLオフロードを行うためには、ロードバランサー上でのSSL証明書の登録が必要となります。
作業手順は以下のベンダーマニュアルをご確認ください。

サーバーの作成

負荷分散の対象となるサーバーを作成します。


  1. [Configuration] - [Traffic Management] - [Load Balancing] - [Servers] を選択します。
  2. [Add] を選択して作成画面に入り、[Create Server] に以下の必須項目を入力し、[Create] を選択します。
    ../../../_images/lb_example_snat_21.png

    画面サンプル: サーバーの作成

    Name

    任意の名称を入力します

    IP Address / Domain Name

    「IP Address」を選択します

    IPAddress

    物理サーバーのIPアドレスを入力します


  3. これを必要なサーバーの数だけ繰り返します。

サービスグループの作成

負荷分散の対象となるサービスグループを作成します。


  1. [Configuration] - [Traffic Management] - [Load Balancing] - [Service Groups] を選択します。
  2. [Add] を選択して作成画面に入り、[Basic Settings] に以下の必須項目を入力し、[OK] を選択します。
    ../../../_images/lb_example_snat_31.png

    画面サンプル: サービスグループの作成(1)

    Name

    任意の名称を入力します

    Protocol

    HTTP を選択します


  3. 画面の遷移後、[OK] を選択して、一旦作成を完了させます。
  4. 続いて、作成したサービスグループを選択します。
    ../../../_images/lb_example_snat_32.png

    画面サンプル: サービスグループの作成(2)


  5. 画面の遷移後、Use Proxy Port YES となっていることを確認して、[Settings] の項目右の編集ボタンをクリックします。
    ../../../_images/lb_example_snat_33.png

    画面サンプル: サービスグループの作成(3)


  6. 編集画面となるので、[Insert Client IP Address] をチェックし、Header 項目に [X-Forwarded-For] を入力して [OK] を選択します。
    ../../../_images/lb_example_snat_34.png

    画面サンプル: サービスグループの作成(4)


  7. 次にサーバーをサービスグループに紐づけます。[Service Group Members] の [No Service Group Member] を選択します。
    ../../../_images/lb_example_snat_35.png

    画面サンプル: サービスグループの作成(5)


  8. [Create Service Group Member] に以下の必須項目を入力し、[Create] を選択します。
    ../../../_images/lb_example_snat_36.png

    画面サンプル: サービスグループの作成(6)

    IP Based / Server Based

    Server Based を選択します

    Select Server

    [Click to select] を選択、[Servers] の画面となるので、必要なサーバー全てをチェックして [Select] を選択します

    Port

    「80」を入力します


  9. Service Group Members が紐づけられたことと、Insert Client IP Address Enable、Header X-Forwarded-For となったことを確認して、[Done] を選択して設定を終えます。

Note

ソースNAT構成では、ロードバランサーで送信元IPアドレスの変換が行われるため、実際のクライアントIPアドレスをサーバー側で知ることができないという問題があります。
ウェブサーバーについては、X-Forwarded-For機能を使用することで、HTTPヘッダの中のフィールドに変換前のクライアントIPアドレスを挿入することができるようになり、ウェブサーバー側のロギング設定を挿入したヘッダを解釈できるように変更することで変換前のクライアントIPアドレスでのロギングが可能となります。

バーチャルサーバーの作成

クライアントにサービスを提供するためのバーチャルサーバーを作成します。


  1. [Configuration] - [Traffic Management] - [Load Balancing] - [Virtual Servers] を選択します。
  2. [Add] を選択して作成画面に入り、[Basic Settings] に以下の必須項目を入力し、[OK] を選択します。
    ../../../_images/lb_example_snat_41.png

    画面サンプル: バーチャルサーバーの作成(1)

    Name

    任意の名称を入力します

    Protocol

    「SSL」を選択します

    IP Address Type

    「IP Address」 を選択します

    IP Addres

    任意のIPアドレスを入力します

    Port

    「443」を入力します

    Redirection Mode

    「IP Based」を選択します


  3. 画面の遷移後、[Services and Service Groups] 項目の[No Load Balancing Virtual Server ServiceGroup Binding] を選択します。
    ../../../_images/lb_example_snat_42.png

    画面サンプル: バーチャルサーバーの作成(2)


  4. [Select Service Group Name] で [Click to elect] を選択、[Service Groups] の画面となるので、必要なサービスグループをチェックして [Select] を選択、[Bind] を選択して紐づけます
    ../../../_images/lb_example_snat_43.png

    画面サンプル: バーチャルサーバーの作成(3)


  5. [1 Load Balancing Virtual Server ServiceGroup Binding] となったことを確認して、[Continue] を選択します。
    ../../../_images/lb_example_snat_44.png

    画面サンプル: バーチャルサーバーの作成(4)


  6. 画面の遷移後、[Certificate] 項目の [No Server Certificate] を選択します。
    ../../../_images/lb_example_snat_45.png

    画面サンプル: バーチャルサーバーの作成(5)


  7. [Select Server Certificate] で [Click to select] を選択、[Server Certificates] の画面となるので、登録したSSL証明書をチェックして [Select] を選択、[Bind] を選択して紐づけます。
    ../../../_images/lb_example_snat_46.png

    画面サンプル: バーチャルサーバーの作成(6)


  8. [1 Server Certificate] となったことを確認して、[Continue] を選択します。
    ../../../_images/lb_example_snat_47.png

    画面サンプル: バーチャルサーバーの作成(7)


  9. 画面の遷移後、画面右の [Advanced Settings] から [Persistence] を選択します。
    ../../../_images/lb_example_snat_48.png

    画面サンプル: バーチャルサーバーの作成(8)


  10. 編集画面となるので、以下の項目を入力し、[OK] を選択します。
    ../../../_images/lb_example_snat_49.png

    画面サンプル: バーチャルサーバーの作成(9)

    SOURCEIP / COOKIEINSERT / OTHERS

    「COOKIEINSERT」を選択します

    Time-out (mins)

    任意のタイムアウト時間を入力します(初期値は2分です)

    Cookie Name

    任意の名称を入力します


  11. Persistence COOKIEINSERT となったことを確認し、次に [SSL Parameters] を選択します。
    ../../../_images/lb_example_snat_410.png

    画面サンプル: バーチャルサーバーの作成(10)


  12. 編集画面となるので、[Protocol] 項目で [TLSv1] [TLSv11] のチェックを外し、[OK] を選択します。
    ../../../_images/lb_example_snat_411.png

    画面サンプル: バーチャルサーバーの作成(11)


  13. TLSv1 DISABLED、 TLSv11 DISABLED となったことを確認して、[Done] を選択して作成を完了します。
    ../../../_images/lb_example_snat_412.png

    画面サンプル: バーチャルサーバーの作成(12)


Note

ロードバランサーには同一のクライアントからのリクエストを同一のサーバーへと振り分けるPersistenceと呼ばれるセッション維持機能があり、例示ではCookieを元にセッション維持を行う設定としております。
Persistenceの詳細につきましては、以下のベンダーマニュアルをご参照ください。