Windows Fabric

Mit Windows 2012 ist sie nur noch ein Feature des Betriebssystems und bei Windows 2008R2 muss ein Lync 2013 Administrator die Funktion noch installieren, ehe er Lync 2013 installieren kann. Aber was macht die Windows Fabric eigentlich ?

Die Windows Fabric

Mit Lync 2013 wurden einige Dinge der Verfügbarkeit anders geregelt. Bei Lync 2010 war der SQL-Server im Hintergrund einer Farm noch sehr wichtig und auch zeitkritisch. Mit Lync 2013 wurden viele Dinge lockerer verbunden und die meisten Daten liegen auf den Frontend Servern. So werden die Daten eines Benutzers auf bis zu 3 Servern eines Pools repliziert. Diese Replikation und einige andere Dinge müssen koordiniert werden.

Anstatt nun das Rad neu zu erfinden, haben die Lync Entwickler sich im Baukasten des Betriebssystem bedient. Denn hier haben die Entwickler mit der Windows Fabric ein weiteres Feature entwickelt, um den Status von Applikationen über mehrere Server einer Farm hinweg abzugleichen. Sicher haben die Windows Entwickler da nicht primär an Lync gedacht. Eine kurze Suche nach der Fabrik und der MSDN ergibt nämlich, dass die meisten Beispiele auf Application Pools im IIS gemünzt sind. Aber auch wenn ich einige Webseiten und Quellen studiert habe, so bin ich immer noch nicht sicher, wie der Entwicklungsbaum der "Windows Fabric" ist, d.h. welche Versionen und Zweige es bislang gibt. Lync spricht von der "WinFab" oder "Windows Fabric" während an anderer Stelle oft von einer "AppFabric" gesprochen wird, teilweise sogar mit dem Buuzzwort "Azure" im Gepäck. Das folgende Zitat kommt aus der Lync Hilfe zum Befehl Get-CsPoolFabricState.

"Windows Fabric is a Microsoft technology used für creating highly reliable, distributable, and scalable applications "
Quelle: Get-CsPoolFabricState http://technet.microsoft.com/en-us/library/jj619188.aspx

The Lync Server Storage Service uses Windows Fabric für replication.
Quelle: Release notes für Lync Server 2013 http://technet.microsoft.com/en-us/library/jj205120.aspx

Die Windows Fabric ist aber eine Komponente des Betriebssystems und gehört eigentlich nicht zum Lync Installationsumfang.

Lync und die Fabric

