Product Documentation

NetScalerによる負荷分散

Dec 15, 2016

StoreFrontサーバーグループとNetScaler負荷分散の構成

負荷分散StoreFrontの展開計画

ここでは、すべてのアクティブな負荷分散構成に2つ以上のStoreFrontサーバーを含むStoreFrontサーバーグループを展開する方法について説明します。  また、サーバーグループのすべてのStoreFrontノード間でCitrix Receiver/Citrix Receiver for Webからの受信要求を負荷分散するため、NetScalerアプライアンスを構成する方法と、NetScalerまたはサードパーティのロードバランサーで使用するため新しいStoreFrontモニターを構成する方法について詳しく説明します。

負荷分散構成の例については、後述の「シナリオ1」と「シナリオ2」を参照してください。

テストされた環境

  • 単一のサーバーグループ内の4つのWindows Server 2012 R2 StoreFront 3.0ノード。
  • 最小接続およびCookieInsert “sticky”負荷分散用に構成された1つのNetScaler 10.5ロードバランサー。
  • Fiddler 4.0およびCitrix Receiver for Windows 4.3がインストールされた1つのWindows 8.1テストクライアント。

HTTPSを使用する場合に負荷分散化される展開のSSL証明書要件

商用証明機関から証明書を購入する、またはエンタープライズCAから発行しようとする前に、次のオプションについて検討します。

  • オプション1:*.example.comワイルドカード証明書をNetScaler負荷分散仮想サーバーとStoreFrontサーバーグループノードの両方で使用する。  これにより構成が簡素化され、将来的には証明書を置き換える必要なく追加のStoreFrontサーバーを増やすことができます。  これは推奨オプションです。
  • オプション2:サブジェクトの別名(SAN)が含まれている証明書をNetScaler負荷分散仮想サーバーとStoreFrontサーバーグループノードの両方で使用する。  すべてのStoreFrontサーバーの完全修飾ドメイン名(FQDN)と一致する証明書内の追加のSANはオプションですが、これによりStoreFront展開環境に柔軟性がもたらせられるため、推奨されます。  メールベースの検出discoverReceiver.example.com用のSANを含めます。

メールベースの検出の構成については、http://blogs.citrix.com/2013/04/01/configuring-email-based-account-discovery-for-citrix-receiver/を参照してください。

注:エクスポートする場合、証明書に割り当てられている秘密キーは実行できません。NetScaler負荷分散仮想サーバー上の証明書と、StoreFrontサーバーグループノードの証明書という2つの別個の証明書を使用します。  どちらの証明書にもサブジェクトの別名が必要です。  このオプションは、FIPS準拠の物理的NetScalerアプライアンスを使用していない限りはお勧めしません。  FIPS NetScalerを使用している限りにおいて有用なオプションです。

localized image
localized image

NetScaler負荷分散およびStoreFrontサーバーに対するSSL証明書の作成

OpenSSLを使った、Windows CAから発行された証明書のNetaScalerアプライアンスへのインポート

  • WinSCPは、WindowsマシンからNetScalerファイルシステムへのファイル移動に役立つ無料のサードパーティ製ツールです。  インポートする証明書を、NetScalerファイルシステム内の/nsconfig/ssl/フォルダーにコピーします。 
  • また、NetScaler上でOpenSSLツールを使用して、PKCS12/PFXファイルから証明書とキーを抽出し、NetScalerで使用できるPEM形式で、2つの別々のCERファイルとKEY X.509ファイルを作成することができます。
  1. このPFXファイルをNetScaler GatewayアプライアンスまたはVPXの/nsconfig/sslにコピーします。
  2. NetScalerコマンドラインインターフェイス(CLI)を開きます。
  3. Shell 」と入力してNetScaler CLIを閉じ、FreeBSDシェルに切り替えます。
  4. ディレクトリを変更するために、「cd /nsconfig/ssl」と入力します。
  5. openssl pkcs12 -in <imported cert file>.pfx -nokeys -out <certfilename>.cerを実行し、画面のメッセージに従ってPFXパスワードを入力します。
  6. openssl pkcs12 -in <imported cert file>.pfx -nocerts -out <keyfilename>.keyを実行し、画面のメッセージに従ってPFXパスワードを入力して、次に秘密キーのPEMパスフレーズを設定してKEYファイルを保護します。
  7. ls –al を実行し、/nsconfig/ssl/内にCERファイルとKEYファイルが正常に作成されたことを確認します。
  8. Exit 」と入力してNetScaler CLIに戻ります。

