负载平衡

Session Recording 支持跨 Session Recording Server 的负载平衡。要使用此功能,请在 Citrix ADC 上配置负载平衡,以使 Session Recording Server 可以实现负载平衡和自动故障转移。

实现了一项增强功能,即,可以在所有 Session Recording Server 之间同步某些负载平衡配置。

注意:

此功能要求使用版本 7.16 或更高版本的 Session Recording Server 和 Session Recording Agent。

为了支持负载平衡对 Session Recording 所做的更改:

  • 所有 Session Recording Server 共享一个文件夹来存储录制文件。
  • 所有 Session Recording Server 共享一个 Session Recording 数据库。
  • (建议)请仅安装一个 Session Recording 策略控制台,并且所有 Session Recording Server 都共享此控制台。

配置负载平衡

要使用此功能,请在 Citrix ADC 和各种 Session Recording 组件上执行以下步骤:

配置负载平衡(Citrix ADC 部分)

配置负载平衡服务器

将 Session Recording Server 添加到 Citrix ADC 中的负载平衡服务器。

配置负载平衡服务

  1. 在每台 Session Recording Server 上,为每个所需协议添加负载平衡服务。
  2. (建议)选择相关的协议监视器来绑定每台服务监视器。

配置负载平衡虚拟服务器

  1. 根据所需协议创建具有相同 Citrix ADC VIP 地址的虚拟服务器,并将虚拟服务器绑定到相关负载平衡服务。
  2. 对每台虚拟服务器配置持久性。
  3. (建议)选择 LEASTBANDWITH 或 LEASTPACKETS 作为负载平衡方法,而不是选择默认方法 (LEASTCONNECTION)。
  4. 创建一个证书以使 HTTPS 虚拟服务器启动。

配置负载平衡(Session Recording 部分)

