Verteilter Cachedienst – Konto ändern

Verwaltetes Konto für den Dienst „Verteilter Cachedienst“ ändern

Versucht man die Kontoumschaltung für den verteilten Cachedienst (Distributed Cache, AppFabricCachingService) in der ZA-GUI durchzuführen, wird folgende Fehlermeldung angezeigt:

Der verteilte Cachedienst unterstützt diese Aktion aus der Zentraladministration nicht. Verwenden Sie SharePoint PowerShell-Cmdlets.

Achtung:
Verwalten Sie den AppFabric-Cachedienst nicht über Systemsteuerung, Verwaltung, Dienste. Verwenden Sie nicht die Anwendungen im Ordner AppFabric für Windows Server im Startmenü.

Lösung für Single-Server-Farm [1]

Achtung:
In einer Multi-Server-Farm auf keinen Fall folgende Schritte ausführen und auf keinen Fall die Lösung von Microsoft (Link Nr.1 unter Quellen) anwenden, da man damit evtl. die unten stehende  Fehlermeldung bekommt und den Cluster zerstört.
  1. Falls noch kein verwaltetes Dienstkonto existiert, welches wir für den Cachedienst verwenden könnten (das Farm-Konto wollen wir ja vermeiden), dann muss unter ZA > Sicherheit > Verwaltete Konten konfigurieren ein verwaltetes Konto für diesen Dienst erstellt werden.
  2. In einer SharePoint-Verwaltungsshell folgenden Code-Block ausführen, um das Dienstkonto zu ändern. Dabei muss „Domain_name\user_name“ angepasst werden.
# Ändert das Dienstkonto des Cachedienstes.
# Achtung: Nur für Single-Server-Farm verwenden!!!
# Durchführung auf eigene Gefahr!!!

# Anpassen: Domain_name\user_name ist der Domänen- und Benutzername des verwalteten Kontos

$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()

Fehler: „ErrorCode<PortAlreadyInUseError>:SubStatus<ES0001>“

Falls die oben beschriebenen Schritte in eine Multi-Server-Farm durchgeführt wurden, dann bekommt man evtl. folgende Fehlermeldung und zerstört damit den Cache-Cluster:

Ausnahme beim Aufrufen von „Deploy“ mit 0 Argument(en): „ErrorCode<PortAlreadyInUseError>:SubStatus<ES0001>:Der TCP-Port 22234 wird bereits verwendet.“

oder auf Englisch:

Exception calling “Deploy” with “0” arguments(s): “ErrorCode<PortAlreadyInUseError>:SubStatus<ES0001>:TCP port 22233 is already in use.”

Reparatur des Cache-Clusters

Vielleicht lässt sich das durch folgende Zeilen lösen (auf dem Server ausführen, auf dem die oben stehenden Skript-Zeilen ausgeführt wurden):

In unserem Fall musste ein Host (ein App-Server) aus dem Cluster mit den Zeilen 1-8 entfernt werden, da nur die WFEs für den verteilten Cache konfiguriert waren.

# Cache-Host reparieren
# ====================================
# Cluster-Konfiguration laden
Use-CacheCluster

Get-SPServiceInstance | Where-Object { $_.Service -like "*SPDistributedCacheService*" } | fl

# Für jeden zu reparierenden, aufgelisteten Server
$var = Get-SPServiceInstance GUID	# GUID anpassen
$var.delete()

# Eine Instanz des Distributed Cache wird zunächst heruntergefahren, wobei der Schalter "Graceful" dazu führt, dass Inhalte zunächst auf andere Knoten verschoben werden. Anschließend kann die Instanz entfernt werden
# Vorsicht, hiermit könnten die Verbindungsstrings verloren gehen (evtl. wenn man ohne -Graceful durchführt).
Stop-SPDistributedCacheServiceInstance -Graceful
Remove-SPDistributedCacheServiceInstance

Add-SPDistributedCacheServiceInstance

Lösung für Multi-Server-Farm [2]

Informationen

  • Momentan gesetztes Distributed Caching Service Konto
$SPFarm = Get-SPFarm
($SPFarm.Services | ? {$_.Name –eq "AppFabricCachingService"}).ProcessIdentity.Username
  • Momentan verwendete Distributed Cache Server
# Dienstinstanzen
Get-SPServiceInstance | ? {$_.TypeName –eq „Distributed Cache“} | select Server

# CacheHosts
Get-CacheHost
  • Cache-Cluster Konfiguration zur Sicherheit exportieren
# Cluster-Konfiguration laden
Use-CacheCluster

# Cluster-Konfiguration auf den Desktop exportieren
Export-CacheClusterConfig $home\desktop\$(Get-Date -Format 'yyyy-MM-dd_HH.mm.ss tt')_CacheClusterConfig.xml

Verwaltetes Konto

  • Das neue Verteilter-Cache-Dienst-Konto (Distributed Cache Service Account) als verwaltetes Konto (Managed Account) in der SharePoint eintragen (falls noch kein Account vorhanden).
$NewCacheAccountCred = Get-Credential <neues-DistCacheKonto> 
New-SPManagedAccount –Credential $NewCacheAccountCred