インポート後にNetScalerでSSL証明書の構成

  1. NetScaler管理GUIにログオンします。
  2. [Traffic Management]>[SSL]>[SSL Certificates]の順に選択し、[Install]をクリックします。
  3. [Install Certificate]ウィンドウで証明書と秘密キーペア名を入力します。

o  NetScalerファイルシステムの/nsconfig/ssl/で.cer証明書ファイルを選択します。

o  同じ場所から秘密キーを含む.keyファイルを選択します。

 

localized image

StoreFrontサーバーグループ負荷分散用のDNSレコードの作成

選択した共用FQDN用にDNS AおよびPTRレコードを作成します。  ネットワーク内のクライアントはこのFQDNを使用して、ロードバランサーを使用するStoreFrontサーバーにアクセスします。

例 - storefront.example.comが仮想サーバー仮想IP(VIP)の負荷分散を解決。

シナリオ1:クライアントとNetScalerロードバランサー間、またNetScalerロードバランサーと2つ以上のStoreFront 3.0サーバー間のエンドツーエンドのHTPPS 443セキュア接続。 

このシナリオでは、ポート443を使用する変更されたStoreFrontモニターが使用されます。

個々のStoreFrontサーバーノードのNetScalerロードバランサーへの追加

  1. NetScaler管理GUIにログオンします。
  2. [Traffic Management]>[負荷分散]>[サーバー]>[追加]の順に選択し、4つのStoreFrontノードをそれぞれ追加して負荷分散させます。

    例 = 4 x 2012R2 StoreFront Nodes called 2012R2-A to –D

  3. IPベースのサーバー構成を使用し、各StoreFrontノードのサーバーIPアドレスを入力します。
localized image

StoreFrontモニターを定義して、サーバーグループ内のすべてのStoreFrontノードをチェックします。

  1. NetScaler管理GUIにログオンします。
  2. [Traffic Management]>[負荷分散]>[モニター]>[追加]の順に選択し、StoreFrontを呼び出す新しいモニターを追加してすべてのデフォルト設定を受け入れます。
  3. [Type]ドロップダウンの一覧から[StoreFront]を選択します。
  4. 負荷分散仮想サーバーとStoreFront間でSSL接続を使用している場合は、[Secure]チェックボックスをオンにする必要があります。その他の場合はオフのままにします。
  5. [Special Parameters]タブでストア名を指定します。
  6. [Special Parameters]タブで[Check Backend Services]チェックボックスをオンにします。  このオプションにより、StoreFrontサーバーで監視サービスの実行が有効になります。  StoreFrontサーバーで実行するWindowsサービスをプローブしてStoreFrontサービスが監視され、実行中のすべてのStoreFrontサービスの状態が返されます。
localized image

すべてのStoreFrontサーバーを含むHTTPS 443サービスグループの作成

1.  サービスグループ内で、右側のメンバーオプションを選択し、サーバーセクションで以前定義したすべてのStoreFrontサーバーノードを追加します。

2.  SSLポートを設定し、各ノードに一意のサーバーIDを追加します。

localized image

3. [Monitors]タブで前に作成したStoreFrontモニターを選択します。

localized image

4.   [Certificates]タブで、前にインポートしたSSL証明書をバインドします。