在安装了 Session Recording Server 的每台服务器上,执行以下操作

  1. (建议)请在 Session Recording Server 安装过程中键入相同的 Session Recording 数据库名称。
  2. 如果选择“管理员日志记录”功能,Citrix 建议您键入与安装每个 Session Recording Server 时相同的管理员日志记录数据库名称。
  3. 与所有 Session Recording Server 计算机帐户共享了文件存储文件夹的读/写权限后,在 Session Recording Server 属性中改为将文件存储文件夹用作共享文件夹。有关详细信息,请参阅指定录制件的还原位置
  4. 在 Session Recording Server 注册表 (HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\SmartAuditor\Server) 中添加一个值。
    值名称:EnableLB
    值数据:1(D_WORD,表示启用)
  5. 如果为 Session Recording Storage Manager 消息队列选择 HTTP 或 HTTPS 协议,请为 Citrix ADC VIP 地址创建一条主机记录,并在 C:\Windows\System32\msmq\Mapping\sample_map 中添加重定向,然后重新启动消息队列服务。

    重定向如下所示:

    <redirections xmlns="msmq-queue-redirections.xml">
            <redirection>
                        <from>http://<ADCHost>\*/msmq/private$/CitrixSmAudData</from>
                        <to>http://<LocalFqdn>/msmq/private$/CitrixSmAudData</to>
            </redirection>
            <redirection>
                        <from>https://<ADCHost>\*/msmq/private$/CitrixSmAudData</from>
                        <to>https://<LocalFqdn>/msmq/private$/CitrixSmAudData</to>
            </redirection>
    </redirections>
    <!--NeedCopy-->
    

    其中,<ADCHost> 是创建的 Citrix ADC VIP 地址的 FQDN,<LocalFqdn> 是本地主机的 FQDN。

  6. (建议)配置一个 Session Recording Server 注册表后,可以使用以下脚本从此服务器注册表中导出配置,并将该注册表导入到其他 Session Recording Server 注册表中。还可以使用此脚本为消息队列添加重定向映射。

    # Copyright (c) Citrix Systems, Inc.  All rights reserved.
    <#
           .SYNOPSIS
    
           This script is used to sync configurations between Session Recording Servers for load balancing deployment.
    
           .DESCRIPTION
    
        Will do below kinds of actions:
    
        1. Export values from the registry key: HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\SmartAuditor\Server to SrServerConfig.reg;
    
        2. Import from SrServerConfig.reg and overwrite values in registry key: HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\SmartAuditor\Server;
    
        3. Add redirection mapping sr_lb_map.xml in %windir%\System32\msmq\mapping;
    
           3.1 sr_lb_map.xml will consist redirection rule for both http and https, and not port specific.
    
           .PARAMETER Action
    
           Export - to export the registry configurations of Session Recording Server to a registry file
    
           Import - to import the registry configurations of Session Recording Server from a registry file
    
           AddRedirection - to add HTTP/HTTPS redirection for MSMQ
    
           .PARAMETER ADCHost
    
           The host name or FQDN of Citrix ADC.
    
        .OUTPUTS
    
        Exported configuration file (SrServerConfig.reg) or backup configuration file (SrServerConfig.reg.bk)
    
           .EXAMPLE
    
           SrServerConfigurationSync.ps1 -Action Export
    
           .EXAMPLE
    
           SrServerConfigurationSync.ps1 -Action Import
    
           .EXAMPLE
    
        SrServerConfigurationSync.ps1 -Action AddRedirection -ADCHost netscaler.xd.local
    
           .EXAMPLE
    
        SrServerConfigurationSync.ps1 -Action Import,AddRedirection -ADCHost netscaler.xd.local
    
           .EXAMPLE
    
        SrServerConfigurationSync.ps1 -Action Import,Export,AddRedirection -ADCHost netscaler.xd.local
    
    #>
    
    ######################
    
    # Parameters section #
    
    ######################
    
    Param(
    
           [Parameter(Mandatory = $true)]
    
           [ValidateSet("Export", "Import", "AddRedirection")]
    
           [string[]] $Action,
    
           [Parameter(Mandatory = $false)]
    
           [string] $ADCHost
    
    )
    
    #############################
    
    # Default variables section #
    
    #############################
    
    $SR_SERVER_REG_PATH   = "HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\SmartAuditor\Server"
    
    $REG_FILE_PATH        = "SrServerConfig.reg"
    
    $REG_BACKUP_FILE_PATH = "SrServerConfig.reg.bk"
    
    $TEMP_REDIRECT_XML    = "sr_lb_map.xml"
    
    $REDIRECT_XML_PATH    = "$env:windir\System32\msmq\mapping"
    
    ############# MAIN ###############
    
    Try
    
    {
    
           If ($Action -Contains "export") {
    
                  Write-Host "Exporting current Session Recording Server Configuration to registry file: $REG_FILE_PATH ..." -ForegroundColor Green
    
                  & REG EXPORT $SR_SERVER_REG_PATH $REG_FILE_PATH /Y
    
                  Write-Host "Finish exporting." -ForegroundColor Green
    
           }
    
           If ($Action -Contains "import")
    
           {
    
                  If (!(Test-Path $REG_FILE_PATH))
    
                  {
    
                         Write-Host "No $REG_FILE_PATH founded. Aborted." -ForegroundColor Yellow
    
                         Exit 0
    
                  }
    
                  # Back up previous registry key
    
                  Write-Host "Backing up Session Recording Server Configuration to Registry file: $REG_BACKUP_FILE_PATH ..." -ForegroundColor Green
    
                  & REG EXPORT $SR_SERVER_REG_PATH $REG_BACKUP_FILE_PATH /Y
    
                  Write-Host "Importing Session Recording Server Configuration from Registry file: $REG_FILE_PATH ..." -ForegroundColor Green
    
                  & REG IMPORT $REG_FILE_PATH 2>$null
    
                  Write-Host "Finish importing." -ForegroundColor Green
    
           }
    
           If ($Action -Contains "addredirection")
    
           {
    
                  # Check if Citrix ADC host is given; If not, exit normally with warning.
    
                  If(([String]::IsNullOrEmpty($ADCHost)))
    
                  {
    
                         Write-Host "No Citrix ADC host name is specified. Finish adding redirection." -ForegroundColor Yellow
    
                         Exit 0
    
                  }
    
                  If (!(Test-Path $TEMP_REDIRECT_XML))
    
                  {
    
                         New-Item $TEMP_REDIRECT_XML -Type file
    
                  }
    
                  $SysInfo = Get-WmiObject -Class Win32_ComputerSystem
    
                  $LocalFqdn = "$($SysInfo.Name).$($SysInfo.Domain)"
    
                  $RedirectXmlContent =
    
    @"
    
    <redirections xmlns="msmq-queue-redirections.xml">
    
           <redirection>
    
                  <from>http://$ADCHost*/msmq/private$/CitrixSmAudData</from>
    
                  <to>http://$LocalFqdn/msmq/private$/CitrixSmAudData</to>
    
           </redirection>
    
           <redirection>
    
                  <from>https://$ADCHost*/msmq/private$/CitrixSmAudData</from>
    
                  <to>https://$LocalFqdn/msmq/private$/CitrixSmAudData</to>
    
           </redirection>
    
    </redirections>
    
    "@
    
                  # Don't take care of encoding
    
                  $RedirectXmlContent | Out-File -FilePath $TEMP_REDIRECT_XML
    
                  Write-Host "Copying $TEMP_REDIRECT_XML to $REDIRECT_XML_PATH ..." -ForegroundColor Green
    
                  Copy-Item $TEMP_REDIRECT_XML -Destination $REDIRECT_XML_PATH
    
                  Write-Host "Restarting MSMQ service ..." -ForegroundColor Green
    
                  Restart-Service msmq -Force
    
                  Write-Host "Finish adding HTTP/HTTPS Redirection for MSMQ." -ForegroundColor Green
    
           }
    
           Exit 0
    
    }
    
    Catch
    
    {
    
           Write-Host "$_.Exception.Message" -ForegroundColor Red
    
           Exit 1
    
    }
    
    Finally
    
    {
    
           # Nothing to do
    
    }
    
    <!--NeedCopy-->
    

