Citrix ADCアプライアンスによる負荷分散
ここでは、すべてのアクティブな負荷分散構成に2つ以上のStoreFrontサーバーを含むStoreFrontサーバーグループを展開する方法について説明します。サーバーグループのStoreFrontノード間でCitrix WorkspaceアプリとCitrix Receiver for Webからの受信要求を負荷分散するため、Citrix ADCアプライアンスを構成する方法について詳しく説明します。この記事では、Citrix ADCアプライアンスで使用するためにStoreFrontモニターを構成する方法についても説明します。
このセクションの例は、次の環境でテストされています:
- 単一のサーバーグループ内に4つのWindows Server 2012 R2 StoreFront 3.xノード。
- 最小接続および「変動しない」(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形式で個別に作成することもできます。
- このPFXファイルをCitrix ADCアプライアンスまたはVPXの /nsconfig/ssl にコピーします。
- Citrix ADCアプライアンスのコマンドラインインターフェイス(CLI)を開きます。
- 「Shell」と入力してCitrix ADCアプライアンスCLIを閉じ、FreeBSDシェルに切り替えます。
-
cd /nsconfig/ssl/
を使用してディレクトリを変更します。 -
openssl pkcs12 -in <imported cert file>.pfx -nokeys -out <certfilename>.cer
を実行します。PFXのパスワードの入力を求めるメッセージが表示されたらパスワードを入力します。 -
openssl pkcs12 -in <imported cert file>.pfx -nocerts -out <keyfilename>.key
を実行し、画面のメッセージに従ってPFXパスワードを入力して、次に秘密キーのPEMパスフレーズを設定してKEYファイルを保護します。 -
ls -al
を実行し、/nsconfig/ssl/
内にCERファイルとKEYファイルが正常に作成されたことを確認します。 - 「Exit」と入力して、Citrix ADCアプライアンスCLIに戻ります。
インポート後のCitrix ADCアプライアンスでのサーバー証明書の構成
- Citrix ADCアプライアンス管理GUIにログオンします。
- [Traffic Management]>[SSL]>[SSL Certificates] の順に選択し、[Install] をクリックします。
- [Install Certificate]ウィンドウで証明書と秘密キーペア名を入力します。
- Citrix ADCアプライアンスファイルシステムの/nsconfig/ssl/で.cer証明書ファイルを選択します。
- 同じ場所から秘密キーを含む.keyファイルを選択します。
StoreFrontサーバーグループ負荷分散用のDNSレコードの作成
選択した共用FQDN用にDNS AおよびPTRレコードを作成します。ネットワーク内のクライアントはこのFQDNを使用して、Citrix ADCアプライアンスロードバランサ―を使用するStoreFrontサーバーにアクセスします。
例:storefront.example.com
が負荷分散仮想サーバーの仮想IP(VIP)に解決されます。
シナリオ1:クライアントとCitrix ADCアプライアンスロードバランサー間、およびCitrix ADCアプライアンスロードバランサーと複数のStoreFront 3.xサーバー間のエンドツーエンドのHTTPS 443セキュア接続
このシナリオでは、ポート443を使用する変更されたStoreFrontモニターが使用されます。
個々のStoreFrontサーバーノードのCitrix ADCアプライアンスロードバランサーへの追加
- Citrix ADCアプライアンス管理GUIにログオンします。
-
[Traffic Management]>[Load Balancing]>[Servers]>[Add] の順に選択し、4つのStoreFrontノードをそれぞれ追加して負荷分散させます。
例= 4 x 2012R2 StoreFrontノード(2012R2-A~2012R2-D)
- IPベースのサーバー構成を使用し、各StoreFrontノードのサーバーIPアドレスを入力します。
StoreFrontモニターを定義して、サーバーグループ内のすべてのStoreFrontノードをチェックします
- Citrix ADC管理GUIにログオンします。
- [Traffic Management]>[Load Balancing]>[Monitors]>[Add] の順に選択し、StoreFrontを呼び出す新しいモニターを追加し、すべてのデフォルトの設定を受け入れます。
- [Type] ドロップダウンの一覧から [StoreFront] を選択します。
- 負荷分散仮想サーバーとStoreFront間でHTTPS接続を使用している場合は、[Secure] オプションを選択する必要があります。その他の場合は選択しません。
- [Special Parameters] タブで [Store Name] を入力します。
-
[Special Parameters] タブで [Check Backend Services] オプションを選択します。このオプションにより、StoreFrontサーバーで監視サービスの実行が有効になります。StoreFrontサーバーで実行するWindowsサービスをプローブしてStoreFrontサービスが監視され、次のサービスの状態が返されます:
- W3SVC(IIS)
- WAS(Windowsプロセスアクティブ化サービス)
- CitrixCredentialWallet
- CitrixDefaultDomainService
すべてのStoreFrontサーバーを含むHTTPS 443サービスグループの作成
-
サービスグループ内で、右側の [Members] オプションを選択し、サーバーセクションで以前定義したすべてのStoreFrontサーバーノードを追加します。
-
TLSポートを設定し、追加する各ノードに一意のサーバーIDを指定します。
-
[Monitors] タブで前に作成したStoreFrontモニターを選択します。
-
[Certificates] タブで、前にインポートしたSSL証明書をバインドします。
-
以前にインポートしたサーバー証明書の署名に使用されたCA証明書と、PKIチェーン信頼の一部の可能性があるそのほかのCAをバインドします。
ユーザートラフィック用負荷分散仮想サーバーの作成
-
Citrix ADCアプライアンス管理GUIにログオンします。
-
[Traffic Management]>[Load Balancing]>[Virtual Servers]>[Add] の順に選択し、新しい仮想サーバーを作成します。
-
仮想サーバー用の負荷分散方式を選択します。StoreFront負荷分散で共通の選択は、[round robin] または [least connection] です。
-
前に作成したService Groupを負荷分散仮想サーバーにバインドします。
-
以前にサービスグループにバインドしたのと同じSSLおよびCA証明書を負荷分散仮想サーバーにバインドします。
-
負荷分散仮想サーバーメニュー内から、右側にある [Persistence] を選択して、パーシステンス方式がCOOKIEINSERTになるように設定します。
-
cookieに名前を付けます。例えば、デバッグ時にFiddlerトレースで見つけやすいように NSC_SFPersistence という名前を付けます。
-
バックアップパーシステンスを [NONE] に設定します。
シナリオ2:HTTPS終了 - クライアントとCitrix ADCロードバランサー間のHTTPS 443通信、およびロードバランサーとその裏のStoreFront 3.xサーバー間のHTTP 80接続
このシナリオでは、ポート8000を使用するデフォルトのStoreFrontモニターが使用されます。
個々のStoreFrontサーバーのCitrix ADCロードバランサーへの追加
- Citrix ADC管理GUIにログオンします。
- [Traffic Management]>[Load Balancing]>[Servers]>[Add] の順に選択し、4つのStoreFrontサーバーをそれぞれ追加して負荷分散させます。例= 4 x 2012R2 StoreFrontサーバー(2012R2-A~2012R2-D)。
- IPベースのサーバー構成を使用し、各StoreFrontサーバーのサーバーIPアドレスを入力します。
HTTP 8000 StoreFrontモニターを定義して、サーバーグループ内のすべてのStoreFrontサーバーをチェックします
- Citrix ADC管理GUIにログオンします。
- [Traffic Management]>[モニター]>[追加] の順に選択し、StoreFrontを呼び出す新しいモニターを追加します。
- 新しいモニターの名前を入力し、すべてのデフォルトの設定を受け入れます。
- [Type] 一覧で [StoreFront] を選択します。
- [Special Parameters] タブで [Store Name] を入力します。
- [Destination Port] に「8000」と入力して、各StoreFrontサーバーで作成されるデフォルトのモニターインスタンスと一致させます。
- [Special Parameters] タブで [Check Backend Services] オプションを選択します。このオプションにより、StoreFrontサーバーで監視サービスの実行が有効になります。StoreFrontサーバーで実行するWindowsサービスをプローブしてStoreFrontサービスが監視され、実行中のすべてのStoreFrontサービスの状態が返されます。
すべてのStoreFrontサーバーを含むHTTP 80サービスグループの作成
- サービスグループ内で、右側の [Members] オプションを選択し、サーバーセクションで以前定義したすべてのStoreFrontサーバーノードを追加します。
- HTTPポートを80に設定し、各サーバーに一意のサーバーIDを追加します。
- [Monitors] タブで前に作成したStoreFrontモニターを選択します。
ユーザートラフィック用SSL終了負荷分散仮想サーバーの作成
- [Traffic Management]>[Load Balancing]>[Virtual Servers]>[Add] の順に選択し、新しい仮想サーバーを作成します。
-
仮想サーバーが使用する負荷分散方式を選択します。StoreFront負荷分散で共通の選択は、 [round robin] または [least connection] です。
-
前に作成したService Groupを負荷分散仮想サーバーにバインドします。
-
以前にサービスグループにバインドしたのと同じSSLおよびCA証明書を 負荷分散仮想サーバーにバインドします。
Note:
If the client is not allowed to store the HTTP cookie, the subsequent requests do not have HTTP Cookieが含まれなくなり、パーシステンスは適用されません。
-
負荷分散仮想サーバーメニュー内から、右側にある [Persistence] を選択して、パーシステンス方式がCOOKIEINSERTになるように設定します。
- cookieに名前を付けます。たとえば、デバッグ時にFiddler トレースで見つけやすいようにNSC_SFPersistenceという名前を付けます。
- バックアップパーシステンスを [NONE] に設定します。
サーバーグループ間のサブスクリプション同期用負荷分散仮想サーバーの作成
負荷分散仮想サーバーを作成する前に、次の点について検討します。
- オプション1: 単一の仮想サーバーの作成:ユーザートラフィックのみを負荷分散。公開アプリケーションおよびデスクトップのICA起動のみを実行する場合は、必要なのはこれですべてです(必須、かつ通常はこれが必要なすべてです)。
- オプション2: 仮想サーバーペアの作成:公開アプリケーションおよびデスクトップのICA起動を実行するためのユーザートラフィックの負荷分散用に1つ、サブスクリプションデータ同期操作の負荷分散用にもう1つ(大規模マルチサイト展開環境の2つ以上の負荷分散されたStoreFrontサーバーグループ間でサブスクリプションデータを反映させる場合にのみ必要)。
地理的に別々の場所にある2つ以上のStoreFrontサーバーグループで構成されるマルチサイト展開環境の場合、定期的な取得戦略を使ってサブスクリプションデータを複製できます。StoreFrontサブスクリプションレプリケーションはTCPポート808を使用するため、既存の負荷分散仮想サーバーをHTTPポート80またはHTTPS 443で使用することはできません。このサービスに対して高い可用性を提供するには、展開内の各Citrix ADCアプライアンスで2つ目の仮想サーバーを作成して、各StoreFrontサーバーグループのTCPポート808へ負荷分散します。レプリケーションスケジュールを構成する場合、サブスクリプション同期仮想サーバーの仮想IPアドレスと一致するサーバーグループアドレスを指定します。サーバーグループアドレスは、その場所にあるサーバーグループのロードバランサーのFQDNである必要があります。
サブスクリプション同期用のサービスグループの構成
- Citrix ADCアプライアンス管理GUIにログオンします。
- [Traffic Management]>[Service Groups]>[Add] の順に選択し、新しいサービスグループを追加します。
- プロトコルを [TCP] に変更します。
- サービスグループ内で、右側の [Members] オプションを選択し、サーバーセクションで以前定義したすべてのStoreFrontサーバーノードを追加します。
- [Monitors] タブで、TCPモニターを選択します。
サーバーグループ間のサブスクリプション同期用負荷分散仮想サーバーの作成
- Citrix ADCアプライアンス管理GUIにログオンします。
- [Traffic Management]>[Service Groups]>[Add] の順に選択し、新しいサービスグループを追加します。
- 負荷分散方式を [round robin] に設定します。
- プロトコルを [TCP] に変更します。
- ポート番号には443ではなく、「808」 と入力します。
CitrixSubscriptionsSyncUsers内のメンバーシップ
場所AにあるStoreFrontサーバーAについて、別の場所にあるサーバーBのサブスクリプションデータを要求および取得するには、サーバーAはサーバーB上のCitrixSubscriptionsSyncUsersローカルセキュリティグループのメンバーである必要があります。CitrixSubscriptionsSyncUsersローカルグループには、特定のサーバーからのサブスクリプションデータを取得するため認証されたすべてのリモートStoreFrontサーバーのアクセス制御リストが含まれます。双方向サブスクリプション同期の場合、サブスクリプションデータを取得するため、サーバーBもサーバーAのCitrixSubscriptionsSyncUsersセキュリティグループのメンバーである必要があります。
シナリオ1:Citrix ADCとStoreFront間でHTTPSを使用してStoreFrontサーバーグループを構成
-
Citrix ADCアプライアンス負荷分散仮想サーバー上に展開されたのと同じ証明書と秘密キーをサーバーグループ内のすべてのStoreFrontノードにインポートします。
-
すべてのStoreFrontノードのIISにHTTPSバインドを作成し、そこにこれより前にインポートした証明書をバインドします。
-
Citrix ADCロードバランサーとStoreFront間でHTTPSを使用している場合、共通名(CN)またはサブジェクトの別名(SAN)として負荷分散されたFQDNを含む証明書を使用する必要があります。
「Citrix ADCアプライアンス負荷分散およびStoreFrontサーバーに対するサーバー証明書の作成」を参照してください。
シナリオ2:Citrix ADCとStoreFront間でHTTPを使用してStoreFrontサーバーグループを構成
- 既に存在する場合は、すべてのStoreFrontノードからIISのHTTPSバインドを削除します。
- HTTPバインドがIISに存在し、ポート80を使用するように設定されていることを確認してください。
-
以下のようにReceiver for Web内でループバック設定でOnUsingHTTPとポート80を構成します。この手順は、ネイティブのCitrix WorkspaceアプリとReceiver for Web間のクライアント検出を成功させるために不可欠です。
シナリオ1と2の両方に共通の手順
-
サーバーグループのすべてのノードにStoreFrontをインストールします。
-
StoreFrontのインストール時に、プライマリノードのホストベースURLがサーバーグループのすべてのメンバーによって使用される共有FQDNとなるように設定します。このURLは、シナリオ1と2の両方で
https://storefrontlb.domain.com
であり、Citrix ADC負荷分散仮想サーバーの完全修飾ドメイン名に一致する必要があります。「Citrix ADCアプライアンス負荷分散およびStoreFrontサーバーに対するサーバー証明書の作成」を参照してください。
-
初期StoreFront構成が完了したら、各ノードを順番にプライマリノードを使用するサーバーグループに参加させます。
-
参加サーバーに対して [サーバーグループ]>[サーバーの追加]>[Copy the Authorization Code] の順に選択します。
-
プライマリノードからグループ内のすべてのほかのサーバーグループノードに構成を反映させます。
-
ロードバランサーの共有FQDNにアクセスして解決できるクライアントを使って、負荷分散サーバーグループをテストします。
Citrixサービスモニター
StoreFrontが依存しているWindowsサービスが適切に稼働しているかを確認する実行状態の外部監視を有効にするには、CitrixサービスモニターWindowsサービスを使用します。このサービスはほかのサービスには依存せず、ほかの重要なStoreFrontサービスの障害を監視して報告できます。モニターにより、StoreFrontサーバー展開の相対的な稼働状態をCitrix ADCアプライアンスなどほかのCitrixコンポーネントによって外部的に判断することができます。サードパーティソフトウェアは、StoreFrontモニターのXML応答を使用して、必要なStoreFrontサービスの状態を監視できます。
StoreFrontの展開後、HTTPおよびポート8000を使用するデフォルトのモニターが作成されます。
注:
StoreFront展開内に存在できるのは、モニターの1インスタンスのみです。
プロトコルとポートをHTTPS 443に変更など、既存のデフォルトのモニターに対して何らかの変更を加えるには、PowerShellコマンドレットを使ってStoreFrontモニターサービスURLを表示して再構成します。
デフォルトのサービスモニターを削除し、HTTPSおよびポート443を使用するものに置き換える
-
プライマリStoreFrontサーバーでPowerShell Integrated Scripting Environment(ISE)を開き、以下のコマンドを実行してデフォルトモニターをHTTPS 443に変更します。
$ServiceUrl = "https://localhost:443/StorefrontMonitor" Set-STFServiceMonitor -ServiceUrl $ServiceUrl Get-STFServiceMonitor <!--NeedCopy-->
-
変更が完了したら、StoreFrontサーバーグループ内の外のすべてのサーバーに変更を反映させます。
-
新しいモニターでクイックテストを実行するには、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の構成
Citrix Gateway VIPで[VServer IP address]フィールドに入力します。 同じCitrix ADCアプライアンスに負荷分散仮想サーバーがある場合、Citrix GatewayでSNIPを使用しないでください。
Citrix ADCアプライアンスを使ってStoreFrontサーバーグループを負荷分散する場合のループバックオプション
PowerShellを使ってループバックオプションを設定できます。
Receiver for Web web.configファイルの例
<communication attempts="2" timeout="00:01:00" loopback="On" loopbackPortUsingHttp="80">
<!--NeedCopy-->
PowerShellコマンドの例
& "c:\program files\Citrix\receiver storefront\scripts\ImportModules.ps1"
Set-DSLoopback -SiteId 1 -VirtualPath "/Citrix/StoreWeb" -Loopback "OnUsingHttp" -LoopbackPortUsingHttp 81
<!--NeedCopy-->
-Loopback パラメーターには3つの値を設定できます:
値 | コンテキスト |
---|---|
On - URLのホストを127.0.0.1に変更します。スキーマおよびポート(指定されている場合)は変更されません。 | TLS終了ロードバランサーが使用されている場合は、使用できません。 |
OnUsingHttp - ホストを127.0.0.1に、スキーマをHTTPに変更し、ポートをloopbackPortUsingHttp属性に構成されている値に変更します。 | ロードバランサーがTLS終了である場合のみ使用します。ロードバランサーとStoreFrontサーバー間の通信はHTTPで行います。-loopbackPortUsingHttp属性を使って、HTTPポートを明示的に構成できます。 |
Off - 要求内のURLはいかなる方法によっても変更されません。 | トラブルシューティングに使用します。Fiddlerのようなツールは、ループバックをOnに設定している場合、Receiver for WebとStoreFront Services間のトラフィックをキャプチャできません。 |