Konten zu lokalen Administratoren machen

  • Das neue Konto für den Cache-Dienst in die Gruppe der lokalen Administratoren auf allen Servern aufnehmen, auf denen der Cache-Dienst läuft (bei uns sind es nur die WFEs).
  • Das alte Konto für den Cache-Dienst in die Gruppe der lokalen Administratoren auf allen Servern aufnehmen, auf denen der Cache-Dienst läuft (bei uns sind es nur die WFEs).
  • Das Farm-Konto in die Gruppe der lokalen Administratoren auf allen Servern aufnehmen, auf denen der Cache-Dienst läuft (bei uns sind es nur die WFEs).

Um die Verwaltungskonsole zu öffnen entweder compmgmt.msc /s ausführen, oder nach Computerverwaltung suchen.

Cache-Dienst Instanzen entfernen

Auf allen Servern, die Cache-Dienst-Instanz entfernen, außer auf einem Server. In unserem Fall bleibt die Instanz auf dem ersten der beiden WFEs bestehen, auf dem zweiten WFE werden folgende Zeilen ausgeführt:

# Auf allen Servern außer einem ausführen.

# Cluster-Konfiguration laden
Use-CacheCluster

Stop-SPDistributedCacheServiceInstance -Graceful
Remove-SPDistributedCacheServiceInstance

Cache-Dienst anpassen

Auf dem Server, auf dem die letzte Cache-Dienst-Instanz geblieben ist (es darf nur noch eine sein) folgendes ausführen (einzelne Zeilen einfügen, nicht alles auf einmal):

# PowerShell CMD-Lets laden
Add-PSSnapIn Microsoft.SharePoint.Powershell –ErrorAction SilentlyContinue 

# Neue Benutzerkennung für den Cache-Dienst abfragen
# Einzeln einfügen!
$NewCacheAccount = Read-Host "Bitte neuen Account für den Cache-Dienst eingegeben (z.B. DOMAIN\DistCacheUser)"

# Config holen
$farm = Get-SPFarm
$cacheService = $farm.Services | where {$_.Name –eq "AppFabricCachingService"}

# Cache-Dienst Account festlegen
$accnt = Get-SPManagedAccount -Identity $NewCacheAccount
$cacheService.ProcessIdentity.CurrentIdentityType = "SpecificUser"
$cacheService.ProcessIdentity.ManagedAccount = $accnt
Start-Sleep 5
$cacheService.ProcessIdentity.Update();
Start-Sleep 5
$cacheService.ProcessIdentity.Deploy();
Start-Sleep 5

Cache-Dienst Instanzen starten

Momentan läuft die Instanz des Cache-Dienstes (Distributed Cache Service) wahrscheinlich nur auf einem Server (auf den restlichen haben wir die Instanzen ja vorhin entfernt).

Um nun die Dienstinstanz auf den anderen Servern zu starten, auf denen der Cachedienst laufen soll (bei uns sind es die Webserver) und sie damit zu einem Teil des Clusters zu machen, muss man folgende Zeile auf den übrigen Servern ausführen.

# Auf den restlichen Servern, die Cache-Dienst hosten sollen, ausführen.
Add-SPDistributedCacheServiceInstance

Konten aus lokalen Administratoren entfernen

  • Das neue Konto des Cache-Dienstes aus der Gruppe der lokalen Administratoren entfernen.
  • Das alte Konto des Cache-Dienstes aus der Gruppe der lokalen Administratoren entfernen.
  • Das Farm-Konto aus der Gruppe der lokalen Administratoren entfernen.

Tests

  • In ZA prüfen, ob das neue Account für den „Windows-Dienst – Verteilter Cache“ gesetzt wurde (ZA > Sicherheit > Dienstkonten konfigurieren)
  • In ZA prüfen, ob der Dienst „Verteilter Cache“ auf allen Servern läuft, die den Cache-Dienst hosten sollen (ZA > Systemeinstellungen > Dienste auf dem Server verwalten)
  • Mit Get-CacheHost  prüfen, ob alle Server, die den Dienst hosten sollen, den Status UP aufweisen.
  • Auf allen Servern, die den Dienst hosten sollen, prüfen, ob Windows-Dienst „AppFabric-Cachedienst“ bzw. „AppFabric Caching Service“ den Status „Wird ausgeführt“ hat und unter der neuen Kennung läuft.
Achtung:
Verwalten Sie den AppFabric-Cachedienst nicht über Systemsteuerung, Verwaltung, Dienste. Verwenden Sie nicht die Anwendungen im Ordner AppFabric für Windows Server im Startmenü.

Quellen

  1. technet.microsoft.com: Verwalten des Diensts für verteilten Cache in SharePoint Server 2013 (Achtung, nicht in Multi-Server-Farmen durchführen!)
  2. blog.trivadis.com: Ändern des Distributed Cache Service Accounts in Multi-Server-SharePoint-Farm
  3. isolutions.ch: SharePoint 2013 Distributed Cache
  4. itgroove.net: Fixing the AppFabric Cache Cluster in SharePoint 2013

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert