Citrix ADCアプライアンスによる負荷分散

ここでは、負荷分散用にCitrix ADCアプライアンスを使用するために必要な情報について示します。

StoreFrontサーバーグループとCitrix ADCアプライアンス負荷分散の構成

負荷分散StoreFrontの展開計画

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

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

テストされた環境

  • 単一のサーバーグループ内の4つのWindows Server 2012 R2 StoreFront 3.0ノード。
  • 最小接続および「変動しない」(CookieInsert)負荷分散用に構成されたCitrix ADCアプライアンス12.1ロードバランサー1つ。
  • Citrix WorkspaceアプリがインストールされたWindows 10テストクライアント1台。

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

ゲートウェイとサーバー証明書の使用方法の計画」セクションを参照してください。

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

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

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

注:

エクスポートする場合、証明書に割り当てられている秘密キーは実行できません。次の2つの別個の証明書を使用します:Citrix ADCアプライアンス負荷分散仮想サーバー上の証明書と、StoreFrontサーバーグループノードの証明書。どちらの証明書にもサブジェクトの別名が必要です。

ローカライズされた画像

ローカライズされた画像

Citrix ADCアプライアンス負荷分散およびStoreFrontサーバーに対するSSL証明書の作成

Windows証明機関から発行された証明書のCitrix ADCアプライアンスへのインポート

  • WinSCPは、WindowsマシンからCitrix ADCアプライアンスファイルシステムへのファイル移動に役立つ無料のサードパーティ製ツールです。インポートする証明書を、Citrix ADCアプライアンスファイルシステム内の /nsconfig/ssl/ フォルダーにコピーします。
  • また、Citrix ADCアプライアンスでOpenSSLツールを使用してPKCS12またはPFXファイルから証明書とキーを抽出し、Citrix ADCで使用できるX.509のCERファイルとKEYファイルをPEM形式で個別に作成することもできます。
  1. このPFXファイルをCitrix ADCアプライアンスまたはVPXの /nsconfig/ssl にコピーします。
  2. Citrix ADCアプライアンスのコマンドラインインターフェイス(CLI)を開きます。
  3. Shell」と入力してCitrix ADCアプライアンス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」と入力して、Citrix ADCアプライアンスCLIに戻ります。

インポート後のCitrix ADCアプライアンスでのサーバー証明書の構成

  1. Citrix ADCアプライアンス管理GUIにログオンします。
  2. [Traffic Management]>[SSL]>[SSL Certificates]の順に選択し、[Install]をクリックします。
  3. [Install Certificate]ウィンドウで証明書と秘密キーペア名を入力します。
    • Citrix ADCアプライアンスファイルシステムの/nsconfig/ssl/で.cer証明書ファイルを選択します。
    • 同じ場所から秘密キーを含む.keyファイルを選択します。

ローカライズされた画像

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

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

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

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

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

個々のStoreFrontサーバーノードのCitrix ADCアプライアンスロードバランサーへの追加

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

    例= 4 x 2012R2 StoreFrontノード(2012R2-A~2012R2-D)

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

ローカライズされた画像

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

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

ローカライズされた画像

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

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

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

ローカライズされた画像

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

ローカライズされた画像

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

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

ローカライズされた画像

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

  1. Citrix ADCアプライアンス管理GUIにログオンします。

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

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

ローカライズされた画像

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

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

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

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

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

ローカライズされた画像

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

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

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

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

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

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

ローカライズされた画像

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

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

ローカライズされた画像

CitrixSubscriptionsSyncUsers内のメンバーシップ

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

ローカライズされた画像

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

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

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

    ローカライズされた画像

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

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

    Citrix ADCアプライアンス負荷分散およびStoreFrontサーバーに対するサーバー証明書の作成」を参照してください。

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

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

ローカライズされた画像

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

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

Citrixサービスモニター

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

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

注:

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

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

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

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

    $ServiceUrl = "https://localhost:443/StorefrontMonitor"
    Set-STFServiceMonitor -ServiceUrl $ServiceUrl
    Get-STFServiceMonitor
    
  2. 変更が完了したら、StoreFrontサーバーグループ内の外のすべてのサーバーに変更を反映させます。

  3. 新しいモニターでクイックテストを実行するには、StoreFrontサーバー、またはStoreFrontサーバーへネットワークアクセスするほかの任意のマシンでブラウザーに次のURLを入力します。ブラウザーは、すべてのStoreFrontサービスの状態についてXMLサマリーを返します。

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

    ローカライズされた画像

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

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

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

StorefrontサーバーグループでのCitrix Gatewayの構成

ローカライズされた画像

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に設定している場合、Receiver for WebとStoreFront Services間のトラフィックをキャプチャできません。