Im Bezug auf Lync hat die Fabric aber eine sehr wesentliche Bedeutung. Ohne die Fabric läuft kein Lync Frontend Server. Was genau die Fabric für Lync macht, wird auf dem Blog-Eintrag "Lync 2013 High Availability deep dive: Architecture" (http://blogs.technet.com/b/rischwen/archive/2014/02/24/lync-2013-high-availability-deep-dive-architecture.aspx) etwas deutlicher:

  • Election of primäry, Secondary, and Backup Secondary replica
  • Failover Management including Fast Failover with full service
  • Replication between primäry and secondary replicas
  • Manages and Monitors which servers are functional and participating in pool operations
  • Services für MCU Factory, Conference Directory, Routing Group, LYSS
  • Load Balancing within a pool

Das sind also durchaus essentielle Aufgaben, worauf auch noch mal die Hilfe zu Get-CsPoolFabricState indirekt hinweist.

The Get-CsPoolFabricState cmdlet returns the Windows Fabric state für a Lync Server 2013 pool. This includes information about Windows Fabric replica instances für any (or all) of the following services: MCU factory; Conference Directory; Routing; Lync Server Storage Service.
Quelle: Get-CsPoolFabricState (http://technet.microsoft.com/en-us/library/jj619188.aspx)

Hier noch ein paar weitere Links, die sich alle mit der Fabric und Lync beschäftigen.

Fabric Konfiguration

Die meisten Lync Administratoren haben von der Fabric auch schon deswegen nicht viel mitbekommen, weil es nichts zu konfigurieren gibt. Es gibt kein eigenständiges Konfigurationsprogramm dafür und die Einstellungen liegen quasi in einer XML-Datei. Die komplette Verwaltung erfolgt indirekt über das Programm, welches die Dienste der Fabric nutzt. Insofern ist ihr Deployment Wizard dafür zuständig, alle Voraussetzungen für die Installation der Frontend-Server zu machen, die dann bei der Installation und beim Start die Fabric entsprechend konfigurieren.  Sie die Fabric konfiguriert ist, können Sie dann recht einfach in einer XML-Datei nachschauen. Sie finden Sie unter:

C:\ProgramData\Windows Fabric\Settings.Xml und 
C:\ProgramData\Windows Fabric\LyncServer-ClusterManifest.Xml 
C:\ProgramData\Windows Fabric\Fabric\ClusterManifest.current.xml

Interessant ist hier der Blick in die folgenden Einstellungen. Hier sollten Sie die Frontend-Server ihres Pools sehen. Wenn Sie eine gerade Anzahl von Poolmitgliedern haben, dann wird der SQL-Server als zusätzlicher "Voter" aufgenommen.

In Lync 2013 RTM ist es so, dass dabei nur der primäre SQL-Knoten einer SQL-Mirror-Umgebung als Voter genutzt wurde. War also der primäre SQL-Server down, dann ist der Pool quasi schon kritisch". Daher sollte ein Pool auch immer eine ungerade Anzahl an Servern haben.

Fabric Grenzwerte 85%, 50%, 100%

Eine andere Funktion betrifft die Funktion, wann die Fabric "online" geht. Wenn ein Server hochfährt, versucht er der vorhandenen Fabric beizutreten. Wenn diese aber noch nicht läuft, dann startet er selbst die Fabric erst, wenn er 85% der Mitglieder erreichen kann. Es müssen also mindestens 6 von 7 Servern (0,857..) Server online sein. Wer weniger als 7 Server, muss erst alle Server online nehmen ehe der Pool überhaupt anläuft. Daraus ergibt sich auch die Forderung, dass Sie in der Lync Topologie nur die Server definieren, die Sie auch installieren werden. Es zählen nämlich die konfigurierten Server.

Wenn die Fabric aktiv ist und dann ein Server mit seinen erreichbaren Kollegen weniger als 50% erreichen kann, geht er außer Betrieb. Er muss ja davon ausgehen, das die anderen Server eben mehr als 50% haben und ihre Arbeit weiter machen. Auch bei einer Erweiterung des Pool sollten sie nicht gleich alle neuen Server auf einen Schlag addieren. Sonst könnte hier auch der Pool mit allen bereits installierten und aktiven Server die 50% Grenze unterschreiten. Addieren Sie daher besser einen Server in der Topologie, installieren Sie dann den Server und wenn er sauber "im Dienst" ist, dann addieren Sie den nächsten Server.

Fabric Updates

Update für die Windows Fabric können über zwei Wege kommen. Als Komponente des Betriebssystems können Sie über Windows Update eventuell eine aktuellere Version erhalten.

Aber auch der Lync Update Installer bringt am und an ein Windows Fabric Updates mit:

Fabric Prozess

Die Windows Fabric ist ein normaler Windows Dienst, denn Sie auch in der Übersicht sehen:

Der Host ist aber nur die Basis, die ihrerseits weitere Prozesse startet. Diese sehen Sie z. B. im Taskmanager.

Fabric Ports

Über den Taskmanager können Sie gut erkennen, welche Ports dieser Dienst verwendet. Hier am Beispiel eines Lync 2013 Pools mit einigen Frontend Servern:

Es ist gut zu sehen, dass der Prozess zu allen anderen Servern in der gleichen Fabric über Port 5090 spricht. Zudem sehen Sie zumindest eine Verbindung auf 1433 eines anderen Servers. Das ist der SQL-Backend Server. Die Konfiguration können Sie übrigens auch in folgender Datei nachschauen

C:\Program Files\Windows Fabric\bin\Fabric\Fabric.Config.1.0\Settings.xml

  <Section Name="Votes">
    <Parameter Name="LYNCFE1.uclabor.de" Value="SeedNode,LYNCFE1.uclabor.de:5090" />
    <Parameter Name="LYNCFE2.uclabor.de" Value="SeedNode,LYNCFE2.uclabor.de:5090" />
    <Parameter Name="LYNCFE3.uclabor.de" Value="SeedNode,LYNCFE3.uclabor.de:5090" />
    <Parameter Name="LYNCFE4.uclabor.de" Value="SeedNode,LYNCFE4.uclabor.de:5090" />
    <Parameter Name="SQL" Value="SqlServer,Driver=SQL Server Native Client 11.0;Server=SQL1.uclabor.de;Failover_Partner=SQL22.uclabor.de;Database=rtcshared;Trusted_Connection=yes" />
  </Section>

Bei einem einzelnen Frontend Server, der quasi nur eine Fabric mit sich selbst hat, ist die Zeile nur einmal vorhanden.

  <Section Name="Votes">
    <Parameter Name="LYNCSE.uclabor.de" Value="SeedNode,LYNCFE1.uclabor.de:5090" />
  </Section>

An diesen Konfigurationsdateien müssen Sie aber normal nie etwas von Hand ändern. Die übernimmt die Lync Installationsroutine für Sie.

Fabric Tracing

Wenn alle glatt läuft, dann merken sie eigentlich gar nicht, dass auf ihren Lync Servern eine Komponente für die Kommunikation zwischen den Servern zuständig ist. Aber manchmal geht was schief und dann kann die Windows Fabric ganz schnell auch den Server im schlimmsten Fall ausfallen lassen. Bei einfachen Problemen kommt der eine Server vielleicht nicht mehr in die Farm und im schlimmsten Fall der Lync Frontend gar nicht mehr hoch. Perfider sind aber Probleme, bei denen ein Tracefile die Festplatte langsam füllt. Schauen Sie doch einfach mal die Eigenschaften des folgenden Verzeichnisses an:

C:\programdata\Windows Fabric\Fabric\log\Trace

Wie schlimm ist es bei ihrem Server?

In der Regel sind dort nur ganz wenige Dateien (bei mir sind es 4) und mit weniger als 200MB in Summe. Sollte bei ihnen das Verzeichnis sich allerdings Tag für Tag weiter füllen, dann können Sie die alten Dateien natürlich per Taskplaner löschen. Besser ist es aber zu schauen, welches Logging hier warum aktiv ist. Wenn Es z.B. als Altlast einer Fehlersuche aktiv geblieben ist, dann sollten Sie das Logging auch wieder abschalten. Fragen Sie am besten den, der das Logging aktiviert hat. Ansonsten helfen vielleicht die beiden Befehle auf einer Admin-Shell

REM Windows Fabci Logging auf Circular setzen
Logman update trace FabricLeaseLayerTraces -f bincirc --cnf

tracelog -stop debugtrace

Über die GUI können Sie in PerfMon.exe auch die dazugehörigen DataCollectoren sehen:

Über die Eigenschaften können Sie die ein oder andere Einstellung auch anpassen. Dies ist in der Regel aber nicht erforderlich

 

Diese Collectors werden bei der Installation schon mit angelegt. Einige Trace-Funktionen können Sie auch mit den mitgelieferten Skripten starten und beenden

C:\Program Files\Windows Fabric\bin\fabric\fabric Code.1.0\collecttraces.cmd
C:\Program Files\Windows Fabric\bin\fabric\fabric Code 1.0\starttracing.cmd
C:\Program Files\Windows Fabric\bin\fabric\fabric Code.1.0\stoptracing.cmd

Diese CMD-Dateien starten aber auch nur "LOGMAN" mit den entsprechenden Parameter.

Generell sollte das Tracing natürlich nur dann angeschaltet werden, wenn Sie auch vor haben die Daten auszuwerten. Und da kommt das Problem, dass die erzeugten ETL-Dateien eigentlich nur von Microsoft mit den passenden Werkzeugen ausgewertet werden können.

Normalerweise sollten die Dateien nach 3 Tage gelöscht werden. Dies ist die Standardkonfiguration, die in den XML-Dateien auch hinterlegt sein sollte

C:\ProgramData\Windows Fabric\Settings.Xml
C:\ProgramData\Windows Fabric\LyncServer-ClusterManifest.Xml

Hier ein Auszug aus den XML-Dateien, die das Logging betreffen:

<Section Name="Trace/Etw">
   <Parameter Name="Level" Value="4" />
</Section>
<Section Name="Transport">
   <Parameter Name="ResolveOption" Value="ipv4" />
   <Parameter Name="ThreadThrottle" Value="0" />
</Section>
<Section Name="Management">
   <Parameter Name="ImageStoreConnectionString" Value="file://ImageStore" />
</Section>
<Section Name="LocalLogStore">
   <Parameter Name="LocalLogDeletionEnabled" Value="True" />
   <Parameter Name="LogDeletionAgeInDays" Value="3" />
</Section>

Sollte dies nicht der Fall sein, können Sie die Konfiguration mit folgendem Befehl auf Circular Logging umstellen:

Logman Update trace FabricLeaseLayerTraces -f bincirc --cnf

Ein Aufruf ohne Parameter zeigt den aktuellen Status an:

Weitere Links