Citrix ADC

使用例 7: IP オーバー IP を使用して DSR モードで負荷分散を構成する

IP トンネリング( IP over IP構成とも呼ばれる)を使用して、レイヤー3ネットワーク全体でダイレクトサーバーリターン(DSR)モードを使用するようにCitrix ADCアプライアンスを構成できます。DSRモードの標準の負荷分散構成と同様に、サーバーはCitrix ADCアプライアンスを経由するリターンパスを使用する代わりに、クライアントに直接応答できます。これにより、応答時間とスループットが向上します。標準のDSRモードと同様に、Citrix ADCアプライアンスはサーバーを監視し、アプリケーションポートでヘルスチェックを実行します。

IP over IP構成では、Citrix ADCアプライアンスとサーバーが同じレイヤー2サブネット上にある必要はありません。代わりに、Citrix ADCアプライアンスはパケットをカプセル化してから送信先サーバーに送信します。宛先サーバはパケットを受信した後、パケットのカプセル化を解除し、応答をクライアントに直接送信します。これはしばしば L3DSR と呼ばれます。

Citrix ADCアプライアンスでL3-DSRモードを構成するには:

  • 負荷分散仮想サーバーを作成します。モードを IPTUNNEL に設定し、セッションレストラッキングを有効にします。
  • サービスを作成します。バックエンドアプリケーションごとにサービスを作成し、サービスを仮想サーバーにバインドします。
  • カプセル化解除を設定します。のCitrix ADCアプライアンスまたはバックエンドサーバーのいずれかを構成します。

    注:

    Citrix ADCアプライアンスを使用する場合、カプセル化解除の設定は、バックエンドがL2DSRを実サーバーに対して行うADCアプライアンス間のIPトンネルです。

負荷分散仮想サーバーの構成

アプリケーションへの要求を処理するように仮想サーバーを設定します。サービスと一致するサービスタイプを割り当てるか、複数のサービスに対して ANY のタイプを使用します。 転送方式を IPTUNNEL に設定し、仮想サーバがセッションレスモードで動作できるようにします。使用するロードバランシング方式を設定します。

コマンドラインインターフェイスを使用して IP over IP DSR 用の負荷分散仮想サーバーを作成および構成するには

コマンドプロンプトで次のコマンドを入力して、IP over IP DSR 用の負荷分散仮想サーバーを構成し、構成を確認します。

add lb vserver <name> serviceType <serviceType> IPAddress <ip> Port <port> -lbMethod <method> -m <ipTunnelTag> -sessionless [ENABLED | DISABLED]

show lb vserver <name>
<!--NeedCopy-->

例:

次の例では、sourceIPhash として負荷分散方式を選択し、セッションレス負荷分散を設定しています。

add lb vserver Vserver-LB-1 ANY 1.1.1.80 * -lbMethod SourceIPHash -m IPTUNNEL -sessionless ENABLED
<!--NeedCopy-->

GUIを使用して、IP over IP DSRの負荷分散仮想サーバーを作成および構成するには

  1. Traffic Management > Load Balancing > Virtual Serversに移動します。
  2. 仮想サーバーを作成し、リダイレクトモードを IPトンネルベースとして指定します。

IP 経由の IP DSR のサービスを構成する

負荷分散サーバーを作成したら、アプリケーションごとに 1 つのサービスを構成します。このサービスは、Citrix ADCアプライアンスからこれらのアプリケーションへのトラフィックを処理し、Citrix ADCアプライアンスが各アプリケーションの正常性を監視できるようにします。

USIP モードを使用するようにサービスを割り当て、トンネルベースのモニタリングのために IPTUNNEL タイプのモニタをサービスにバインドします。

コマンドラインインターフェイスを使用して IP over IP DSR 用のサービスを作成および構成するには

コマンドプロンプトで次のコマンドを入力してサービスを作成し、オプションでモニターを作成してサービスにバインドします。

add service <serviceName> <serverName> <serviceType> <port> -usip <usip>

add monitor <monitorName> <monitorType> -destip <ip> -iptunnel <iptunnel>

bind service <serviceName> -monitorName <monitorName>
<!--NeedCopy-->