5.   以前にインポートしたSSL証明書の署名に使用されたCA証明書とPKIチェーン信頼の一部の可能性があるそのほかのCAをバインドします。

localized image

ユーザートラフィック用負荷分散仮想サーバーの作成

1.    NetScaler管理GUIにログオンします。

2.    [Traffic Management]>[負荷分散]>[仮想サーバー]>[追加]の順に選択し、新しい仮想サーバーを作成します。

3.    仮想サーバー用の負荷分散方式を選択します。  StoreFront負荷分散で共通の選択は、[round robin]または[least connection]です。

localized image

4.  前に作成したService Groupを負荷分散仮想サーバーにバインドします。

5.  以前にサービスグループにバインドしたのと同じSSLおよびCA証明書を負荷分散仮想サーバーにバインドします。

6.  負荷分散仮想サーバーメニュー内から、右側にある[Persistence]を選択して、パーシステンス方式がCookieInsertになるように設定します。

7.  cookieに名前を付けます。 たとえば、デバッグ時にFiddlerトレースで見つけやすいようにNSC_SFPersistenceという名前を付けます。

8.  バックアップパーシステンスを[None]に設定します。

localized image

シナリオ2:SSL終了 - クライアントとNetScalerロードバランサー間のHTTPS 443通信、およびロードバランサーとその裏のStoreFront 3.0サーバー間のHTTP 80 接続。  

このシナリオでは、ポート8000を使用するデフォルトのStoreFrontモニターが使用されます。

個々のStoreFrontサーバーのNetScalerロードバランサーへの追加

  1. NetScaler管理GUIにログオンします。
  2. [Traffic Management]>[負荷分散]>[サーバー]>[追加]の順に選択し、4つのStoreFrontサーバーをそれぞれ追加して負荷分散させます。

    例 = 4 x 2012R2 Storefront servers called 2012R2-A to -D

  3. IPベースのサーバー構成を使用し、各StoreFrontサーバーのサーバーIPアドレスを入力します。
localized image

HTTP 8000 StoreFrontモニターを定義して、サーバーグループ内のすべてのStoreFrontサーバーをチェックします。

  1. NetScaler管理GUIにログオンします。
  2. [Traffic Management]>[Monitors]>[Add]の順に選択し、StoreFrontを呼び出す新しいモニターを追加します。
  3. 新しいモニターの名前を入力し、すべてのデフォルトの設定を受け入れます。
  4. [Type]ドロップダウンメニューから[StoreFront]を選択します。
  5. [Special Parameters]タブでストア名を指定します。
  6. ポートに「8000」を入力して、各StoreFrontサーバーで作成されるデフォルトのモニターインスタンスと一致させます。
  7. [Special Parameters]タブで[Check Backend Services]チェックボックスをオンにします。  このオプションにより、StoreFrontサーバーで監視サービスの実行が有効になります。  StoreFrontサーバーで実行するWindowsサービスをプローブしてStoreFrontサービスが監視され、実行中のすべてのStoreFrontサービスの状態が返されます。

すべてのStoreFrontサーバーを含むHTTP 80サービスグループの作成

  1. サービスグループ内で、右側のメンバーオプションを選択し、サーバーセクションで以前定義したすべてのStoreFrontサーバーノードを追加します。
  2. HTTPポートを80に設定し、各サーバーに一意のサーバーIDを追加します。
  3. [Monitors]タブで前に作成したStoreFrontモニターを選択します。

