InCycle Software's Application Modernization and DevOps Blog

Setting up a TFS Warm Stand by on windows 2008

Written by InCycle | Jun 9, 2009 12:21:50 PM

We encountered an issue when we set up a TFS warm by stand by tier on a window server 2008 machine at a client site.

The set up of TFS application tier “warm stand by” went well. The steps to set it up are in the section “How to: Configure a Standby Server for the Application Tier in the TFS installation guide” of the Team Foundation Server 2008 installation guide.

Once we ran the activateAT command to specify the virtual server name we had selected, TFS returned many errors (TF30063; see below for a sample of the event log)
Log Name:      Application
Source:        TFS Version Control
Date:          5/28/2009 2:30:46 PM
Event ID:      3028
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      ATMachineName.DomainName.net
Description:
TF53010: The following error has occurred <span style="color: #0000ff">in</span> a Team Foundation component or extension:
Date (UTC): 5/28/2009 6:30:46 PM
Machine: ATMachineName
Application Domain: /LM/W3SVC/831865381/ROOT/VersionControl-40-128880090463851400
Assembly: Microsoft.TeamFoundation.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a; v2.0.50727
Process Details:
  Process Name: w3wp
  Process Id: 3828
  Thread Id: 3624
  Account name: DomainName\tfsservice
&#160;
Detailed Message: TF53002: Unable to obtain registration data <span style="color: #0000ff">for</span> application VersionControl.
Web Request Details
    Url: http:<span style="color: #008000">//VirtualATName:8080/VersionControl/v1.0/repository.asmx [method: POST]</span>
    User Agent: Team Foundation (devenv.exe, 9.0.30729.1)
    Headers: Content-Length=319&amp;Content-Type=application%2fsoap%2bxml%3b+charset%3dutf-8&amp;Accept-Encoding=gzip%2cgzip%2cgzip&amp;Accept-Language=en-US&amp;Authorization=NTLM+TlRMTVNTUAADAAAAGAAYAH4AAAAYABgAlgAAAA4ADgBIAAAAEgASAFYAAAAWABYAaAAAABAAEACuAAAANYKI4gUBKAoAAAAPRQBaAEUAUwBPAEYAVABKAEsAbwB0AGEAcgBzAGsAaQBLAE8AVABBAFIAQwBBAFMAVABMAEUAvLisuuzUv6kAAAAAAAAAAAAAAAAAAAAAVjEA56O20yN8mf9I854%2bj5Uv5P6dgzJHKyiKXw6Frzq0%2bHPGhl1UwA%3d%3d&amp;Expect=100-<span style="color: #0000ff">continue</span>&amp;Host=VirtualATName%3a8080&amp;User-Agent=Team+Foundation+(devenv.exe%2c+9.0.30729.1)&amp;X-TFS-Version=1.0.0.0&amp;X-TFS-Session=e998d615-a149-43cf-96ca-c9bd3577c1a2
    Path: /VersionControl/v1.0/repository.asmx
    Local Request: False
    Host Address: 10.3.2.25
    User: DomainName\UserName[authentication type: NTLM]
&#160;
Exception Message: TF30063: You are not authorized to access VirtualATName. (type TeamFoundationServerUnauthorizedException)
&#160;
Exception Stack Trace:    at Microsoft.TeamFoundation.Client.TeamFoundationSoapProxy.ThrowIfUnauthorized(HttpWebResponse response)
   at Microsoft.TeamFoundation.Client.TeamFoundationSoapProxy.GetWebResponse(WebRequest request)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at Microsoft.TeamFoundation.Proxy.BisRegistrationServiceProxyWsdl.GetRegistrationEntries(String toolId)
   at Microsoft.TeamFoundation.Proxy.BisRegistrationProxy.GetRegistrationEntries(String toolId)
   at Microsoft.TeamFoundation.Proxy.BisRegistrationService.RefreshMemoryCache()
   at Microsoft.TeamFoundation.Proxy.BisRegistrationService.RefreshCachesIfNeeded(Boolean direct)
   at Microsoft.TeamFoundation.Proxy.BisRegistrationService.GetRegistrationEntries(String toolId)
   at Microsoft.TeamFoundation.Server.TeamFoundationApplication.GetRegistrationEntry(String toolName)
   at Microsoft.TeamFoundation.Server.TeamFoundationApplication.GetDatabaseConnectionString(String toolName, String dbName)
&#160;
&#160;
Event Xml:
&lt;Event xmlns=<span style="color: #006080">&quot;http://schemas.microsoft.com/win/2004/08/events/event&quot;</span>&gt;
  &lt;System&gt;
    &lt;Provider Name=<span style="color: #006080">&quot;TFS Version Control&quot;</span> /&gt;
    &lt;EventID Qualifiers=<span style="color: #006080">&quot;0&quot;</span>&gt;3028&lt;/EventID&gt;
    &lt;Level&gt;2&lt;/Level&gt;
    &lt;Task&gt;0&lt;/Task&gt;
    &lt;Keywords&gt;0x80000000000000&lt;/Keywords&gt;
    &lt;TimeCreated SystemTime=<span style="color: #006080">&quot;2009-05-28T18:30:46.000Z&quot;</span> /&gt;
    &lt;EventRecordID&gt;9074&lt;/EventRecordID&gt;
    &lt;Channel&gt;Application&lt;/Channel&gt;
    &lt;Computer&gt;ATMachineName.DomainName.net&lt;/Computer&gt;
    &lt;Security /&gt;
  &lt;/System&gt;
  &lt;EventData&gt;
    &lt;Data&gt;TF53010: The following error has occurred <span style="color: #0000ff">in</span> a Team Foundation component or extension:
Date (UTC): 5/28/2009 6:30:46 PM
Machine: ATMachineName
Application Domain: /LM/W3SVC/831865381/ROOT/VersionControl-40-128880090463851400
Assembly: Microsoft.TeamFoundation.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a; v2.0.50727
Process Details:
  Process Name: w3wp
  Process Id: 3828
  Thread Id: 3624
  Account name: DomainName\tfsservice
&#160;
Detailed Message: TF53002: Unable to obtain registration data <span style="color: #0000ff">for</span> application VersionControl.
Web Request Details
    Url: http:<span style="color: #008000">//VirtualATName:8080/VersionControl/v1.0/repository.asmx [method: POST]</span>
    User Agent: Team Foundation (devenv.exe, 9.0.30729.1)
    Headers: Content-Length=319&amp;amp;Content-Type=application%2fsoap%2bxml%3b+charset%3dutf-8&amp;amp;Accept-Encoding=gzip%2cgzip%2cgzip&amp;amp;Accept-Language=en-US&amp;amp;Authorization=NTLM+TlRMTVNTUAADAAAAGAAYAH4AAAAYABgAlgAAAA4ADgBIAAAAEgASAFYAAAAWABYAaAAAABAAEACuAAAANYKI4gUBKAoAAAAPRQBaAEUAUwBPAEYAVABKAEsAbwB0AGEAcgBzAGsAaQBLAE8AVABBAFIAQwBBAFMAVABMAEUAvLisuuzUv6kAAAAAAAAAAAAAAAAAAAAAVjEA56O20yN8mf9I854%2bj5Uv5P6dgzJHKyiKXw6Frzq0%2bHPGhl1UwA%3d%3d&amp;amp;Expect=100-<span style="color: #0000ff">continue</span>&amp;amp;Host=VirtualATName%3a8080&amp;amp;User-Agent=Team+Foundation+(devenv.exe%2c+9.0.30729.1)&amp;amp;X-TFS-Version=1.0.0.0&amp;amp;X-TFS-Session=e998d615-a149-43cf-96ca-c9bd3577c1a2
    Path: /VersionControl/v1.0/repository.asmx
    Local Request: False
    Host Address: 10.3.2.25
    User: DomainName\UserName[authentication type: NTLM]
&#160;
Exception Message: TF30063: You are not authorized to access VirtualATName. (type TeamFoundationServerUnauthorizedException)
&#160;
Exception Stack Trace:    at Microsoft.TeamFoundation.Client.TeamFoundationSoapProxy.ThrowIfUnauthorized(HttpWebResponse response)
   at Microsoft.TeamFoundation.Client.TeamFoundationSoapProxy.GetWebResponse(WebRequest request)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at Microsoft.TeamFoundation.Proxy.BisRegistrationServiceProxyWsdl.GetRegistrationEntries(String toolId)
   at Microsoft.TeamFoundation.Proxy.BisRegistrationProxy.GetRegistrationEntries(String toolId)
   at Microsoft.TeamFoundation.Proxy.BisRegistrationService.RefreshMemoryCache()
   at Microsoft.TeamFoundation.Proxy.BisRegistrationService.RefreshCachesIfNeeded(Boolean direct)
   at Microsoft.TeamFoundation.Proxy.BisRegistrationService.GetRegistrationEntries(String toolId)
   at Microsoft.TeamFoundation.Server.TeamFoundationApplication.GetRegistrationEntry(String toolName)
   at Microsoft.TeamFoundation.Server.TeamFoundationApplication.GetDatabaseConnectionString(String toolName, String dbName)
&#160;
&lt;/Data&gt;
  &lt;/EventData&gt;
&lt;/Event&gt;

We found the blog by Steve St-Jean who recently had set up issues with a TFS warm stand by tier. We did not have as many issues as he reported but it did point us in the direction of the Microsoft KB 926642. This is the issue with windows server authentication when using fully qualified domain names (FQDN). Since we are attempting to set the computer to use a virtual server name, we believed this could the source of our problem. The KB article does not mention Windows server 2008 but we found a post where the workaround was also implemented for 2008.

We choose to implement the second method of the KB article:

    Click Start, click Run, type regedit, and then click OK.

    Locate and then click the following registry subkey: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

    Right-click Lsa, point to New, and then click DWORD Value.

    Type DisableLoopbackCheck, and then press ENTER.

    Right-click DisableLoopbackCheck, and then click Modify.

    In the Value data box, type 1, and then click OK.

    Exit Registry Editor.

    Restart the computer.

After the application tier machine had restarted, TFS worked without further issue, the client workstations could connect to TFS by using the new TFS virtual server name.