2011-12-12 118 views
6

我在單臺機器(域註冊的Windows 7企業版)上安裝了AppFabric 1.1 x64(Hosting + Cache)。安裝和配置完美無瑕(只有一臺機器的集羣,存儲在SQL中的配置),我在本地運行一切(包括SQL Server 2008 R2)。當我要開始「AppFabric緩存服務」出現問題 - 它崩潰了幾秒鐘後,並輸入以下內容出現在管理事件(在事件查看器):AppFabric 1.1緩存(崩潰的Windows服務)

Faulting application name: DistributedCacheService.exe, version: 1.0.4632.0, time stamp: 0x4eafeccf 
Faulting module name: KERNELBASE.dll, version: 6.1.7601.17651, time stamp: 0x4e21213c 
Exception code: 0xe0434352 
Fault offset: 0x000000000000cacd 
Faulting process id: 0x1928 
Faulting application start time: 0x01ccb8c5266c0fd5 
Faulting application path: C:\Program Files\AppFabric 1.1 for Windows Server\DistributedCacheService.exe 
Faulting module path: C:\Windows\system32\KERNELBASE.dll 
Report Id: 6457890a-24b8-11e1-b051-70f1a19c8456 

Application: DistributedCacheService.exe 
Framework Version: v4.0.30319 
Description: The process was terminated due to an unhandled exception. 
Exception Info: System.UriFormatException 
Stack: 
    at Microsoft.ApplicationServer.Caching.VelocityWindowsService.StartServiceCallback(System.Object) 
    at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 
    at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 
    at System.Threading.ThreadPoolWorkQueue.Dispatch() 
    at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() 

AppFabric Caching service crashed with exception {System.UriFormatException: Invalid URI: The hostname could not be parsed. 
    at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind) 
    at Microsoft.ApplicationServer.Caching.ServiceConfigurationManager.InitializeThisHostData() 
    at Microsoft.ApplicationServer.Caching.ServiceConfigurationManager.InitializeDataFromGlobalConfig() 
    at Microsoft.ApplicationServer.Caching.VelocityWindowsService.StartService(Boolean deleteTKT) 
    at Microsoft.ApplicationServer.Caching.VelocityWindowsService.StartServiceCallback(Object context) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 
    at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 
    at System.Threading.ThreadPoolWorkQueue.Dispatch() 
    at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()}. Check debug log for more information 

下面是基本PowerShell命令的輸出:

獲取-CacheHost

HostName : CachePort Service Name   Service Status Version Info 
-------------------- ------------   -------------- ------------ 
MW7GM0B50ROMDQ:22233 AppFabricCachingService DOWN   3 [3,3][1,3] 

GET-CacheHostConfig

cmdlet Get-CacheHostConfig at command pipeline position 1 
Supply values for the following parameters: 
HostName: MW7GM0B50ROMDQ 
CachePort: 22233 

HostName  : MW7GM0B50ROMDQ 
ClusterPort  : 22234 
CachePort  : 22233 
ArbitrationPort : 22235 
ReplicationPort : 22236 
Size   : 3994 MB 
ServiceName  : AppFabricCachingService 
HighWatermark : 99% 
LowWatermark : 90% 
IsLeadHost  : True 

緩存服務被設置爲被作爲網絡服務運行。

你有什麼線索可能是錯的嗎?我見過「URI無效:主機名無法解析。」消息,但配置中的名稱似乎完全正常(即使它看起來很奇怪,它是我的計算機的專有名稱)。任何幫助,將不勝感激。

P.S.我之前有過AppFabric 1.0,它似乎工作正常。我在安裝AppFabric 1.1之前卸載了它。

回答

4

我設法找出是什麼原因。

在我的Windows主機文件中,我有幾個用於回送IP的條目:localhost,{machine name}和{machine name FQDN}。當我除去{機器名稱FQDN}以外的所有內容時,配置嚮導能夠設置正確的配置。

這是最簡單的方式,但我得知後...

我來解決這個問題第一(和更痛苦)的方式是手動刪除緩存服務的配置,並從頭開始使用PowerShell重新創建的cmdlet:

Import-Module ApplicationServer 
Import-Module DistributedCacheAdministration 
Import-Module DistributedCacheConfiguration 
New-CacheCluster ... 
Register-CacheHost ... 
Add-CacheHost ... 
Add-CacheAdmin ... 
etc. 

服務啓動proplerly,但可悲的是,當我驗證與獲取-CacheHost設置,我得到:

HostName : CachePort      Service Name   Service Status Version Info 
--------------------      ------------   -------------- ------------ 
MW7GM0B50ROMDQ.<domain part>:22233   AppFabricCachingService UP    0 [0,0][0,0] 

如果你看一下版本數字,你會發現這很可能是不恰當的。不幸的是,當我嘗試手動更新此信息(「更新-CacheHostAllowedVersions」),我得到奇怪的看着「訪問被拒絕」的錯誤:

Update-CacheHostAllowedVersions : ErrorCode<ERRCAdmin026>:SubStatus<ES0001>:Remote registry access failed on host MW7GM0B50ROMDQ.<domain part>. Check if the required permissions are available and the host is not down. 

我必須做一些測試,以找出是否這真是一個問題或只是煩惱。

+0

我已經成功地樹立了正確的版本信息,但遺憾的是... ,客戶端連接導致AppFabric緩存服務崩潰並帶來一個有趣的評論:「無效的枚舉值'AdditionalRoutingProps'無法反序列化到類型'Microsoft.ApplicationServer.Caching.NamedCacheProp erty'」。我已經向微軟提出了這個問題,也許他們能夠提供幫助。 –

+0

問題解決。 GAC中的AppFabric DLL仍然是安裝在1.0發行版中的DLL。只能在Program Files的AppFabric目錄中找到1.1個DLL(或者你選擇安裝它的任何地方)。 總結 - 我是(並非故意)試圖訪問1.1客戶端的服務器。更新項目中的引用後,一切正常。 –

+0

謝謝!這救了我,從HOSTS文件中刪除條目解決了我的問題。我有一個只有{machinename}的條目,一旦刪除了一切開始工作。 – Dribbel

1

我遇到了類似/相同的問題,但修復HOST並沒有幫助。我的問題的核心是我的服務器有很長的(8 +字符)名稱。在配置高速緩存時修剪了它。

第一個有用的提示是Get-CacheHost輸出名稱不正確。然後,解決方案很簡單:

  1. Export-CacheClusterConfig -Path <path>\config.xml
  2. 編輯文件和修復您的主機
  3. Import-CacheClusterConfig -Path <path>\config.xml
  4. Start-CacheCluster
+0

就我而言,我的臺式電腦已被移到另一個域。解決方法與主機名是dns名稱相同。 –