StoreFront

使用 Citrix ADC 设备进行负载平衡

本文提供在全部有效的负载平衡配置中部署包含两个或更多个 StoreFront 服务器的 StoreFront 服务器组的方法指导。本文提供有关如何将 Citrix ADC 设备配置为在服务器组中的 StoreFront 服务器之间对来自 Citrix Workspace 应用程序和 Web 浏览器的传入请求进行负载平衡的详细信息。

本文档包括使用 HTTPS 确保从客户端到负载平衡器的连接安全的说明,以及使用 HTTPS 确保 Citrix ADC 与 StoreFront 服务器之间的连接安全的说明(可选)。

本部分内容中的示例已在以下环境中进行了测试:

  • 单服务器组中包含四个 Windows Server 2012 R2 StoreFront 1912 节点。
  • 配置一个 Citrix ADC 设备 12.1 负载平衡器用于最少连接和 CookieInsert“粘滞”负载平衡。
  • 一个安装了 Citrix Workspace 应用程序的 Windows 10 测试客户端。

打算使用 HTTPS 的情况下负载平衡部署的服务器证书要求

请查看计划网关和服务器证书的使用部分。

从商业证书颁发机构购买证书或通过您的企业证书颁发机构颁发证书之前,请考虑以下选项。

  • 选项 1: 在 Citrix ADC 设备负载平衡虚拟服务器 和 StoreFront 服务器组节点上均使用 *.example.com 通配符证书。这样可以简化配置,将来无需替换证书即可以添加其他 StoreFront 服务器。
  • 选项 2: 在 Citrix ADC 设备负载平衡虚拟服务器 和 StoreFront 服务器组节点上均使用包含使用者可选名称 (SAN) 的证书。证书中包含匹配所有 StoreFront 服务器完全限定域名 (FQDN) 的其他 SAN 为可选,但是建议采用,因为这样可以在 StoreFront 部署中提供更大的灵活性。包含用于基于电子邮件的发现 discoverReceiver.example.com 的 SAN。

有关基于电子邮件的发现配置的详细信息,请参阅 http://blogs.citrix.com/2013/04/01/configuring-email-based-account-discovery-for-citrix-receiver/

注意:

当导出与证书关联的私钥不可行时,请使用两个单独的证书:一个在 Citrix ADC 设备负载平衡虚拟服务器上使用,另一个不同的证书在 StoreFront 服务器组节点上使用。两个证书都必须包含使用者备用名称。

本地化后的图片

本地化后的图片

为 StoreFront 服务器组负载平衡器创建 DNS 记录

为所选的共享 FQDN 创建 DNS A 和 PTR 记录。您网络内的客户端使用此 FQDN 访问使用 Citrix ADC 设备负载平衡器的 StoreFront 服务器组。

示例:storefront.example.com 解析为负载平衡虚拟服务器虚拟 IP (VIP)。

配置 StoreFront 服务器

  1. 在服务器组中的每个节点上安装 StoreFront。

  2. 安装 StoreFront 期间,将主节点上的主机基本 URL 设置为服务器组的所有成员使用的共享负载平衡器 FQDN。这应始终为 https://storefrontlb.domain.com,并且必须与 Citrix ADC 负载平衡虚拟服务器的 FQDN 匹配。

    请参阅为 Citrix ADC 设备负载平衡器和 StoreFront 服务器创建服务器证书

  3. 完成初始 StoreFront 配置后,相继将每个节点加入使用主节点的服务器组。

  4. 选择服务器组 > 添加服务器 > 复制加入的服务器的授权代码

    加入服务器组

  5. 将主节点的配置传播到组中的所有其他服务器组节点。

(可选)将 StoreFront 服务器配置为使用 HTTPS