ユーザートラフィック用SSL終了負荷分散仮想サーバーの作成

  1. [Traffic Management]>[負荷分散]>[仮想サーバー]>[追加]の順に選択し、新しい仮想サーバーを作成します。
  2. 仮想サーバーが使用する負荷分散方式を選択します。  StoreFront負荷分散で共通の選択は、[round robin]または[least connection]です。
  3. 前に作成したService Groupを負荷分散仮想サーバーにバインドします。
  4. 以前にサービスグループにバインドしたのと同じSSLおよびCA証明書を負荷分散仮想サーバーにバインドします。

    注:クライアントがHTTP Cookieを保存できない場合は、以降の要求にHTTP Cookieが含まれなくなり、パーシステンスは適用されません。

  5. 負荷分散仮想サーバーメニュー内から[Persistence]を選択して、パーシステンス方式がCookieInsertとなるように設定します。
  6. cookieに名前を付けます。 たとえば、デバッグ時にFiddlerトレースで見つけやすいようにNSC_SFPersistenceという名前を付けます。
  7. バックアップパーシステンスを[None]に設定します。
localized image

サーバーグループ間のサブスクリプション同期用負荷分散仮想サーバーの作成

負荷分散仮想サーバーを作成する前に、次の点について検討します。

  • オプション1:単一の仮想サーバーの作成:ユーザートラフィックのみを負荷分散。  公開アプリケーションおよびデスクトップのICA起動のみを実行する場合は、必要なのはこれですべてです (必須、かつ通常はこれが必要なすべてです)。
  • オプション2:仮想サーバーペアの作成:公開アプリケーションおよびデスクトップのICA起動を実行するためのユーザートラフィックの負荷分散用に1つ、サブスクリプションデータ同期操作の負荷分散用にもう1つ (大規模マルチサイト展開環境の2つ以上の負荷分散されたStoreFrontサーバーグループ間でサブスクリプションデータを反映させる場合にのみ必要)。

地理的に別々の場所にある2つ以上のStoreFrontサーバーグループで構成されるマルチサイト展開環境の場合、定期的にプル戦略を使ってサブスクリプションデータを複製できます。 StoreFrontサブスクリプションレプリケーションはTCPポート808を使用するため、既存の負荷分散仮想サーバーをHTTPポート80またはSSL 443で使用することはできません。  このサービスに対して高い可用性を提供するには、展開内の各NetScalerで2つ目の仮想サーバーを作成して、各StoreFrontサーバーグループのTCPポート808へ負荷分散します。  レプリケーションスケジュールを構成する場合、サブスクリプション同期仮想サーバーの仮想IPアドレスと一致するサーバーグループアドレスを指定します。  サーバーグループアドレスは、その場所にあるサーバーグループのロードバランサーのFQDNである必要があります。 

サブスクリプション同期用のサービスグループの構成

  1. NetScaler管理GUIにログオンします。
  2. [Traffic Management]>[Service Groups]>[Add]の順に選択し、新しいサービスグループを追加します。
  3. プロトコルを[TCP]に変更します。
  4. サービスグループ内で、右側の[Members]オプションを選択し、サーバーセクションで以前定義したすべてのStoreFrontサーバーノードを追加します。
  5. [Monitors]タブで、TCPモニターを選択します。
localized image

サーバーグループ間のサブスクリプション同期用負荷分散仮想サーバーの作成

  1. NetScaler管理GUIにログオンします。
  2. [Traffic Management]>[Service Groups]>[Add]の順に選択し、新しいサービスグループを追加します。
  3. 負荷分散の手法に[round robin]を設定します。
  4. プロトコルを[TCP]に変更します。
  5. ポート番号には443 ではなく、「808 」と入力します。
localized image

CitrixSubscriptionsSyncUsers内のメンバーシップ

場所AにあるStoreFrontサーバーAについて、別の場所にあるサーバーBのサブスクリプションデータを要求およびプルするには、サーバーAはサーバーB上の CitrixSubscriptionsSyncUsers ローカルセキュリティグループのメンバーである必要があります。  CitrixSubscriptionsSyncUsersローカルグループには、特定のサーバーからのサブスクリプションデータをプルするため認証されたすべてのリモートStoreFrontサーバーのアクセス制御リストが含まれます。  双方向サブスクリプション同期の場合、サブスクリプションデータをプルするため、サーバーBもサーバーAのCitrixSubscriptionsSyncUsers セキュリティグループのメンバーである必要があります。

