1つのCitrix Gatewayに2つのURLを構成する
StoreFrontでは、管理コンソールの [Citrix Gatewayの管理]の[追加] または [編集] からCitrix GatewayのURLを1つだけ追加できます。また、[Citrix Gatewayの管理]の[ファイルからインポート] で、Citrix GatewayのパブリックURLとGSLB(Global Server Load Balancing:グローバルサーバー負荷分散)のURLの両方を追加することもできます。
この記事では、PowerShellコマンドレットとStoreFront PowerShell SDKでオプションパラメーターの-gslburlを使用して、ゲートウェイのGslbLocation属性を設定する方法について説明します。これにより、次のユースケースで、StoreFrontでのCitrix Gatewayの管理が簡素化されます:
- GSLBと複数のCitrix Gateway。GSLBと複数のCitrix Gatewayを使用して、大規模なグローバルCitrix展開の2つまたは複数の場所にある公開リソースへのリモート接続の負荷を分散します。
- 単一のCitrix GatewayでのパブリックまたはプライベートURLの使用。パブリックURLによる外部アクセスとプライベートURLによる内部アクセスに対し、同一のCitrix Gatewayを使用します。
これは高度な機能とトピックです。StoreFrontゲートウェイとグローバルサーバー負荷分散(GSLB)の概念に慣れていない場合は、この記事の最後にある関連情報のリンクを参照してください。
このアーキテクチャには次の長所があります。
- 単一のゲートウェイオブジェクトで2つのURLを同時に使用できます。
- 管理者がユーザーの使用するゲートウェイURLと一致するようにStoreFrontゲートウェイオブジェクトを再構成しなくても、ユーザーは2つの異なるURLを切り替えてCitrix Gatewayにアクセスできます。
- 複数のGSLBゲートウェイを使用する場合のStoreFrontゲートウェイ構成のセットアップと検証テスト時間が短縮されます。
- 外部アクセスと内部アクセスの両方に、DMZ内部のStoreFrontに含まれる同一のCitrix Gatewayを使用できます。
- 最適なゲートウェイルーティングで両方のURLを使用できます。詳しくは、「可用性の高いマルチサイトストア構成のセットアップ」を参照してください。
2つのゲートウェイURLを使用する場合の展開に関する検討事項
- ゲートウェイURL FQDNは、StoreFront管理コンソール内の各ゲートウェイに対して表示されます。各ゲートウェイのGSLBURLプロパティは、PowerShellコマンドレットを使用した場合にのみ表示されます。
- ゲートウェイURLは、ネイティブのCitrix ReceiverおよびCitrix Workspaceアプリによって認証に使用されます。
- ゲートウェイURLは、ストアおよびゲートウェイ情報を使用してCitrix ReceiverおよびCitrix Workspaceアプリを構成するために使用されるプロビジョニングファイル(receiver.cr)内の場所タグに含まれます。
- 提供されているPowershellを使用して、ストアおよびローミングのweb.configファイルを変更します。この操作は手動で行わないでください。
重要:
-gslburlパラメーターを使用して2番目のゲートウェイURLを構成する前に、配置済みのサーバー証明書と組織でのDNS解決の実行方法について確認してください。Citrix GatewayおよびStoreFrontの展開環境で使用するURLはすべて、サーバー証明書に記載されている必要があります。サーバー証明書について詳しくは、「ゲートウェイとサーバー証明書の使用方法の計画」を参照してください。
DNS
- 分割DNS。大企業では、一般にスプリットDNSが使用されています。スプリットDNSでは、パブリックとプライベートのDNSの解決に異なる名前空間とDNSサーバーを使用しています。既存のDNSインフラストラクチャでこれがサポートされるかどうかを確認してください。
-
公開リソースへの外部および内部アクセス用の単一のURL。社内ネットワークの内部および外部からの公開リソースへのアクセスで同一のURLを使用するかどうか、または
example.com
とexample.net
のような2つの異なるURLを認めるかどうかを検討します。
サーバー証明書
このセクションでは、2つのゲートウェイURLを使用する場合のサーバー証明書の展開例を示します。
StoreFrontの負荷分散展開環境のサーバー証明書の例
プライベート署名済みのワイルドカードサーバー証明書に、*.storefront.example.netというFQDNを含めます。
または
プライベート署名済みのSANサーバー証明書に、3台のStoreFrontサーバーの負荷分散に必要なFQDNをすべて含めます。
loadbalancer.storefront.example.net
server1.storefront.example.net
server2.storefront.example.net
server3.storefront.example.net
<!--NeedCopy-->
StoreFrontサーバーグループのホストのベースURLを、ロードバランサーのIPアドレスに対して解決される共有FQDNに設定します:
loadbalancer.storefront.example.net
<!--NeedCopy-->
スプリットDNSを使用して内部と外部の両方からアクセスされるCitrix Gatewayのサーバー証明書の例
外部と内部両方のアクセス用のプライベート署名済みSANサーバー証明書に、外部と内部両方のFQDNを含めます。
gateway.example.com
gateway.example.net
<!--NeedCopy-->
外部からアクセスされるすべてのGSLBゲートウェイ向けのサーバー証明書の例
GSLBを経由した外部アクセス用のパブリック署名済みSANサーバー証明書に、次のFQDNを含めます。
gslbdomain.example.com
emeagateway.example.com
usgateway.example.com
apacgateway.example.com
<!--NeedCopy-->
これにより、ユーザーはGSLBを使用して最も近いゲートウェイにアクセスするか、一意のFQDNを使用して任意の場所にあるゲートウェイを選択することができます。
ユースケース1:Receiver for Web:GSLBおよび複数のCitrix Gateway
管理者がGSLBと複数のCitrix Gatewayを使用して、大規模なグローバルCitrix展開の2つまたは複数の場所にある公開リソースへのリモート接続の負荷を分散します。
この例の構成は次のとおりです。
- それぞれの場所またはデータセンターに、1つまたは複数のゲートウェイ、1台または複数台のStoreFrontサーバー、その場所の公開リソースを提供する1つ以上のXenAppおよびXenDesktopのコントローラーを含めています。グローバル展開環境内のGSLB Citrix ADCアプライアンス上で構成されている各GSLBは、ゲートウェイVPN仮想サーバーとして機能しています。この環境内のStoreFrontサーバーはすべて、GSLBレイヤーを構成するCitrix Gateway仮想サーバーすべてを含むように構成する必要があります。GSLB Citrix Gatewayはアクティブ/アクティブモードで使用していますが、1箇所でネットワーク接続、DNS、ゲートウェイ、StoreFrontサーバー、またはCitrix Virtual Apps and Desktopsのコントローラーに障害が発生した場合はフェールオーバーを実施することもできます。GSLBサービスが利用不能になると、ユーザーは自動で別のゲートウェイに接続されます。
- リモート接続が確立されると、外部クライアントは、GSLBの構成済み負荷分散アルゴリズム(ラウンドトリップ時間(RTT)や静的近接度)に基づいて最も近いゲートウェイに接続されます。
- 各ゲートウェイの一意のURLにより、ユーザーは使用するゲートウェイの場所固有のURLを選択して、リソースの起動先になるデータセンターを手動で指定することができます。
- GSLBまたはDNSの委任が意図したとおりに動作しなくなった場合は、GSLBをバイパスすることができます。GSLB関連の問題が解決されるまで、ユーザーは場所固有のURLを使用してすべてのデータセンターのリモートリソースに引き続きアクセスできます。
ユースケース1:Receiver for Webと、Citrix ReceiverまたはCitrix Workspaceアプリ:GSLBおよび複数のCitrix Gateway
ゲートウェイ属性
ネイティブのCitrix ReceiversまたはCitrix Workspace appsアプリでGSLBを使用するには、Add-STFRoamingGateway(作成)またはSet-STFRoamingGateway(変更)を使用して、次の属性を指定します:
-GatewayUrl - すべてのGSLBゲートウェイの共有FQDNとして設定
-GSLBurl - ゲートウェイごとに固有のゲートウェイFQDNとして設定
注:
直観に反しているように思えるかもしれませんが、これはこのWebユースケースには影響しません。これにより、ネイティブのCitrix ReceiverまたはCitrix Workspaceアプリが、エンドポイント
https://storefront.domain.com/citrix/<storename>/discovery
にアクセスすることによって検出された検出ドキュメント内でGSLBが使用する共有FQDNを確実に受け取ることができます。また、StoreFrontの [プロビジョニングファイルのエクスポート] コマンドによってエクスポートされたプロビジョニングファイル(receiver.cr)に、共有GSLB FQDNが確実に含まれるようにすることもできます。
プロビジョニングファイルの例
-GatewayUrl https://gslb.domain.com
を使用したサンプルファイル1。これにより、ネイティブのCitrix ReceiverまたはCitrix WorkspaceアプリはGSLBを使用してゲートウェイに接続できるようになります。
-GatewayUrl https://emeagateway.domain.com, https://usgateway.domain.com and https://apacgateway.domain.com
を使用したサンプルファイル2。これにより、ネイティブのCitrix ReceiverまたはCitrix Workspaceアプリは固有のURLを使用してゲートウェイに接続できるようになります。
共有FQDNは、ネイティブのCitrix ReceiverおよびCitrix Workspaceアプリによる認証に使用されます。
ユースケース2:単一のCitrix GatewayでのパブリックまたはプライベートURLの使用
管理者は、パブリックURLによる外部アクセスとプライベートURLによる内部アクセスの両方で、同一のCitrix Gatewayを使用します。
この例の構成は次のとおりです。
- 管理者は、クライアントが内部にある場合でも、公開リソースへのアクセスおよびHDXの起動トラフィックがCitrix Gatewayを経由して渡されるように設定します。
- Citrix GatewayはDMZ内にあります。
- DMZの両側には、2つのファイアウォールを経由したCitrix Gatewayへの2つの異なるネットワークルートが配置されています。
- 公開される外部名前空間は、内部の名前空間とは異なります。
PowerShellコマンドレット例
StoreFrontゲートウェイオブジェクト上のGslbLocation属性を設定するには、Add-STFRoamingGateway および Set-STFRoamingGateway の各PowerShellコマンドレットで-gslburlパラメーターを指定します。例:
Add-STFRoamingGateway -Name "EMEAGateway" -GatewayUrl "https://emeagateway.example.com" -GSLBurl "https://gslb.example.com" -SubnetIPAddress "10.0.0.1" -CallbackUrl "https://emeagateway.example.com" -LogonType "DomainAndRSA" -SmartCardFallbackLogonType "None" -Version "Version10_0_69_4" -SecureTicketAuthorityUrls "https://emea-controller.example.com/scripts/ctxsta.dll,https://us-controller.example.com/scripts/ctxsta.dll,https://apac-controller.example.com/scripts/ctxsta.dll"
Set-STFRoamingGateway -Name "EMEAGateway" -GatewayUrl "https://emeagateway.example.com" -GSLBurl "https://gslb.example.com"
Get-STFRoamingGateway -Name "EMEAGateway" (returns just the EMEA gateway object)
Or
Get-STFRoamingGateway (returns all gateway object configured in StoreFront)
<!--NeedCopy-->
ユースケース#1ではGslbLocationをNULLに設定して、「EMEAGateway」からGSLBurlを削除できます。以下のPowerShellは、メモリに保存されたゲートウェイオブジェクト$EMEAGatewayを変更します。次に、Set-STFRoamingGatewayが$EMEAGatewayに設定され、StoreFront構成を更新しGSLBurlを削除できます。
$EMEAGateway = Get-STFRoamingGateway
$EMEAGateway.GslbLocation = $Null
Set-STFRoamingGateway -Gateway $EMEAGateway
<!--NeedCopy-->
ユースケース1では、Get-STFRoamingGateway を使用すると以下のゲートウェイが返されます:
Name: EMEAGateway
Location: https://emeagateway.example.com/ (Unique URL for the EMEA Gateway)
GslbLocation: https://gslb.example.com/ (GSLB URL for all three gateways)
Name: USGateway
Location: https://USgateway.example.com/ (Unique URL for the US Gateway)
GslbLocation: https://gslb.example.com/ (GSLB URL for all three gateways)
Name: APACGateway
Location: https://APACgateway.example.com/ (Unique URL for the APAC Gateway)
GslbLocation: https://gslb.example.com/ (GSLB URL for all three gateways)
<!--NeedCopy-->
ユースケース2では、Get-STFRoamingGateway を使用すると以下のゲートウェイが返されます:
Name: EMEAGateway
Location: https://emeagateway.example.com/ (Public URL for the Gateway)
GslbLocation: https://emeagateway.example.net/ (Private URL for the Gateway)
<!--NeedCopy-->
ユースケース1では、Get-STFStoreRegisteredOptimalLaunchGateway を使用すると最適なゲートウェイルーティングが返されます:
$StoreObject = Get-STFStoreService -SiteId 1 -VirtualPath "/Citrix/<YourStore>"
Get-STFStoreRegisteredOptimalLaunchGateway -StoreService $StoreObject
Hostnames: {emeagateway.example.com, gslb.example.com}
Hostnames: {usgateway.example.com, gslb.example.com}
Hostnames: {apacgateway.example.com, gslb.example.com}
<!--NeedCopy-->
各ゲートウェイのGSLB URLまたは内部URLは、ローミングサービスのweb.configファイルに保存されます
StoreFrontの管理コンソールでは、各ゲートウェイのGSLB URLまたは内部URLは表示されませんが、すべてのGSLBゲートウェイについて、StoreFrontサーバーのC:\inetpub\wwwroot\Citrix\Roaming\にあるローミングサービスのweb.configファイルを開くと構成済みのGSLBLocationパスを確認できます。
使用例#1:ローミング中のゲートウェイweb.configファイル
<gateway id="cca13269-18c1-10fd-a0df-7931b3897aa8" name="EMEAGateway" default="false" edition="Enterprise" version="Version10_0_69_1" auth="DomainAndRSA" smartcardfallback="None" ipaddress="10.0.0.1" rwmode="NONE" deployment="Appliance" callbackurl=https://emeagateway.example.com/CitrixAuthService/AuthService.asmx sessionreliability="true" requesttickettwosta="false" stasUseLoadBalancing="false" stasBypassDuration="01:00:00">
<location path="https://emeagateway.example.com/" /><gslbLocation path="https://gslb.example.com/" /><clusternodes>
<clear />
</clusternodes>
<silentauthenticationurls>
<clear />
</silentauthenticationurls>
<secureticketauthorityurls>
<clear />
<location path="https://emea-controller.example.com/scripts/ctxsta.dll" />
<location path="https://us-controller.example.com/scripts/ctxsta.dll" />
<location path="https://apac-controller.example.com/scripts/ctxsta.dll" />
</secureticketauthorityurls>
</gateway>
<gateway id="b8ec720c-d85e-1889-8188-1cf08a2cf762" name="USGateway" default="false" edition="Enterprise" version="Version10_0_69_1" auth="DomainAndRSA" smartcardfallback="None" ipaddress="10.0.0.2" rwmode="NONE" deployment="Appliance" callbackurl="https://usgateway.example.com/CitrixAuthService/AuthService.asmx" sessionreliability="true" requesttickettwosta="false" stasUseLoadBalancing="false" stasBypassDuration="01:00:00"><location path="https://usgateway.example.com/" /><gslbLocation path="https://gslb.example.com/" /><clusternodes>
<clear />
</clusternodes>
<silentauthenticationurls>
<clear />
</silentauthenticationurls>
<secureticketauthorityurls>
<clear />
<location path="https://emea-controller.example.com/scripts/ctxsta.dll" />
<location path="https://us-controller.example.com/scripts/ctxsta.dll" />
<location path="https://apac-controller.example.com/scripts/ctxsta.dll" />
</secureticketauthorityurls>
</gateway>
<gateway id="c57117b5-e111-1eed-9117-a1ffa1c8100e" name="APACGateway" default="false" edition="Enterprise" version="Version10_0_69_1" auth="DomainAndRSA" smartcardfallback="None" ipaddress="10.0.0.3" rwmode="NONE" deployment="Appliance" callbackurl="https://apacgateway.example.com/CitrixAuthService/AuthService.asmx" sessionreliability="true" requesttickettwosta="false" stasUseLoadBalancing="false" stasBypassDuration="01:00:00"><location path="https://apacGateway.example.com/" /><gslbLocation path="https://gslb.example.com/" /><clusternodes>
<clear />
</clusternodes>
<silentauthenticationurls>
<clear />
</silentauthenticationurls>
<secureticketauthorityurls>
<clear />
<location path="https://emea-controller.example.com/scripts/ctxsta.dll" />
<location path="https://us-controller.example.com/scripts/ctxsta.dll" />
<location path="https://apac-controller.example.com/scripts/ctxsta.dll" />
</secureticketauthorityurls>
</gateway>
<!--NeedCopy-->
使用例#2:ローミング中のゲートウェイweb.configファイル
<gateway id="cca13269-18c1-10fd-a0df-7931b3897aa8" name="EMEAGateway" default="false" edition="Enterprise" version="Version10_0_69_1" auth="Domain" smartcardfallback="None" ipaddress="10.0.0.1" rwmode="NONE" deployment="Appliance" callbackurl="https://emeagateway.example.com/CitrixAuthService/AuthService.asmx" sessionreliability="true" requesttickettwosta="false" stasUseLoadBalancing="false" stasBypassDuration="01:00:00">
<location path="https://emeagateway.example.com/" />
<gslbLocation path=" https://emeagateway.example.net/" />
<clusternodes>
<clear />
</clusternodes>
<silentauthenticationurls>
<clear />
</silentauthenticationurls>
<secureticketauthorityurls>
<clear />
<location path="https://emea-controller.example.net/scripts/ctxsta.dll" />
</secureticketauthorityurls>
</gateway>
<!--NeedCopy-->
関連情報
開発者向けドキュメントで、「Citrix StoreFront SDK PowerShell Modules」を参照してください。