Управление службой распределенного кэша в SharePoint Server

 

Применимо к:SharePoint Server 2013, SharePoint Server 2016

Последнее изменение раздела:2017-08-03

Сводка. Узнайте, как настроить службу распределенного кэша в SharePoint Server 2013 и SharePoint Server 2016 и управлять ею.

Для выполнения задач управления и эксплуатации службы распределенного кэша в SharePoint Server администратор должен выполнить определенную последовательность процедур. В этой статье описывается выполнение некоторых задач управления и эксплуатации службы распределенного кэша.

ВажноImportant:
Управление службой распределенного кэша, не соответствующее описанным в этой статье процедурам, может привести к нерабочему состоянию фермы или неустранимым ошибкам. В крайних случаях может потребоваться перестройка фермы серверов. AppFabric для Windows Server является необходимым компонентом для использования распределенного кэша. Не управляйте службой кэша AppFabric в окне Службы меню Администрирование в панели управления. Не используйте приложения из папки AppFabric для Windows Server в меню Пуск.
ВажноImportant:
Не используйте имена учетных записей служб, которые содержат символ "$".

Содержание

Администратор, выполняющий задачи обслуживания и эксплуатации, в некоторых случаях должен запускать и останавливать службу распределенного кэша. Некоторые из таких задач перечислены ниже.

  • Изменение конфигурации сервера фермы по умолчанию во время установки. Во время установки служба распределенного кэша запускается на всех серверах SharePoint. Администратору может понадобиться остановить службу распределенного кэша на некоторых серверах фермы.

  • Обновление сервера, когда в ферме SharePoint Server имеется только один сервер распределенного кэша.

Остановка службы кэша приводит к частичной потере данных. Кэш каналов зависит от службы распределенного кэша. Теги и действия с документами сохраняются только в кэше каналов. Теги и действия с документами не сохраняются в базах данных контента. При остановке службы распределенного кэша теги и действия с документами теряются. После запуска службы распределенного кэша задание таймера повторно заполняет кэш каналов. Один из способов сохранения тегов и действий с документами описан в разделе Безопасное отключение службы распределенного кэша далее в этой статье. При использовании этого способа все данные кэша перемещаются на другой сервер перед остановкой службы распределенного кэша.

ПримечаниеNote:
Если узлы размещения кэша являются частью кластера, не применяйте для запуска или остановки службы распределенного кэша процедуру, описанную ниже. Используйте процедуру, описанную в разделе Добавление или удаление сервера в кластере распределенного кэша далее в этой статье.

  1. В центре Центр администрирования щелкните Управление приложениями.

  2. В разделе Приложения-службы щелкните Управление службами на сервере.

  3. На странице Службы на сервере найдите службу Распределенный кэш.

  4. Если служба распределенного кэша запущена и ее нужно остановить, в разделе Действие выберите команду Остановить. Если служба распределенного кэша остановлена и ее нужно запустить, в разделе Действие выберите команду Запустить.

В командной строке Командная консоль SharePoint выполните следующую команду.

$instanceName ="SPDistributedCacheService Name=AppFabricCachingService"
$serviceInstance = Get-SPServiceInstance | ? {($_.service.tostring()) -eq $instanceName -and ($_.server.name) -eq $env:computername}
$serviceInstance.Provision()

В командной строке Командная консоль SharePoint выполните следующую команду.

$instanceName ="SPDistributedCacheService Name=AppFabricCachingService"
$serviceInstance = Get-SPServiceInstance | ? {($_.service.tostring()) -eq $instanceName -and ($_.server.name) -eq $env:computername}
$serviceInstance.Unprovision()

При установке SharePoint Server выделяет службе распределенного кэша 10 % физической памяти сервера. Служба распределенного кэша использует половину выделенной памяти для хранения данных (этот объем памяти называется размером кэша), а вторую половину — для операций управления памятью. При увеличении размера кэшированных данных служба распределенного кэша использует все 10 % выделенной памяти.