例:

次の例では、タイプ IPTUNNEL のモニタが作成されます。

add monitor mon_DSR PING -destip 1.1.1.80 -iptunnel yes
add service svc_DSR01 2.2.2.100 ANY * -usip yes
bind service svc_DSR01 -monitorName mon_DSR
<!--NeedCopy-->

サーバと ADC アプライアンスの両方でルーティングを簡素化する別の方法として、ADC とサーバの両方が同じサブネットからの IP を使用するように設定する方法があります。そうすることで、トンネルエンドポイントの宛先を持つすべてのトラフィックがトンネルを介して送信されます。この例では、10.0.1.0/30 が使用されています。

注:

モニタの目的は、IP トンネルを介して各サーバのループバックに到達することにより、トンネルがアクティブであることを確認することです。サービスが稼働していない場合は、ADCとサーバ間の外部IPルーティングが良好かどうかを確認します。また、内部 IP アドレスが IP トンネルを介して到達可能かどうかも確認します。サーバでルートが必要になる場合や、選択した実装に応じて PBR が ADC に追加されます。

例:

add ns ip 10.0.1.2 255.255.255.252 -vServer DISABLED
add netProfile netProfile_DSR -srcIP 10.0.1.2
add lb monitor mon_DSR PING -LRTM DISABLED -destIP 1.1.1.80 -ipTunnel YES -netProfile netProfile_DSR
<!--NeedCopy-->

GUIを使用してモニターを構成するには

  1. Traffic Management > Load Balancing > Monitorsに移動します。
  2. モニターを作成し、 IPトンネルを選択します。

GUIを使用してIPover IPDSRのサービスを作成および構成するには

  1. Traffic Management > Load Balancing > Servicesに移動します。
  2. サービスを作成し、 [設定 ]タブで[ 送信元IPアドレスを使用]を選択します。

コマンドラインインターフェイスを使用してサービスを負荷分散仮想サーバーにバインドするには

コマンドプロンプトで次のコマンドを入力します。

bind lb vserver <name> <serviceName>
<!--NeedCopy-->

例:

bind lb vserver Vserver-LB-1 Service-DSR-1
<!--NeedCopy-->

GUI を使用してサービスを負荷分散仮想サーバーにバインドするには

  1. Traffic Management > Load Balancing > Virtual Serversに移動します。
  2. 仮想サーバーを開き、[ サービス ]セクションをクリックして、サービスを仮想サーバーにバインドします。

トンネルパケットの Outer ヘッダーでのクライアント IP アドレスの使用

Citrix ADCは、IPトンネリングを使用したダイレクトサーバーリターンモードに関連するトンネルパケットの外側ヘッダーでクライアントソースIPアドレスを、送信元IPアドレスとして使用することをサポートしています。この機能は、IPv4 を使用した DSR と IPv6 トンネリングモードを使用した DSR でサポートされます。この機能を有効にするには、IPv4 または IPv6 の クライアント送信元 IP アドレスの使用 パラメータを有効にします。この設定は、IP トンネリングを使用するすべての DSR 設定にグローバルに適用されます。

CLI を使用してクライアント-送信元 IP アドレスを送信元 IP アドレスとして使用するには

コマンドプロンプトで入力します。

  • set iptunnelparam -useclientsourceip [YES | NO]
  • show iptunnelparam

GUI を使用してクライアントの送信元 IP アドレスを送信元 IP アドレスとして使用するには

  1. [システム] > [ネットワーク] に移動します。
  2. [設定 ]タブで、[ IPv4トンネルのグローバル設定]をクリックします。
  3. [ IPv4トンネルグローバルパラメータの構成]ページで、[ クライアントソースIPを使用する] チェックボックスをオンにします。
  4. [OK] をクリックします。

CLI を使用してクライアントの送信元 IP アドレスを送信元 IP アドレスとして使用するには

コマンドプロンプトで入力します。

  • set ip6tunnelparam -useclientsourceip [YES | NO]
  • show ip6tunnelparam

GUI を使用してクライアントの送信元 IP アドレスを送信元 IP アドレスとして使用するには

  1. [システム] > [ネットワーク] に移動します。
  2. [設定 ]タブで、[ IPv6トンネルのグローバル設定]をクリックします。
  3. [ IPv6トンネルグローバルパラメータの構成]ページで、[ クライアントソースIPを使用する] チェックボックスをオンにします。
  4. [OK] をクリックします。

カプセル化解除設定

Citrix ADCアプライアンスまたはバックエンドサーバーのいずれかをカプセル化解除として構成できます。

Citrix ADC カプセル化解除

Citrix ADCアプライアンスをカプセル化解除として使用する場合は、Citrix ADCアプライアンスにIPトンネルを作成する必要があります。詳細については、 IP トンネルの設定を参照してください

Citrix ADC カプセル化解除セットアップは、次の2つの仮想サーバーで構成されます。

  • 最初の仮想サーバがカプセル化されたパケットを受信し、外部 IP カプセル化を削除します。
  • 2 番目の仮想サーバは、フロントエンド ADC 上の元のサービスのIPを持ち、MAC 変換を使用して、バインドされたサービスの MAC アドレスを使用してパケットをバックエンドに転送します。このセットアップは、通常 L2DSR と呼ばれます。この仮想サーバで ARP を無効にします。

設定例:

次の図は、ADC アプライアンスを使用したカプセル化解除の設定を示しています。

ADC カプセル化解除の設定

セットアップに必要な完全な構成は次のとおりです。

フロントエンド ADC 構成:

add service svc_DSR01 2.2.2.80 ANY * -usip YES -useproxyport NO
add lb vserver vip_DSR_ENCAP ANY 1.1.1.80 * -lbMethod SOURCEIPHASH -m IPTUNNEL -sessionless ENABLED
bind lb vserver vip_DSR_ENCAP svc_DSR01
<!--NeedCopy-->

バックエンド ADC 構成:

add ipTunnel DSR-IPIP 1.1.1.100 255.255.255.255 *

add service svc_DSR01_01 2.2.2.101 ANY * -usip YES -useproxyport NO
add service svc_DSR01_02 2.2.2.102 ANY * -usip YES -useproxyport NO
add service svc_DSR01_03 2.2.2.103 ANY * -usip YES -useproxyport NO

add lb vserver vs_DSR_DECAP ANY 2.2.2.80 * -lbMethod SOURCEIPHASH -m IPTUNNEL -sessionless ENABLED -netProfile netProf_DSR_MBF_noIP

add ns ip 1.1.1.80 255.255.255.255 -type VIP -arp DISABLED -snmp DISABLED
add lb vserver vs_DSR_Relay ANY 1.1.1.80 * -lbMethod SOURCEIPHASH -m MAC -sessionless ENABLED

bind lb vserver vs_DSR_DECAP svc_DSR01_01
bind lb vserver vs_DSR_DECAP svc_DSR01_02
bind lb vserver vs_DSR_DECAP svc_DSR01_03

bind lb vserver vip_DSR_Relay svc_DSR01_01
bind lb vserver vip_DSR_Relay svc_DSR01_02
bind lb vserver vip_DSR_Relay svc_DSR01_03

add netProfile netProf_DSR_MBF_noIP -MBF ENABLED
add lb monitor mon_DSR_MAC PING -netProfile netProf_DSR_MBF_noIP
bind service svc_DSR01_01 -monitorName mon_DSR_MAC
bind service svc_DSR01_02 -monitorName mon_DSR_MAC
bind service svc_DSR01_03 -monitorName mon_DSR_MAC
<!--NeedCopy-->

次の例は、apache2 を実行している Ubuntu サーバーと Red Hat サーバーを使用したテストセットアップを示しています。これらのコマンドは、各バックエンドサーバーで設定されます。

sudo ip addr add 1.1.1.80 255.255.255.255 dev lo
sudo sysctl net.ipv4.conf.all.arp_ignore=1
sudo sysctl net.ipv4.conf.all.arp_announce=2
sudo sysctl net.ipv4.conf.eth4.rp_filter=2 (The interface has the external IP with route towards the ADC)
sudo sysctl net.ipv4.conf.all.forwarding=1
sudo ip link set dev lo arp on
<!--NeedCopy-->

バックエンドサーバーのカプセル化解除

バックエンドサーバーをカプセル化解除として使用する場合、バックエンドの構成はサーバーの OS タイプによって異なります。次の手順に従って、バックエンドサーバーをカプセル化解除として構成できます。

  1. サービス IP の IP を使用してループバックインターフェイスを設定します。
  2. トンネルインターフェイスを作成します。
  3. トンネルインターフェイスを介したルートを追加します。
  4. トラフィックに必要なインターフェイス設定を構成します。

注:

Windows OS サーバでは IP トンネリングをネイティブに実行できないため、Linux ベースのシステムの例としてコマンドが提供されています。Windows OS サーバーではサードパーティプラグインを使用できますが、この例の範囲外です。

次の図は、バックエンドサーバーを使用したカプセル化解除の設定を示しています。

サーバーカプセル化解除の設定

設定例:

この例では、1.1.1.80はCitrix ADC仮想IP(VIP)アドレスで、2.2.2.10-2.2.12はバックエンドサーバーのIPアドレスです。VIP アドレスはループバックインターフェイスで設定され、ルートはトンネルインターフェイスを介して追加されます。モニタはサーバ IP を使用し、トンネルエンドポイントを使用して IP トンネル経由でモニタパケットをトンネリングします。

セットアップに必要な完全な構成は次のとおりです。

フロントエンド ADC 構成:

次の設定では、トンネルエンドポイントをソースとして使用するモニタが作成されます。次に、トンネル経由でサービス IP アドレスに ping を送信します。

add ns ip 10.0.1.2 255.255.255.252 -vServer DISABLED
add netProfile netProfile_DSR -srcIP 10.0.1.2
add lb monitor mon_DSR PING -LRTM DISABLED -destIP 1.1.1.80 -ipTunnel YES -netProfile netProfile_DSR
<!--NeedCopy-->

次の設定では、元の送信元 IP アドレスを使用するサービスの VIP を作成します。次に、IP トンネル経由でバックエンドサーバーにトラフィックを転送します。

add service svc_DSR01 2.2.2.10 ANY * -usip YES -useproxyport NO
bind service svc_DSR01 -monitorName mon_DSR

add service svc_DSR02 2.2.2.11 ANY * -usip YES -useproxyport NO
bind service svc_DSR02 -monitorName mon_DSR

add service svc_DSR03 2.2.2.12 ANY * -usip YES -useproxyport NO
bind service svc_DSR03 -monitorName mon_DSR

add lb vserver vip_DSR_ENCAP ANY 1.1.1.80 * -lbMethod SOURCEIPHASH -m IPTUNNEL -sessionless ENABLED
bind lb vserver vip_DSR_ENCAP svc_DSR01
bind lb vserver vip_DSR_ENCAP svc_DSR02
bind lb vserver vip_DSR_ENCAP svc_DSR03
<!--NeedCopy-->

各サーバーのバックエンドサーバー構成:

次のコマンドは、バックエンドサーバーが IPIP パケットを受信し、外部カプセル化を削除し、ループバックから元のクライアント IP に応答するために必要です。そうすることで、クライアントが受信したパケット内の IP アドレスが元の要求の IP アドレスと一致するようにします。

modprobe ipip
sudo ip addr add 1.1.1.80 255.255.255.255 dev lo
nmcli connection add type ip-tunnel ip-tunnel.mode ipip con-name tun0
ifname tun0 remote 198.51.100.5 local 203.0.113.10
nmcli connection modify tun0 ipv4.addresses '10.0.1.1/30'
nmcli connection up tun0
sudo sysctl net.ipv4.conf.all.arp_ignore=1
sudo sysctl net.ipv4.conf.all.arp_announce=2
sudo sysctl net.ipv4.conf.tun0.rp_filter=2
sudo sysctl net.ipv4.conf.all.forwarding=1
sudo ip link set dev lo arp off
<!--NeedCopy-->
使用例 7: IP オーバー IP を使用して DSR モードで負荷分散を構成する