6a. 将前面的示例代码保存为 PowerShell 脚本,例如 SrServerConfigurationSync.ps1。

6b. 在一个 Session Recording Server 上配置 EnableLB 注册表值后,以管理员身份启动一个命令提示窗口并运行 powershell.exe -file SrServerConfigurationSync.ps1 –Action Export,AddRedirection –ADCHost <ADCHost> 命令,其中 <ADCHost> 为创建的 Citrix ADC VIP 地址的 FQDN。

6c. 运行脚本后,将生成一个导出的名为 SrServerConfig.reg 的注册表文件并将 sr_lb_map.xml 文件添加到 C:\Windows\System32\msmq\Mapping 路径。

6d. 在另一个 Session Recording Server 上,复制前面的步骤中生成的 SrServerConfig.reg,以管理员身份启动命令提示窗口并运行 powershell.exe -file SrServerConfigurationSync.ps1 –Action Import,AddRedirection –ADCHost <ADCHost> 命令,其中 <ADCHost> 为创建的 Citrix ADC VIP 地址的 FQDN。

6e. 运行脚本后,EnableLB 值将添加到另一个 Session Recording Server 注册表项中,sr_lb_map.xml 文件将添加到 C:\Windows\System32\msmq\Mapping 路径中。

在安装了 Session Recording Agent 的计算机上,在 Session Recording Agent 属性中执行以下操作

  • 如果您为 Session Recording Storage Manager 消息队列选择 HTTP 或 HTTPS 协议,请在 Session Recording Server 文本框中键入 Citrix ADC VIP 地址的 FQDN。
  • 如果您为 Session Recording Storage Manager 消息队列选择默认的 TCP 协议,请在 Session Recording Server 文本框中键入 Citrix ADC VIP 地址。

在安装了 Session Recording Player 的计算机上,执行以下操作

添加 Citrix ADC VIP 地址或其 FQDN 作为连接的 Session Recording Server。

在安装了 Session Recording 数据库的 SQL Server 上,执行以下操作

将所有 Session Recording Server 计算机帐户添加到共享 Session Recording 数据库并为其分配 db_owner 权限。

负载平衡