Session Recording

負荷分散

Session Recordingは、Session Recordingサーバー間の負荷分散をサポートします。この機能を使用するには、Session Recordingサーバーで負荷分散や自動フェイルオーバーを行えるように、Citrix ADCに負荷分散を構成します。

複数の負荷分散構成をすべてのSession Recordingサーバー間で同期させることができるようになりました。

注:

この機能の使用には、Session RecordingサーバーおよびSession Recording Agentのバージョン7.16以降が必要です。

負荷分散をサポートする場合のSession Recordingの変更内容:

  • すべてのSession Recordingサーバーが、録画ファイルを保存する1つのフォルダーを共有します。
  • すべてのSession Recordingサーバーが、1つのSession Recordingデータベースを共有します。
  • (推奨)Session Recordingポリシーコンソールを1つだけインストールし、すべてのSession Recordingサーバーがこのコンソールを共有するようにしてください。

負荷分散の構成

この機能を使用するには、Citrix ADCとさまざまなSession Recordingコンポーネントで以下の手順を行います:

負荷分散の構成(Citrix ADC側)

負荷分散サーバーの構成

Citrix ADC内の負荷分散サーバーにSession Recordingサーバーを追加します。

負荷分散サービスの構成

  1. それぞれのSession Recordingサーバーで必要な各プロトコルに負荷分散サービスを追加します。
  2. (推奨)各サービスモニターにバインドする、関連するプロトコルモニターを選択します。

負荷分散仮想サーバーの構成

  1. 必要なプロトコルに基づいて、同じCitrix ADC仮想IPアドレスを持つ仮想サーバーを作成し、それらの仮想サーバーを関連する負荷分散サービスにバインドします。
  2. 各仮想サーバーでパーシステンスを構成します。
  3. (推奨)負荷分散の方法には、デフォルトの方法(LEASTCONNECTION)ではなく、LEASTBANDWITHまたはLEASTPACKETSを選択します。
  4. HTTPS仮想サーバーを稼働させるための証明書を作成します。

負荷分散の構成(Session Recording側)

Session Recordingサーバーがインストールされた各サーバーで、以下を実行します

  1. (推奨)Session Recordingサーバーのインストール時に、同じSession Recordingデータベース名を入力します。
  2. 管理者ログ機能を選択した場合、Citrixでは各Session Recordingサーバーのインストール時に指定した管理者ログデータベース名と同じ名前を入力することをお勧めします。
  3. ファイルストレージフォルダーの読み取り/書き込み権限をすべてのSession Recordingサーバーマシンアカウントと共有した後、Session Recordingサーバープロパティでこのファイルストレージフォルダーを共有フォルダーとして使用するように変更します。詳しくは、「録画の復元先の指定」を参照してください。
  4. Session Recordingサーバーレジストリキー(HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\SmartAuditor\Server)に、次の値を追加します。
    値の名前:EnableLB
    値のデータ:1(DWORD、つまり「有効」)
  5. Session RecordingストレージマネージャーのメッセージキューにHTTPまたはHTTPSプロトコルを選択した場合、Citrix ADC仮想IPアドレスのホストレコードを作成し、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仮想IPアドレスのFQDNで、<LocalFqdn> はローカルホストのFQDNです。

  6. (推奨)1つのSession Recordingサーバーレジストリを構成後、次のスクリプトでこのサーバーレジストリから構成をエクスポートして、他のSession Recordingサーバーレジストリにインポートできます。このスクリプトを使用して、メッセージキューのリダイレクトマッピングを追加することもできます。

    # 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. 1つのSession Recordingサーバーで、EnableLB レジストリ値を構成後、管理者としてコマンドプロンプトを起動し、powershell.exe -file SrServerConfigurationSync.ps1 –Action Export,AddRedirection –ADCHost <ADCHost> コマンドを実行します。ここで、<ADCHost> は、作成したCitrix ADC仮想IPアドレスのFQDNです。

6c. スクリプトの実行後、SrServerConfig.regというファイル名のエクスポート済みレジストリが生成され、sr_lb_map.xml がC:\Windows\System32\msmq\Mappingパスに追加されます。

6d. その他のSession Recordingサーバーで、上の手順で生成されたSrServerConfig.regをコピーし、管理者としてコマンドプロンプトを起動し、powershell.exe -file SrServerConfigurationSync.ps1 –Action Import,AddRedirection –ADCHost <ADCHost> コマンドを実行します。ここで、<ADCHost> は、作成したCitrix ADC仮想IPアドレスのFQDNです。

6e. スクリプトの実行後、EnableLB 値が他のSession Recordingサーバーレジストリキーに追加され、sr_lb_map.xml がC:\Windows\System32\msmq\Mappingパスに追加されます。

Session Recording AgentがインストールされたマシンのSession Recording Agentプロパティで以下を行います

  • Session RecordingストレージマネージャーメッセージのキューにHTTPまたはHTTPSを選択した場合、[Session Recordingサーバー] テキストボックスにはCitrix ADC仮想IPアドレスのFQDNを入力します。
  • Session RecordingストレージマネージャーメッセージのキューにデフォルトのTCPプロトコルを選択した場合、[Session Recordingサーバー] テキストボックスにはCitrix ADC仮想IPアドレスを入力します。

Session Recording Playerがインストールされたマシンで以下を行います

Citrix ADC仮想IPアドレスまたはそのFQDNを、接続されたSession Recordingサーバーとして追加します。

Session RecordingデータベースがインストールされたSQL Serverで以下を行います

共有Session RecordingデータベースにすべてのSession Recordingサーバーマシンアカウントを追加し、それらにdb_owner権限を割り当てます。

負荷分散

この記事の概要