localized image

負荷分散用StoreFrontサーバーグループの構成

1.   NetScaler負荷分散仮想サーバー上に展開されたのと同じ証明書と秘密キーをサーバーグループ内のすべてのStoreFrontノードにインポートします。

2.   すべてのStoreFrontノードのIISにHTTPSバインドを作成し、そこにこれより前にインポートした証明書をバインドします。

localized image

3.   サーバーグループのすべてのノードにStoreFrontをインストールします。

4.   StoreFrontをインストール間に、プライマリノードのホストベースURLがサーバーグループのすべてのメンバーによって使用される共有FQDNとなるように設定します。  共通名(CN)またはサブジェクトの別名(SAN)として負荷分散されたFQDNを含む証明書を使用する必要があります。

     「NetScaler負荷分散およびStoreFrontサーバーに対するSSL証明書の作成」を参照してください。

5.   初期StoreFront構成が完了したら、各ノードを順番にプライマリノードを使用するサーバーグループに参加させます。 

6.   参加サーバーに対して[サーバーグループ]>[サーバーの追加]>[Copy the Authorization Code]の順に選択します。

localized image

7.   プライマリノードからグループ内のすべてのほかのサーバーグループノードに構成を反映させます。

8.   ロードバランサーの共有FQDNにアクセスして解決できるクライアントを使って、負荷分散サーバーグループをテストします。

 

Citrixサービスモニター

StoreFrontが依存しているWindowsサービスが適切に稼働しているかを確認する実行状態の外部監視を有効にするには、CitrixサービスモニターWindowsサービスを使用します。  このサービスはほかのサービスには依存せず、ほかの重要なStoreFrontサービスの障害を監視して報告できます。  モニターにより、StoreFrontサーバー展開の相対的な稼働状態をNetScalerなどほかのCitrixコンポーネントによって外部的に判断することができます。  サードパーティソフトウェアは、StoreFrontモニターのXML応答を使用して、必要なStoreFrontサービスの状態を監視できます。

StoreFrontの展開後、HTTPおよびポート8000を使用するデフォルトのモニターが作成されます。 

注:StoreFront展開内に存在できるのは、モニターの単一のインスタンスのみです。

プロトコルとポートをHTTPS 443に変更など、既存のデフォルトのモニターに対して何らかの変更を加えるには、3つのPowerShellコマンドレットを使ってStoreFrontモニターサービスURLを表示して再構成します。 

$DefaultServiceURL = "http://localhost:8000/StorefrontMonitor"
Remove-DSServiceMonitorFeature
Install-DSServiceMonitorFeature -ServiceUrl $DefaultServiceURL
Get-DSServiceMonitorFeature

 

デフォルトのサービスモニターを削除し、HTTPSおよびポート443を使用するものに置き換える

  1. プライマリStoreFrontサーバーでPowerShell Integrated Scripting Environment(ISE)を開き、以下のコマンドを実行してデフォルトモニターをHTTPS 443に変更します。

    # Import StoreFront API Modules
    & "$Env:PROGRAMFILES\Citrix\Receiver StoreFront\Scripts\ImportModules.ps1"
    $ServiceURL = "https://localhost:443/StorefrontMonitor"

    Remove-DSServiceMonitorFeature

    Install-DSServiceMonitorFeature -ServiceUrl $ServiceURL


  2. 変更が完了したら、StoreFrontサーバーグループ内の外のすべてのサーバーに変更を反映させます。
  3. 新しいモニターでクイックテストを実行するには、StoreFrontサーバー、またはStoreFrontサーバーへネットワークアクセスするほかの任意のマシンでブラウザーに次のURLを入力します。  ブラウザーは、すべてのStoreFrontサービスの状態についてXMLサマリーを返します。

https://<loadbalancingFQDN>:443/StoreFrontMonitor/GetSFServicesStatus

localized image

同じNetScaler Gatewayアプライアンス上のNetScaler Gatewayおよび負荷分散仮想サーバー

同じNetScalerアプライアンス上に構成済みのNetScaler Gateway仮想サーバーと負荷分散仮想サーバーがある場合、内部ドメインユーザーがNetScaler Gateway仮想サーバーを経由するのではなくStoreFront負荷分散ホストベースURLに直接アクセスしようとすると問題が発生することがあります。 

この場合、StoreFrontはユーザーのソースIPアドレスとNetScaler GatewayのサブネットIPアドレス(SNIP)とを相関するものとするため、エンドユーザーがNetScaler Gatewayで既に認証されたとStoreFrontにより見なされてしまいます。  このためStoreFrontは、ユーザーにドメイン資格情報を使ってログオンするよう求めるのではなく、AGBasicプロトコルを使ってNetScaler Gatewayサイレント認証を実行しようとします。  この問題を避けるには、次に示すようにSNIPアドレスを省いてAGBasicでなく、ユーザー名とパスワードの認証が使用されるようにします。

StoreFrontサーバーグループでのNetscaler Gatewayの構成 

localized image

NetScalerを使ってStoreFrontサーバーグループを負荷分散する場合のループバックオプション

2.6以前など古いバージョンのStoreFrontでは、各StoreFrontサーバーでホストファイルを手動で変更してロードバランサーの完全修飾ドメイン名(FQDN)を特定のStoreFrontサーバーのループバックアドレスまたはIPアドレスにマップするよう推奨していました。  これにより、Receiver for Webは常に、負荷分散化された展開内の同じサーバー上のStoreFrontサービスと通信できます。  これが必要なのは、Receiver for Webと認証サービス間の明示的なログインプロセス中にHTTPセッションが作成され、Receiver for WebがベースFQDNを使用してStoreFrontサービスと通信するためです。  ベースFQDNがロードバランサーに対して解決された場合は、ロードバランサーは潜在的にグループ内の別のStoreFrontサーバーにトラフィックを送信でき、認証エラーが発生することになります。  これによって、Receiver for Webはそれと同じサーバー上にあるストアサービスへアクセスしようとする場合を除き、ロードバランサーをバイパスしません。 

PowerShellを使ってループバックオプションを設定できます。  ループバックを有効にすると、サーバーグループ内の各StoreFrontサーバーにホストファイルエントリを作成する必要がなくなります。 

Receiver for Web web.configファイルの例:

<communication attempts="2" timeout="00:01:00" loopback="On" loopbackPortUsingHttp="80">

PowerShellコマンドの例:

& "c:\program files\Citrix\receiver storefront\scripts\ImportModules.ps1"

Set-DSLoopback -SiteId 1 -VirtualPath "/Citrix/StoreWeb" -Loopback "OnUsingHttp" -LoopbackPortUsingHttp 81

-Loopback パラメーターには3つの値を設定できます。

コンテキスト

On:

URLのホストを127.0.0.1に変更します。  スキーマおよびポート(指定されている場合)は変更されません。

SSL終了ロードバランサーが使用されている場合は使用できません。

OnUsingHttp:

ホストを127.0.0.1に、スキーマをHTTPに変更し、ポートをloopbackPortUsingHttp属性に構成されている値に変更します。

ロードバランサーがSSL終了である場合のみ使用します。  ロードバランサーとStoreFrontサーバー間の通信はHTTPで行います。  -loopbackPortUsingHttp属性を使って、HTTPポートを明示的に構成できます。

Off:

要求内のURLはいかなる方法によっても変更されません。

トラブルシューティングに使用します。  Fiddlerのようなツールは、ループバックを“On”に設定している場合、Citrix Receiver for WebとStoreFront Services間のトラフィックをキャプチャできません。