TFS, Git und Hardware Load Balancer

TFSlovesGitBei der Verwendung eines Hardware Load Balancer (HLB), durch den zwei TFS AppTier mit einer Datenbank verbunden sind, kann es bei der Verwendung von Git-Repositories zu Problemen kommen. Der Code Explorer zeigt unter Umständen als Git-Repository-Adresse statt der ALIAS URL des HLB, die URL mit der tatsächlichen AppTier-Adresse an, so dass ein Git-Repository mit der falschen URL geklont werden wird. Bei einem Ausfall einer AppTier würde das dazu führen, dass dieses Repository nicht mehr erreichbar wäre, da der TFS Client versucht, eine direkte Verbindung zur TFS AppTier aufzubauen und nicht den Weg über den Hardware Load Balancer zu gehen . Die Lösung des Problems ist denkbar einfach und wird im folgenden Post beschrieben.

Szenario

Das System besteht aus einem Team Foundation Server 2013 mit zwei  TFS AppTier Server, die in unterschiedlichen Rechenzentren stehen. Um die bestmögliche Ausfallsicherheit zu erreichen, wird ein Hardware Load Balancer eingesetzt, um zum einen die Last zwischen den beiden Rechenzentren zu verteilen und zum anderen beim Ausfall einer AppTier alle Clients in das jeweils andere Rechenzentrum umzuleiten.

GITRepo_4

Abbildung 1: TFS Multi-Tier-Installation mit zwei TFS AppTier und Hardware Load Balancer

Problem

Das nun auftretende Problem bezieht sich auf die Git Repository URL, die leider nicht über die virtuelle IP-Adresse (VIP) oder deren DNS-Namen aufgebaut wurde, sondern mit dem realen Namen einer AppTier. Der Code Explorer des Web Access zeigt nun diese falsche URL an, so dass Benutzer beim Klonen des Repositories die falsche URL verwenden und demzufolge beim Verbindungsaufbau den Hardware Load Balancer umgehen.

GITRepo_1_klein

Abbildung 2: Code Explorer – Repository URL

Das Umgehen des HLB hat dann zur Folge, dass ein Lastausgleich nicht mehr möglich ist und die Ausfallsicherheit des Systems nicht mehr gewährleistet ist.

Beim Ausfall einer AppTier ist das Repository nicht mehr erreichbar. Bei der Verwendung von Eclipse und dem eGit-Client tritt folgende Fehlermeldung auf:

GitRepo_2

Abbildung 3: Fehlermeldung des eGit Clients bei Ausfall einer AppTier

Lösung

Die Lösung des Problems ist glücklicherweise denkbar einfach. Die Repository-URL wird deswegen falsch aufgebaut, weil bei der Installation des TFS im Table „tbl_AccessMapping“ der „TFS_Configuration“-Datenbank die falsche URL für die Felder „Notification URL“ und „Web Access URL“ eingetragen wurde. Beide URLs lassen sich in der TFS Adminstration Console ändern und durch die VIP oder deren DNS-URL des Hardware Load Balancers ersetzen.

GitRepo_3

Abbildung 4: TFS Administration Console – Ändern der Server URL

Nach der Änderungen werden alle Verbindungen über den Hardware Load Balancer geleitet und die Ausfallsicherheit ist wieder hergestellt.

Neu erstellte Git Repositories werden ebenfalls mit der richtigen URL im Code Explorer des Web Access angezeigt und können bedenkenlos von allen Benutzern verwendet werden.

Weitere Informationen zum Thema Git gibt es hier:
http://almsports.net/publishing-git-repositories-in-tfs-2013/562/
http://almsports.net/tfs-loves-git/516/