如果您想使用 SSL 来确保 Citrix Gateway 与 StoreFront 服务器之间的连接安全,请在每台 StoreFront 服务器上安装证书并将其绑定到 HTTPS。证书必须包含负载平衡的 FQDN 作为公用名 (CN) 或者作为使用者备用名称 (SAN)。

  1. 将部署在 Citrix ADC 设备负载平衡虚拟服务器上的相同证书和私钥导入服务器组的每个 StoreFront 节点。

  2. 在每个 StoreFront 服务器上的 IIS 中创建 HTTPS 绑定,然后绑定之前导入其中的证书。

    编辑站点绑定

(可选)将 Citrix Service Monitor 配置为使用 HTTPS

StoreFront 安装包括 Citrix Service Monitor Windows 服务。此服务没有其他服务依赖项,可以监视关键 StoreFront 服务的运行状况。这允许 Citrix ADC 和其他第三方应用程序监视 StoreFront 服务器部署的相对运行状况。

默认情况下,监视器在端口 8000 上使用 HTTP。可以选择将其更改为在端口 443 上使用 HTTPS。

  1. 打开主 StoreFront 服务器上的 PowerShell 集成脚本环境 (ISE),然后运行以下命令以将默认监视器更改为 HTTPS 443:

    $ServiceUrl = "https://localhost:443/StorefrontMonitor"
    Set-STFServiceMonitor -ServiceUrl $ServiceUrl
    Get-STFServiceMonitor
    <!--NeedCopy-->
    
  2. 完成后,将更改传播到 StoreFront 服务器组中的所有其他服务器。

  3. 要在监视器上执行快速测试,请在 StoreFront 服务器或可以通过网络访问 StoreFront 服务器的任何其他计算机上,将以下 URL 输入浏览器中。浏览器将返回每个 StoreFront 服务的状态的 XML 摘要。

    https://<loadbalancingFQDN>/StoreFrontMonitor/GetSFServicesStatus

    本地化后的图片

配置 Citrix ADC 负载平衡器

将 Windows 证书颁发机构颁发的证书导入 Citrix ADC 设备

  • WinSCP 是极其有用的第三方免费工具,可将文件从 Windows 计算机移动到 Citrix ADC 设备文件系统。将要导入的证书复制到 Citrix ADC 设备文件系统内的 /nsconfig/ssl/ 文件夹。
  • 您也可以在 Citrix ADC 设备上使用 OpenSSL 工具从 PKCS12/PFX 文件提取证书和密钥,以便以 Citrix ADC 可以使用的 PEM 格式创建两个单独的 .CER 和 .KEY X.509 文件。
  1. 将 PFX 文件复制到 Citrix ADC 设备或 VPX 上的 /nsconfig/ssl 中。
  2. 打开 Citrix ADC 设备命令行界面 (CLI)。
  3. 键入 Shell 以退出 Citrix ADC 设备 CLI 并切换到 FreeBSD shell。
  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(SSL 证书),然后单击 Install(安装)。
  3. 在“Install Certificate”(安装证书)窗口中,输入证书和私钥对名称。
    • 在 Citrix ADC 设备文件系统上,选择 /nsconfig/ssl/ 下面的 .cer 证书文件。
    • 从同一位置选择包含私钥的 .key 文件。

本地化后的图片

将单个 StoreFront 服务器节点添加到 Citrix ADC 设备负载平衡器

  1. 登录到 Citrix ADC 设备管理 GUI。
  2. 选择 Traffic Management(流量管理)> Load Balancing(负载平衡)> Servers(服务器)> Add(添加),添加要进行负载平衡的每个 StoreFront 服务器。

    示例 = 2 个名为 StoreFront-eu-1 和 StoreFront-eu-2 的 StoreFront 服务器

  3. 使用基于 IP 的服务器配置,并输入每个 StoreFront 节点的服务器 IP 地址。

本地化后的图片

定义一个 StoreFront 监视器,用于检查服务器组中所有 StoreFront 节点的状态

  1. 登录到 Citrix ADC 管理 GUI。
  2. 选择 Traffic Management(流量管理)> Load Balancing(负载平衡)> Monitors(监视器)> Add(添加),添加名为 StoreFront 的新监视器,并接受所有默认设置。
  3. Type(类型)下拉菜单中,选择 StoreFront
  4. 如果您已将 StoreFront 监视器配置为使用 HTTPS,请务必选择安全选项。否则,请将此选项保持未选中状态,然后输入端口 8000。
  5. 选择 Check Backend Services(检查后端服务)选项。选中此选项将 StoreFront 服务器上运行的服务进行监视。通过探测 StoreFront 服务器上运行的 Windows 服务监视 StoreFront 服务,该操作会返回以下服务的状态:
    • W3SVC (IIS)
    • WAS(Windows 进程激活服务)
    • CitrixCredentialWallet
    • CitrixDefaultDomainService

创建包含所有 StoreFront 服务器的服务组

  1. 选择 Traffic Management(流量管理)> Load Balancing(负载平衡)> Service Groups(服务组)> Add(添加)。要通过 HTTPS 连接到 StoreFront 服务器,请选择 SSL 协议。否则,请选择 HTTP 协议。将其他设置保留为默认设置。按确定

  2. 在您的服务组中,在 Service Group Members(服务组成员)下,单击 No Service Group Member(无服务组成员)。

    1. 单击 Service Based(基于服务)。
    2. 选择您之前定义的所有服务器。
    3. 要在负载平衡器与 StoreFront 服务器之间使用 SSL,请输入端口 443。否则,请输入端口 80。
  3. 添加 Monitors(监视器)部分并选择您之前创建的 StoreFront 监视器。

    显示器

  4. 添加 Certificates(证书)部分。

    1. 绑定客户端证书。
    2. 绑定用于为您之前导入的服务器证书进行签名的 CA 证书,以及可能属于 PKI 信任链的任何其他 CA。

    添加构建

  5. 添加 Settings(设置)部分。选择 Insert Client IP Header(插入客户端 IP 标头)并输入 X-Forwarded-For 的标头名称。这允许您在 Citrix Virtual Apps and Desktops 策略中使用客户端 IP 地址。

创建用于用户流量的负载平衡虚拟服务器

  1. 登录到 Citrix ADC 设备管理 GUI。

  2. 选择 Traffic Management(流量管理)> Load Balancing(负载平衡)> Virtual Servers(虚拟服务器)> Add(添加),创建一个新的虚拟服务器。

  3. 输入名称,选择 SSL 协议并输入。单击“确定”创建虚拟服务器。

  4. 将您之前创建的服务组绑定到负载平衡虚拟服务器。

  5. 绑定您之前绑定到服务组的同一服务器和 CA 证书。

  6. 添加 Method(方法)部分并选择负载平衡方法。StoreFront 负载平衡的常用选项为 round robin(轮询)或 least connection(最少连接)。

    Least connection(连接次数最少)

  7. 添加 Persistance(持久性)部分。

    1. 将持久性方法设置为 COOKIEINSERT

    2. 为该 Cookie 命名。例如,NSC_SFPersistence,这样可以在调试时使其在 Fiddler 跟踪中易于识别。

    3. 将备份持久性设置为 NONE(无)。

    注意:

    如果不允许客户端存储 HTTP cookie,则后续请求不会含有 HTTP cookie,并且不使用“Persistence”(持久性)。

Persistence(持久性)

配置 StoreFront 环回

当基本地址为负载平衡器时,对于 StoreFront 服务之间的内部通信,它可能会导致流量路由到负载平衡器,并且可能会路由到另一台服务器。这会导致出现性能不佳和意外行为。请使用 StoreFront 设置启用环回通信来避免这种情况。默认情况下,此设置设为,这意味着它会将服务地址的主机部分替换为环回 IP 地址 127.0.0.1,同时保持架构(HTTP 或 HTTPS)不变。此值适用于单服务器部署以及具有非 SSL 终止负载平衡器的部署。

如果负载平衡器终止 SSL 并通过 HTTP 与 StoreFront 通信,则必须将 StoreFront 环回通信配置为 OnUsingHttp,这意味着 StoreFront 还会将架构从 HTTPS 更改为 HTTP。

  1. 打开 Citrix StoreFront。
  2. 对于每个应用商店,请转到管理 Receiver for Web 站点。对于每个 Web 站点,请转到配置
  3. 转至高级设置
  4. 启用环回通信设置更改为 OnUsingHttp

启用环回通信的屏幕截图

配置 Citrix ADC 负载平衡器以实现服务器组之间的订阅同步

如果您的多站点部署由两个或多个 StoreFront 服务器组组成,则可以按重复计划使用提取策略在这些服务器组之间复制订阅数据。StoreFront 订阅复制使用 TCP 端口 808,因此,使用现有采用 HTTP 端口 80 或 HTTPS 443 的负载平衡虚拟服务器将失败。要为此服务提供高可用性,请在部署中的每个 Citrix ADC 设备上创建第二个虚拟服务器,以便为每个 StoreFront 服务器组负载平衡 TCP 端口 808。

配置用于订阅同步的服务组

  1. 登录到 Citrix ADC 设备管理 GUI。
  2. 选择 Traffic Management(流量管理)> Load Balancing(负载平衡)> Service Groups(服务组)> Add(添加)
  3. 输入服务组名称,将协议更改为 TCP,然后单击确定进行保存。
  4. 服务组成员部分中,添加您之前在“服务器”部分中定义的所有 StoreFront 服务器节点,并将端口指定为 808
  5. 添加监视器部分。
    1. 单击显示 No Service Group to Monitor Binding(无可监视绑定的服务组)的位置。
    2. 单击添加。输入监视器名称并将其类型设置为 TCP。单击创建
    3. 单击绑定

监视器 TCP

为实现订阅同步创建负载平衡虚拟服务器

  1. 登录到 Citrix ADC 设备管理 GUI。
  2. 选择 Traffic Management(流量管理)> Load Balancing(负载平衡)> Virtual Servers(虚拟服务器)> Add(添加),添加一个新的服务器。
  3. 输入名称
  4. 将协议更改为 TCP
  5. 输入 IP 地址。
  6. 输入端口 808

    负载平衡 808

  7. 单击确定
  8. 单击 No Load Balancing Virtual Server ServiceGroup Binding(无负载平衡虚拟服务器服务组绑定),选择您之前创建的服务组,然后单击 Bind(绑定)。
  9. 添加 Method(方法)部分并将 Load Balancing Method(负载平衡方法)设置为 ROUNDROBIN
  10. 单击完成以完成更改。

配置 StoreFront 以通过负载平衡器提取订阅数据

请参阅配置订阅同步

配置复制计划时,请指定与订阅同步虚拟服务器虚拟负载平衡器 IP 地址匹配的服务器组地址。

Citrix Gateway 与负载平衡虚拟服务器位于相同的 Citrix ADC 设备上

如果在同一个 Citrix ADC 设备上配置了 Citrix Gateway 虚拟服务器和负载平衡虚拟服务器,内部域用户尝试直接(而不是通过 Citrix Gateway 虚拟服务器)访问 StoreFront 负载平衡主机基本 URL 时可能会遇到问题。

在此情况下,由于 StoreFront 将传入用户的源 IP 地址与 Citrix Gateway 子网 IP 地址 (SNIP) 相关联,StoreFront 会假定最终用户已经在 Citrix Gateway 经过身份验证。这样会触发 StoreFront 尝试使用 AGBasic 协议执行 Citrix Gateway 无提示身份验证,而不是实际提示用户使用其域凭据进行登录。为避免出现此问题,请省略如下所示的 SNIP 地址或者输入 VIP,以便使用用户名和密码身份验证而非 AGBasic 登录协议。

在虚拟服务器 IP 地址字段中输入 Citrix Gateway VIP,请勿使用 SNIP 地址。

网关身份验证设置