Vorwort
Es scheiden sich noch immer die Geister, ob ein In-Place-Upgrade wirklich das Gelbe vom Ei ist. Man muss hier tatsächlich in jedem Fall neu entscheiden. Für uns war dieses Upgrade sinnvoll da wir viel um die ehemaligen Lync-Server gebaut haben. Wenn Sie unser Portfolio kennen, wissen Sie vielleicht, dass unsere Kunden auch direkt bei uns die Telefonie dazubuchen können. Entweder über einen Partner von uns, oder mit einem SIP-Provider ihrer Wahl. Dies alles nachher umzustellen auf neue Server, mit neuen Adressen, wäre in unserem klein bemessenen Zeitfenster ein Ding der Unmöglichkeit gewesen.
Ich schreibe hier alles aus persönlichen Erfahrungen, werde deswegen keine Garantie übernehmen für etwaige Abweichungen zu Ihrer Infrastruktur. Dennoch würde ich mich freuen, wenn es den einen oder anderen weiterbringt und bin froh über jede Kritik. Nun viel Spaß beim Lesen und vielleicht schon bald viel Spaß mit Skype for Business 2015!
Vorbereitung
Folgende Voraussetzungen sind vor der Skype for Business-Installation zu erfüllen:
- .net Framework 3.5 – Beziehbar, in dem man die zum Betriebssystem gehörige Windows-Disk einlegt, später mehr.
- Lync Server 2013 Cumulative Update 5 (Feb. 2015) – Beziehbar über den Lync Update Installer
- Service Pack 1 für die pro Server installierten SQL Express 2012-Instanzen – Beziehbar über diesen Link: SQLEXPR_x64_ENU.exe
Zusätzlich sind anscheinend je nach verwendetem Betriebssystem folgende Updates notwendig:
Anscheinend deshalb, da der Skype-Installer diese Updates wohl nachinstalliert, sofern nicht vorhanden. Wenn man hier sicher gehen will, kann man sie aber auf jeden Fall schon vorher installieren.
Ich habe für meinen Teil noch auf den FrontEnd-Servern, sowie auf den Edge-Servern ein SQL-Management Studio benötigt. Auf diesen Bug komme ich allerdings während der Installation noch zu sprechen und werde dieses dann auch entsprechend verlinken.
Installation der Voraussetzungen
Von nun an können alle Tätigkeiten zu Dienstunterbrechungen führen und sind deshalb grundsätzlich außerhalb der Geschäftszeiten zu erledigen.
.net Framework 3.5: Beim Windows Server 2008R2 ging es meines Wissens nach noch recht einfach: Über den “Add Feature”-Assistenten konnte hier noch ganz einfach .net Framework 3.5 nachgezogen werden. Anders bei 2012 und 2012R2: Auch wenn der Bezug der Dateien recht einfach ist, hat es uns Microsoft hier doch nicht ganz leicht gemacht. Wir legen also die für das Betriebssystem passende Windows-CD ins Laufwerk. Das ist wichtig! Eine 2012R2-CD bringt bei einem 2012-Server genau nichts. Anschließend öffnen wir wie beim 2008er Server diesen Rollen- und Featureassistent und wählen unter Features .net Framework 3.5 aus. Im darauffolgenden Fenster wird uns nun angeboten, alternative Quellen anzugeben. Hier verweisen wir auf den “sxs”-Ordner, wobei der Pfad wie folgt angegeben werden muss:
<Laufwerksbuchstabe>:\sources\sxs
Anschließend wird mit ein paar Klicks auf “Next” und “OK” das Feature installiert.
Lync Server Cumulative Update 5: Wenn Sie sich diesen Lync Update Installer besorgt haben, kopieren Sie diesen einfach auf jeden einzelnen Lync Server in Ihrer Site. Dann wirds eigentlich ziemlich einfach: Sie führen den Update Installer aus, sehen alle benötigten Updates und klicken nur noch auf “Install Updates“. Wir werden hier nicht speziell auf das CU5 gehen, sondern Lync einfach soweit aktualisieren, wie es die Updates hergeben. Sie werden dann auch sehen, dass auf den unterschiedlichen Servern unterschiedlich viele Updates anstehen. Das hängt damit zusammen, dass der Updater die installierten Rollen erkennt und wirklich nur das aktualisiert, was auch zu aktualisieren ist.
SQL Server Express Service Pack 2: Ja, Service Pack 2 ist kein Schreibfehler, diesen hab ich auch oben verlinkt. Grund hierfür ist, dass im SP2 der SP1 integriert ist. Und da wir eh gern aktuell sind, nehmen wir doch auch hier das aktuellste Produkt. Installieren werden wir das Ganze mit einem simplen Mehrzeiler. Dieser sorgt dafür, dass zum einen die Lync-Dienste zu diesem Zeitpunkt nicht mehr in die Datenbank schreiben, und zum anderen wird wirklich nur das versteckte Service Pack Update ausgeführt anstatt dem großen Installer. In dem Beispiel gehen wir davon aus, dass wir die “SQLEXPR_x64_ENU.exe” unter “C:\Temp\” abgelegt haben:
PS C:\Users\demo-user> Stop-CsWindowsService PS C:\Users\demo-user> cd.. PS C:\Users> cd.. PS C:\> cd .\Temp PS C:\Temp> .\SQLEXPR_x64_ENU.exe /ACTION=Patch /allinstances /IAcceptSQLServerLicenseTerms
Die daraufhin folgende Setup-Routine sollte selbstverständlich sein, da werde ich nicht näher darauf eingehen.
Installation des (temporären) Management-Servers
Jetzt geht’s los. Wir benötigen zum Start einen Server ohne irgendwelche Lync-Dienste und dergleichen installiert. Da dieser Server wirklich erstmal gar nichts können muss, haben wir hier kurzerhand eine neue VM aufgesetzt, kurz ein 2012R2-OS installiert, Netzwerktechnisch neben die Lync-Server gestellt und in deren Domain aufgenommen. Sobald dies erledigt ist, kann man die Skype for Business-ISO einhängen und auf dem Laufwerk dann zu Setup -> AMD64 -> setup.exe navigieren. Wenn wir diese Ausführen, werden erstmal die Kernkomponenten installiert.
Danach sehen wir ein neu eingefärbtes, aber wohl bekanntes Fenster, den Deployment Wizard. Hier klicken wir auf Install Administrative Tools. Nun werden weitere Komponenten installiert, die wir unter anderen Einfärbungen so schon kennen. Die für uns wichtigste ist hierbei der Skype for Business 2015 Topology Builder.
Upgrade des FrontEnd-Pools
Wir öffnen nun also das erste Mal den Skype for Business 2015 Topology Builder. Die einzige Änderung, die wir feststellen können, ist ein weiterer “Ordner” mit dem Namen Skype for Business Server 2015. Da dieser ernüchternd leer ist, werden wir nun dafür sorgen, dass er voller wird. Hierzu werden wir auf den Lync 2013 FronEnd-Pool rechtsklicken und Upgrade to Skype for Business Server 2015… wählen. Den Hinweis können wir mit OK bestätigen. Nun ist der FrontEnd-Pool verschoben, aber nur im Topology-Builder. Damit die Änderung wirksam wird, müssen wir nun die Topology publishen. Im Publishing-Wizard werden wir dann auch darauf hingewiesen, dass die Datenbank bearbeitet wird. Das finden wir gut, klicken auf Next und die Topologie ist publiziert.
Nun schalten wir uns auf den ersten FrontEnd-Server. Da wir alle Voraussetzungen schon installiert hatten, beenden wir nur schnell über den Befehl
Stop-CsWindowsService
alle Lync-Dienste und können dann direkt auch hier die Skype-ISO einlegen und wieder über <Laufwerksbuchstabe>:\Amd64\Setup.exe den Installer ausführen. Nachdem wir das Lizenzabkommen bestätigt haben, startet direkt das Setup. Wenn wir Glück haben, ist er in etwa 30min. durch, da wir aber nie Glück haben, schreibe ich hier mal die uns bekannten und möglicherweise auftretenden Probleme auf. Sollte ein solches Problem auftreten und die Problemlösung wäre gezwungenermaßen mit einem Neustart verbunden, so ist das nicht schlimm. Das Setup merkt sich ganz genau, wo wir stehen geblieben sind. Hier die uns bekannten Fehler:
- Schritt 1 – Verifying upgrade readiness: Das hat recht wenig mit Glück zu tun. Wer diesen Fehler bekommt, hat die Vorbereitung zumindest teilweise übersprungen. Aber nicht schlimm, hier sagt uns der Installer ganz genau, was ihm noch fehlt.
- Schritt 12 – Installing roles: Hier bekamen wir folgenden Fehler: “An error occured while applying SQL script for the feature RtcDatabaseStore. For details, see the log file […]”. In dem Logfile stand dann am Ende “The server principal ‘<FE-Server>\RTC Component Local Group’ already exists”. Sollte der Fehler bei Ihnen auch auftreten, dann müssen Sie sich nun das oben erwähnte SQL Management Studio beziehen. Dieses installieren Sie dann lokal auf dem FrontEnd-Server, um damit auf die RTCLOCAL-Datenbank zuzugreifen. Dort angekommen, erweitern Sie unter Security die Logins, worunter auch unten stehende Einträge zu sehen sein sollten. Diese müssen gelöscht werden. Anschließend kann im Setup der Retry-Knopf gedrückt werden.
- <FE-Server>\RTC Components Local Group
- <FE-Server>\RTC Local Administrators
- <FE-Server>\RTC Local Config Replicator
- <FE-Server>\RTC Local Read-only Administrator
- <FE-Server>\RTC Local Group
- Sollten noch weitere Probleme auftauchen – lassen Sie uns teilhaben! Die Kommentarfunktion darf hierfür gerne hergenommen werden.
Sobald der Installationsassistent komplett durchgelaufen ist, haben wir den ersten Server komplett upgedatet. Dieses Verfahren ist nun für sämtliche FrontEnd-Server zu wiederholen.
Ist dies erledigt, so dürfen wir an dieser Stelle einen tollen neuen Befehl ausführen:
Start-CsPool <Name des Pools>
Dieser Befehl ist in der Lage, den gesamten FrontEnd-Pool zu starten. Während die Dienste hochgefahren werden, können Sie einiges an Informationen in der Konsole sehen. Wenn alles geklappt hat, sehen wir als abschließende Meldung folgende Ausgabe:
The final state of servers: Server Status ------- ------- <Servernamen> Running
Hiermit läuft der ganze FrontEnd-Pool bereits auf Skype for Business 2015. Die anderen Server werden wir dann in den kommenden Schritten nachziehen.
Upgrade des Edge-Pools
— ACHTUNG, BUG! — (Stand: 21. Juli 2015)
Das Setup läuft fast gleich ab, wie auf den FrontEnd-Servern. Fast. Denn hier kann man sich ein richtiges Ei legen durch einen kleinen aber feinen Bug (Tritt nur bei Nichtverwendung von XMPP-Federation in Erscheinung). Dieser äußert sich wie folgt (Die nun kommenden Schritte sind theoretisch, nicht nachmachen!):
- Wir klicken im Topology Builder auf den Edge Pool und veranlassen das Upgrade
- Wir legen wieder auf dem ersten Edge-Server die Disk ein und starten das Setup
- Das Setup wird bei Schritt 12 – das ist der Schritt mit dem SQL Management Studio – eventuell erstmal wieder wegen der RTC-Datenbank meckern, sobald dies aber gefixt ist, aus einem ganz anderen Grund: Es wurde kein gültiges Zertifikat für den XMPP-Dienst gefunden. Diese Aussage ist soweit schon korrekt, schließlich verwenden wir keine XMPP-Federation. Dumm nur, dass es ohne Zertifikat gar nicht weiter geht.
- Nun müssen wir dafür Sorge tragen, dass ein sich mitten in einem Update befindlicher Server irgendwie noch die XMPP-Rolle annimmt, diese installiert, so dass wir dann nach dem Anwenden eines Zertifikats auf diesen Dienst das Setup fortführen können. Sämtliche Versuche, die Replikation anzustoßen, werden fehlschlagen.
- Kurz gesagt, es ist möglich und ich werde auch hier kurz aufschreiben, wie man es zu erledigen hat. Wir werden aber den Bug in der ausführlichen Anleitung gleich gezielt umschiffen. Wenn man sich also in den Schlingen des Bugs verfangen hat, geht man folgendermaßen vor:
- Erneut den Topology-Builder auf dem FrontEnd-Server oder der neuen MGMT-Maschine aufmachen und erst über die Properties des Edgepools generell die XMPP-Federation aktivieren
- Dann über die Properties der Site nochmal die XMPP-Federation starten.
- Anschließend die Topology publishen
- Über den Befehl Export-CsConfiguration -FileName “<Pfad>\export.zip” die Topologie exportieren.
- Auf dem Edge-Server nun den Deployment Wizard öffnen. Er wird uns sagen, dass momentan ein Setup läuft und wir es nur noch mit dem Deployment Wizard beenden können. Das passt aber, somit bestätigen wir das.
- Nun klicken wir auf Install or Update […] und führen Step 1 erneut aus. Er wird dann die exportierte Zip-Datei öffnen wollen. Nachdem wir ihm diese gegeben haben, arbeitet er kurz im Hintergrund ein paar Dinge ab.
- Danach führen wir Step 2 aus, der uns den XMPP-Dienst installieren wird und anschließend den bereits bekannten Fehler auswirft.
- Nun können wir über Step 3 dem XMPP-Dienst ein Zertifikat hinzufügen
- Abschließend können wir mit Step 2 die Installation abschließen. Nochmal gut gegangen.
— BUG ENDE —
Um den Bug gleich zu umschiffen, werden wir folgendermaßen vorangehen:
Wir öffnen auf dem FrontEnd-Server oder auf dem (temporären) Management-Server den Topology Builder. Im ersten Schritt werden wir nun nur die XMPP-Dienste aktivieren. Dazu öffnen wir die Properties des Edge-Pools und setzen den Haken bei XMPP Federation. Anschließend müssen wir noch auf der Site in den Properties die Einstellung ebenfalls setzen. Auch hier heißt unser Haken Enable XMPP Federation. Im Anschluss daran werden wir die Topologie publishen. Mittels dem Befehls
Get-CsManagementStoreReplicationStatus
kann geprüft werden, ob die Änderungen schon auf dem Edge-Server angekommen sind. Sobald unter UpToDate der Wert “true” zu finden ist, sind die Änderungen durch. Nun können wir auf dem Edge-Server den Deployment Wizard öffnen, um über den Knopf Install or Upgrade Lync 2013 Server System auf Setup or Remove Lync 2013 Server Components klicken zu können. Nun rattert das Setup schnell durch und wird XMPP aktivieren. Dies können wir dann über Request, Install or Assign Certificates mit einem Zertifikat versehen. Idealerweise natürlich einfach mit dem bestehenden.
Nachdem das erledigt ist, beginnt die alte Routine, bekannt von den FrontEnd-Servern: Über den Skype Topology Builder rechtsklicken wir auf den Edge-Pool und wählen Upgrade to Skype for Business Server 2015… . Anschließend publishen wir die Topologie.
Nun gehen wir auf den Edge-Server und führen folgenden Befehl aus:
Stop-CsWindowsService
Anschließend legen wir dort das Skype for Business-Image ein. Auf dem Laufwerk angelangt starten wir wieder unter Setup\AMD64 die Setup.exe, bestätigen das Lizenzabkommen und der gewohnte Installer startet durch. Auch hier wieder die bekannten Probleme kurz zusammengefasst:
- Schritt 1 – Verifying upgrade readiness: Wer diesen Fehler bekommt, hat die Vorbereitung zumindest teilweise übersprungen. Hier sagt uns der Installer aber nochmal ganz genau, was ihm noch fehlt.
- Schritt 12 – Installing roles: Hier kann wieder folgender Fehler auftreten: “An error occured while applying SQL script for the feature RtcDatabaseStore. For details, see the log file […]”. In dem Logfile stand dann am Ende “The server principal ‘<Edge-Server>\RTC Component Local Group’ already exists”. Sollte der Fehler bei Ihnen auch auftreten, dann müssen Sie sich nun das oben erwähnte SQL Management Studio beziehen. Dieses installieren Sie dann lokal auf dem Edge-Server, um damit auf die RTCLOCAL-Datenbank zuzugreifen. Dort angekommen, erweitern Sie unter Security die Logins, worunter auch unten stehende Einträge zu sehen sein sollten. Diese müssen gelöscht werden. Anschließend kann im Setup der Retry-Knopf gedrückt werden.
- <Edge-Server>\RTC Components Local Group
- <Edge-Server>\RTC Local Administrators
- <Edge-Server>\RTC Local Config Replicator
- <Edge-Server>\RTC Local Read-only Administrator
- <Edge-Server>\RTC Local Group
- Sollten noch weitere Probleme auftauchen – lassen Sie uns teilhaben! Die Kommentarfunktion darf hierfür gerne hergenommen werden.
Diese Schritte sind auch wieder für jeden einzelnen Edge-Server zu wiederholen. Anschließend kann man über den Befehl
Start-CsWindowsService
auf jedem Server die Edge-Dienste starten. Somit sind auch diese abgeschlossen.
Upgrade des Mediation-Pools
Kein Bug bekannt, keine Sonderregeln zu beachten, deswegen viel Copy-Paste:
Über den Skype Topology Builder rechtsklicken wir auf den Mediation-Pool und wählen Upgrade to Skype for Business Server 2015… . Anschließend publishen wir die Topologie.
Nun gehen wir auf den ersten Mediation-Server und führen folgenden Befehl aus:
Stop-CsWindowsService
Danach legen wir dort das Skype for Business-Image ein. Auf dem Laufwerk angelangt starten wir wieder unter Setup\AMD64 die Setup.exe, bestätigen das Lizenzabkommen und der gewohnte Installer startet durch. Auch hier wieder die bekannten Probleme kurz zusammengefasst:
- Schritt 1 – Verifying upgrade readiness: Wer diesen Fehler bekommt, hat die Vorbereitung zumindest teilweise übersprungen. Hier sagt uns der Installer aber nochmal ganz genau, was ihm noch fehlt.
- Sollten noch weitere Probleme auftauchen – lassen Sie uns teilhaben! Die Kommentarfunktion darf hierfür gerne hergenommen werden.
Diese Schritte sind auch wieder für jeden einzelnen Mediation-Server zu wiederholen. Anschließend kann man über den Befehl
Start-CsWindowsService
auf jedem Server die Mediaton-Dienste starten. Somit sind auch diese abgeschlossen.
Upgrade des Persistent Chat-Pools
Auch hier soweit kein Bug bekannt, nichts besonderes, erneut straight forward:
Über den Skype Topology Builder rechtsklicken wir auf den Persistent Chat-Pool und wählen Upgrade to Skype for Business Server 2015… . Anschließend publishen wir die Topologie.
Nun gehen wir auf den ersten Persistent Chat-Server und führen folgenden Befehl aus:
Stop-CsWindowsService
Danach legen wir dort das Skype for Business-Image ein. Auf dem Laufwerk angelangt starten wir wieder unter Setup\AMD64 die Setup.exe, bestätigen das Lizenzabkommen und der gewohnte Installer startet durch. Auch hier wieder die bekannten Probleme kurz zusammengefasst:
- Schritt 1 – Verifying upgrade readiness: Wer diesen Fehler bekommt, hat die Vorbereitung zumindest teilweise übersprungen. Hier sagt uns der Installer aber nochmal ganz genau, was ihm noch fehlt.
- Sollten noch weitere Probleme auftauchen – lassen Sie uns teilhaben! Die Kommentarfunktion darf hierfür gerne hergenommen werden.
Diese Schritte sind auch wieder für jeden einzelnen Persistent Chat-Server zu wiederholen. Abschließend kann man über den Befehl
Start-CsWindowsService
auf jedem Server die Mediaton-Dienste starten. Somit sind auch diese abgeschlossen.
Upgrade der Trusted Application Servers
Dies ist in einem In-Place-Upgrade denkbar einfach, da sich für die Server weder Ziel-FQDN noch sonst was ändert. Wir nehmen also unseren Topology Builder und klicken einfach per Rechtsklick jeden Eintrag einmal an und wählen den gewohnten Eintrag Upgrade to Skype for Business Server 2015… . Anschließend noch einmal publishen und wir sind mit unserem In-Place-Upgrade so weit durch.