SharePoint2013中重建分布式缓存步骤
缓存配置文件路径:
C:\Program Files\用于 Windows Server 的 AppFabric 1.1\DistributedCacheService.exe.config
配置信息在注册表中的查看路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppFabric\V1.0\Configuration
重建分布式缓存步骤:
首选,进入Powershell,运行Use-CacheCluster 进入powershell缓存集群上下文。
1. 停用分布式缓存服务
方法一:进入CA-->应用程序管理-->管理服务器上的服务-->找到分布式缓存,然后点击停止;
方法二:
ps>Get-SPServiceInstance | ? {($_.service.tostring()) -eq "SPDistributedCacheService Name=AppFabricCachingService"} | % { $_.Server; $_.Status; $_.Id }
获取服务示例ID
ps>$s= Get-SPServiceInstance GUID
ps>$s.Unprovision()
ps>$s.Delete()
方法三:
Stop-SPDistributedCacheServiceInstance -Graceful
Remove-SPDistributedCacheServiceInstance
2. Unregister-CacheHost
3. 注册cachehost,其中使用的Provider,ConnectionString 从DistributedCacheService.exe.config中读取,Account使用Farm Account,也可使用"NT AUTHORITY\NETWORK SERVICE",HostName 为服务器机器名。(对于场中的每一个服务器都进行此项调用)
ps>Register-CacheHost –Provider "SPDistributedCacheClusterProvider" –ConnectionString "" -Account "" -CachePort 22233 -ClusterPort 22234 -ArbitrationPort 22235 -ReplicationPort 22236 –HostName ""
4. 检查cachehost状态,正常情况下,状态为UP
ps>Get-CacheHost
5. 如果状态为DOWN,导出配置文件,检查配置文件中hostid,以及Account信息是否正常。hostid必须与DistributedCacheService.exe.config中的hostid一致,如果不一致,则修改配置文件中的hostid,然后重新导入。
ps> Export-CacheClusterConfig -Path D:\soft\AF.XML
检查修改导出的xml文件,然后重新导入。
ps> Import-CacheClusterConfig D:\soft\AF.XML
ps> Remove-SPDistributedCacheServiceInstance
ps> Add-SPDistributedCacheServiceInstance
ps> Start-CacheHost -ComputerName "" -CachePort 22233
6. 然后重新运行Get-CacheHost,检查服务运行状态
运行缓存集群命令常见问题,及解决方案:
1. Use-CacheCluster : ErrorCode<ERRPS001>:SubStatus<ES0001>:读取提供程序和连接字符串值时发生错误。请手动提供这些值。
如果是缓存集群中的主服务器,则检查DistributedCacheService.exe.config中connectionstring是否正常。
如果是其他加入farm的服务器,则在运行命令行的时候,补充ConnectionString和ProviderType的值,如:Use-CacheCluster -ConnectionString "" -ProviderType "SPDistributedCacheClusterProvider"
下面是修改配置信息的PS命令行:
registryHive = "HKLM:SOFTWARE\Microsoft\AppFabric\V1.0\Configuration"
$connectionStringValueName = "ConnectionString"
$connectionStringValue= ""
$providerValueName = "Provider"
$providerValue= "SPDistributedCacheClusterProvider"
if ((Test-Path $registryHive) -eq $false) {New-Item $registryHive -Force | Out-Null}
Set-ItemProperty $registryHive -Name $connectionStringValueName -Value $connectionStringValue| Out-Null
Set-ItemProperty $registryHive -Name $providerValueName -Value $providerValue| Out-Null
2.
ps> $s= Get-SPServiceInstance GUID
ps> $s.Delete()
使用“0”个参数调用“Delete”时发生异常:“无法删除 SharePoint 管理框架中的对象“SPDistributedCacheServiceInstance”,因为其他对象依赖于该对象。请更新所有这些依赖对象,使其指向空对象或其他对象,然后重试此操作。这些依赖对象包括:
SPServiceInstanceJobDefinition Name=job-service-instance-XXXX
所在位置 行:1 字符: 1
+ $s.Delete()
+ ~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : InvalidOperationException
解决方法:
先删除对应的定时任务
ps> $jobToDelete = Get-SPTimerJob | ? { $_.name -eq "job-service-instance-4XXX" }
ps> $jobToDelete.Delete()
3.
ps> Unregister-CacheHost -HostName computername -ProviderType
Unregister-AFCacheHost : 缺少参数“ProviderType”的某个参数。请指定一个类型为“System.String”的参数,然后再试一次。
所在位置 行:1 字符: 58
+ Unregister-CacheHost -HostName computername -ProviderType
+ ~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Unregister-AFCacheHost],ParameterBindingException
+ FullyQualifiedErrorId : MissingArgument,Microsoft.ApplicationServer.Caching.Configuration.Commands.UnregisterAFCacheHostCommand
解决方法
导出cachecluster配置文件,将hosts节点下所有信息删除。hosts配置节点需要为空才能执行unregister操作。
<hosts></hosts>
PS C:\Windows\system32> Export-CacheClusterConfig -Path D:\soft\AF.XML
PS C:\Windows\system32> Import-CacheClusterConfig D:\soft\AF1.XML
4.
ps> Start-CacheHost -ComputerName "" -CachePort 22233
HostName : CachePort Service Name Service Status Version Info
-------------------- ------------ -------------- ------------
computername:22233 AppFabricCachingService DOWN 3 [3,3][1,3]
Start-CacheHost : 无法启动计算机“”上的服务 AppFabricCachingService。
所在位置 行:1 字符: 1
+ Start-CacheHost -ComputerName "" -CachePort 22233
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Start-AFCacheHost], InvalidOperationException
+ FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.ApplicationServer.Caching.Commands.StartAFCacheHostCommand
解决方法
导出cachecluster配置文件,与DistributedCacheService.exe.config进行对比,检查其中的hostid,account等信息与DistributedCacheService.exe.config完全一致。然后重新创建SPDistributedCacheServiceInstance
Export-CacheClusterConfig -Path D:\soft\AF.XML
Import-CacheClusterConfig D:\soft\AF.XML
ps> Remove-SPDistributedCacheServiceInstance
ps> Add-SPDistributedCacheServiceInstance