Вам следует увеличить объем памяти, выделяемой для службы распределенного кэша, в следующих ситуациях:

  • При добавлении физической памяти на сервер. Служба распределенного кэша не выполняет автоматический пересчет выделенных 10 % памяти, поэтому в случае увеличения общего объема физической памяти на сервере вам необходимо вручную увеличить объем памяти, выделяемой службе распределенного кэша.

  • При наличии выделенного сервера распределенного кэша в ферме серверов. Для расчета объема памяти, который можно выделить службе распределенного кэша, используйте следующий метод.

    1. Определите общий объем физической памяти на сервере. В данном примере в качестве объема физической памяти сервера будет использоваться значение 16 ГБ.

    2. Зарезервируем 2 ГБ памяти для других процессов и служб, выполняемых на узле размещения кэша. Например, 16 ГБ – 2 ГБ = 14 ГБ. Эта оставшаяся память выделяется для службы распределенного кэша.

    3. Возьмем половину оставшейся памяти и преобразуем это значение в мегабайты. Например, 14 ГБ/2 = 7 ГБ или 7168 МБ. Это размер кэша службы распределенного кэша.

    4. Используйте следующую процедуру для изменения объема выделенной памяти.

Используйте эту процедуру для изменения объема памяти для кэша, выделенной службе распределенного кэша.

  1. (Необязательно) Чтобы проверить текущее выделение памяти для службы или сервера распределенного кэша, выполните в командной строке Командная консоль SharePoint следующую команду:

    Use-CacheCluster
    Get-AFCacheHostConfiguration -ComputerName ComputerName -CachePort "22233"
    
    

    Где:

    • ComputerName — это имя компьютера сервера, на котором выполняется командлет Командная консоль SharePoint.

  2. Остановите службу распределенного кэша на всех узлах размещения кэша. Чтобы остановить эту службу, перейдите в раздел Службы на сервере центра администрирования и выберите параметр Остановить для службы распределенного кэша на всех узлах размещения кэша в ферме.

  3. Чтобы изменить размер кэша для службы распределенного кэша, выполните в командной строке Командная консоль SharePoint следующую команду по одному разу на каждом узле размещения кэша:

    Update-SPDistributedCacheSize -CacheSizeInMB CacheSize
    

    Где:

    • CacheSize — это размер кэша в выделенной памяти в мегабайтах. В предыдущем примере для сервера с общим объемом памяти 16 ГБ было вычислено значение размера кэша 7168 МБ.

  4. Перезапустите службу распределенного кэша на всех узлах размещения кэша. Чтобы перезапустить эту службу, перейдите в раздел Службы на сервере центра администрирования и выберите параметр Запустить для службы распределенного кэша на всех узлах размещения кэша в ферме.

Администратор может добавить или удалить сервер из кластера кэша. Эти действия могут потребоваться для выполнения задач обслуживания или эксплуатации сервера и последующего возврата сервера в кластер кэша. При удалении сервера служба распределенного кэша останавливается и ее регистрация на сервере отменяется. Отмена регистрации службы распределенного кэша означает, что администратор не увидит ее в списке служб на странице Службы на сервере в центре Центр администрирования. При добавлении сервера служба распределенного кэша регистрируется и запускается на сервере. Регистрация службы распределенного кэша означает, что администратор будет видеть ее в списке служб на странице Службы на сервере в центре Центр администрирования.

Используйте следующие процедуры для добавления и удаления сервера из кластера кэша. Эти командлеты Командная консоль SharePoint выполняются на сервере, который добавляется или удаляется.

ПримечаниеNote:
Перед выполнением описанных ниже процедур убедитесь, что брандмауэр беспрепятственно пропускает входящий трафик ICMP (ICMPv4). Дополнительные сведения см. статье Рекомендации по конфигурации брандмауэра.

В командной строке Командная консоль SharePoint выполните следующую команду.

Add-SPDistributedCacheServiceInstance

В командной строке Командная консоль SharePoint выполните следующую команду.

Remove-SPDistributedCacheServiceInstance

ВажноImportant:
Эта процедура остановит службу кэша, и несохраненные кэшированные данные будут утеряны. Если необходимо сохранить кэшированные данные, используйте процедуру безопасного отключения, описанную в следующем разделе.

В ферме SharePoint Server 2016 кластер кэша состоит из одного или нескольких узлов кэша, на которых выполняется служба распределенного кэша. В ферме SharePoint Server 2016 существует один кэш, размещенный на узлах кластера кэша. Администратору может понадобиться переместить кэшированное содержимое на другой узел размещения кэша перед тем, как применять обновления к серверу. Чтобы предотвратить потерю данных, связанную с перемещением кэшированного содержимого, сначала выполните нормальное завершение работы сервера с помощью сценария PowerShell, указанного в приведенной ниже процедуре. Процедура нормального завершения работы переносит все кэшированные данные из узла кэша, на котором она выполняется, на другой узел кэша в ферме. Процесс переноса занимает 15 минут или больше в зависимости от количества элементов в кэше.

Используйте следующий скрипт PowerShell, чтобы корректно завершить работу сервера распределенного кэша и переместить кэшированное содержимое в другой узел кэша. Убедитесь, что указан правильный узел, работу которого требуется завершить, и измените скрипт, задав правильные параметры для вашей организации.

ПримечаниеNote:
При использовании скрипта PowerShell в описанной ниже процедуре корректного завершения работы нет необходимости удалять узел кэша из кластера кэша.
  1. Убедитесь, что выполняются следующие минимальные требования.

  2. Скопируйте следующие объявления переменных и вставьте их в текстовый редактор, например "Блокнот". Задайте значения параметры для вашей организации. Сохраните файл и присвойте ему имя GracefulShutdown.ps1.

    ПримечаниеNote:
    В качестве имени файла можно указать любое другое имя, однако файл должен быть сохранен в виде текстового файла в формате ANSI с расширением PS1.
    ## Settings you may want to change for your scenario ##
    $startTime = Get-Date
    $currentTime = $startTime
    $elapsedTime = $currentTime - $startTime
    $timeOut = 900
    
    try
    {
        Write-Host "Shutting down distributed cache host."
     $hostInfo = Stop-CacheHost -Graceful -CachePort 22233 -ComputerName sp2016App.contoso.com
    
     while($elapsedTime.TotalSeconds -le $timeOut-and $hostInfo.Status -ne 'Down')
     {
         Write-Host "Host Status : [$($hostInfo.Status)]"
         Start-Sleep(5)
         $currentTime = Get-Date
         $elapsedTime = $currentTime - $startTime
         $hostInfo = Get-CacheHost -HostName SP2016app.contoso.com -CachePort 22233
     }
    
     Write-Host "Stopping distributed cache host was successful. Updating Service status in SharePoint."
     Stop-SPDistributedCacheServiceInstance
     Write-Host "To start service, please use Central Administration site."
    }
    catch [System.Exception]
    {
     Write-Host "Unable to stop cache host within 15 minutes." 
    }
    

    Где sp2016App.contoso.com — это доменное имя используемого сервера распределенного кэша.

  3. Откройте командную консоль SharePoint.

  4. Перейдите в каталог, в который вы сохранили файл.

  5. В командной строке PowerShell введите следующую команду.

    ./GracefulShutdown.ps1
    

    Дополнительные сведения о скриптах PowerShell и PS1-файлах см. в статье Выполнение скриптов Windows PowerShell.

При первой настройке фермы серверов в качестве учетной записи службы кэша AppFabric определяется учетная запись фермы. Служба распределенного кэша зависит от службы кэша AppFabric. Для замены учетной записи службы кэша AppFabric на управляемую учетную запись выполните следующие действия.

  1. Создайте управляемую учетную запись.

  2. Настройте управляемую учетную запись в качестве учетной записи службы кэша AppFabric. В командной строке Командная консоль SharePoint выполните следующую команду.

    $farm = Get-SPFarm
    $cacheService = $farm.Services | where {$_.Name -eq "AppFabricCachingService"}
    $accnt = Get-SPManagedAccount -Identity domain_name\user_name
    $cacheService.ProcessIdentity.CurrentIdentityType = "SpecificUser"
    $cacheService.ProcessIdentity.ManagedAccount = $accnt
    $cacheService.ProcessIdentity.Update() 
    $cacheService.ProcessIdentity.Deploy()
    

    Где Domain_name\user_name — доменное имя и имя пользователя управляемой учетной записи.

Параметр службы распределенного кэша MaxConnectionsToServer часто настраивается на основе числа процессоров, используемых в главном компьютере. Если, например, вы используете нескольких ядер, а затем задаете для параметра MaxConnectionsToServer такое же число процессоров, то компьютер часто использует слишком много памяти и перестает работать. Подобные проблемы случаются при настройке параметров DistributedLogonTokenCache и DistributedViewStateCache. Значение по умолчанию — 20 мс, но часто обнаруживаются исключения, если кэширование маркеров не происходит при таком значении. Используйте следующий сценарий PowerShell, чтобы изменить параметры времени ожидания и максимального числа подключений.

Настройка службы распределенного кэша с помощью скрипта PowerShell

  1. Убедитесь, что выполняются следующие минимальные требования.

  2. Скопируйте следующие объявления переменных и вставьте их в текстовый редактор, например "Блокнот". Задайте значения параметры для вашей организации. Сохраните файл и присвойте ему имя MaxConnections.ps1.

    ПримечаниеNote:
    В качестве имени файла можно указать любое другое имя, однако файл должен быть сохранен в виде текстового файла в формате ANSI с расширением PS1.
    Add-PSSnapin Microsoft.Sharepoint.Powershell
    
    #DistributedLogonTokenCache
    $DLTC = Get-SPDistributedCacheClientSetting -ContainerType DistributedLogonTokenCache
    $DLTC.MaxConnectionsToServer = 1
    $DLTC.requestTimeout = "3000"
    $DLTC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedLogonTokenCache $DLTC
    
    #DistributedViewStateCache
    $DVSC = Get-SPDistributedCacheClientSetting -ContainerType DistributedViewStateCache
    $DVSC.MaxConnectionsToServer = 1
    $DVSC.requestTimeout = "3000"
    $DVSC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedViewStateCache $DVSC
    
    #DistributedAccessCache
    $DAC = Get-SPDistributedCacheClientSetting -ContainerType DistributedAccessCache
    $DAC.MaxConnectionsToServer = 1
    $DAC.requestTimeout = "3000"
    $DAC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedAccessCache $DAC
    
    #DistributedActivityFeedCache
    $DAF = Get-SPDistributedCacheClientSetting -ContainerType DistributedActivityFeedCache
    $DAF.MaxConnectionsToServer = 1
    $DAF.requestTimeout = "3000"
    $DAF.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedActivityFeedCache $DAF
    
    #DistributedActivityFeedLMTCache
    $DAFC = Get-SPDistributedCacheClientSetting -ContainerType DistributedActivityFeedLMTCache
    $DAFC.MaxConnectionsToServer = 1
    $DAFC.requestTimeout = "3000"
    $DAFC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedActivityFeedLMTCache $DAFC
    
    #DistributedBouncerCache
    $DBC = Get-SPDistributedCacheClientSetting -ContainerType DistributedBouncerCache
    $DBC.MaxConnectionsToServer = 1
    $DBC.requestTimeout = "3000"
    $DBC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedBouncerCache $DBC
    
    #DistributedDefaultCache
    $DDC = Get-SPDistributedCacheClientSetting -ContainerType DistributedDefaultCache
    $DDC.MaxConnectionsToServer = 1
    $DDC.requestTimeout = "3000"
    $DDC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedDefaultCache $DDC
    
    #DistributedSearchCache
    $DSC = Get-SPDistributedCacheClientSetting -ContainerType DistributedSearchCache
    $DSC.MaxConnectionsToServer = 1
    $DSC.requestTimeout = "3000"
    $DSC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedSearchCache $DSC
    
    #DistributedSecurityTrimmingCache
    $DTC = Get-SPDistributedCacheClientSetting -ContainerType DistributedSecurityTrimmingCache
    $DTC.MaxConnectionsToServer = 1
    $DTC.requestTimeout = "3000"
    $DTC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedSecurityTrimmingCache $DTC
    
    #DistributedServerToAppServerAccessTokenCache
    $DSTAC = Get-SPDistributedCacheClientSetting -ContainerType DistributedServerToAppServerAccessTokenCache
    $DSTAC.MaxConnectionsToServer = 1
    $DSTAC.requestTimeout = "3000"
    $DSTAC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedServerToAppServerAccessTokenCache $DSTAC
    
    #DistributedFileLockThrottlerCache
    $DFLTC = Get-SPDistributedCacheClientSetting -ContainerType DistributedFileLockThrottlerCache
    $DFLTC.MaxConnectionsToServer = 1
    $DFLTC.requestTimeout = "3000"
    $DFLTC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedFileLockThrottlerCache $DFLTC
     
    #DistributedSharedWithUserCache
    $DSWUC = Get-SPDistributedCacheClientSetting -ContainerType DistributedSharedWithUserCache
    $DSWUC.MaxConnectionsToServer = 1
    $DSWUC.requestTimeout = "3000"
    $DSWUC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedSharedWithUserCache $DSWUC
     
    #DistributedUnifiedGroupsCache
    $DUGC = Get-SPDistributedCacheClientSetting -ContainerType DistributedUnifiedGroupsCache
    $DUGC.MaxConnectionsToServer = 1
    $DUGC.requestTimeout = "3000"
    $DUGC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedUnifiedGroupsCache $DUGC 
    
    #DistributedResourceTallyCache
    $DRTC = Get-SPDistributedCacheClientSetting -ContainerType DistributedResourceTallyCache
    $DRTC.MaxConnectionsToServer = 1
    $DRTC.requestTimeout = "3000"
    $DRTC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedResourceTallyCache $DRTC
     
    #DistributedHealthScoreCache
    $DHSC = Get-SPDistributedCacheClientSetting -ContainerType DistributedHealthScoreCache
    $DHSC.MaxConnectionsToServer = 1
    $DHSC.requestTimeout = "3000"
    $DHSC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedHealthScoreCache $DHSC 
    
    
    
  3. Откройте командную консоль SharePoint.

  4. Перейдите в каталог, в который вы сохранили файл.

  5. В командной строке PowerShell введите следующую команду.

    ./MaxConnections.ps1
    

    Дополнительные сведения см. в статьях Рекомендации по использованию кэша Windows Azure или кэша Windows Server AppFabric и Параметры конфигурации приложения (кэширование в Windows Server AppFabric). Дополнительные сведения о сценариях Windows PowerShell и PS1-файлах см. в статье Запуск сценариев Windows PowerShell.

Во время проведения работ по установке, настройке или обслуживанию служба распределенного кэша может перейти в нерабочее состояние. Сведения о неработоспособности службы отображаются в разделе правил работоспособности в центре Центр администрирования либо при использовании пользователем компонентов SharePoint Server, работа которых основана на распределенном кэше. Например, появляются ошибки в канале новостей на личном сайтеЛичный сайт пользователя. Кроме того, администраторы могут получить сообщение об ошибке "cacheHostInfo равен null " в случае запуска командлетов Командная консоль SharePoint для управления службой распределенного кэша.

Восстановление узла кэша состоит из двух шагов.

Выполните указанные ниже действия на неработающем узле распределенного кэша, чтобы восстановить его.

  1. В командной строке Командная консоль SharePoint запустите командлет Remove-SPDistributedCacheServiceInstance.

  2. В командной строке Командная консоль SharePoint запустите командлет Add-SPDistributedCacheServiceInstance.

    ПримечаниеNote:
    Если командлет не запускается, выполните указанные ниже действия, чтобы удалить службу распределенного кэша вручную.
    • В командной строке Командная консоль SharePoint введите указанную ниже команду.

      $instanceName ="SPDistributedCacheService Name=AppFabricCachingService"
      
      $serviceInstance = Get-SPServiceInstance | ? {($_.service.tostring()) -eq $instanceName -and ($_.server.name) -eq $env:computername}
      
      If($seriveInstance -ne $null)
      {
      $serviceInstance.Delete()
      }
      
      
    • После удаления службы распределенного кэша вручную повторите шаг 2.

Показ: