Exchange direktes Update

Auf den Seiten Updates für Exchange 2013, Updates für Exchange 2016 und Exchange Updates und .NET Service Pack habe ich die Problematik schon beschrieben, dass bestimmte Exchange Updates auch bestimmte NET-Updates erfordern. Aufgrund der Policy von Microsoft nur die beiden vorherigen Versionen eines Updates zum Download und als Supported anzubieten, haben sehr alte installierte Versionen ein Update-Problem. Sie können den Zwischenschritt nicht mehr herunter laden.

Die Zwickmühle

Wer heute z.B.: noch Exchange 2013 CU12 oder früher mit Net 4.5.x betreibt, muss laut Tabelle auf Exchange Updates und .NET Service Pack zuerst auf CU15 mit Support über NET 4.6.1 aktualisieren, um dann CU 19/20 installieren zu können. Dieses unterstützt erst NET 4.7.1 auf dem dann CU 21 installiert werden kann. Auch Microsoft scheibt dies auf:

Exchange 2013 CU16 and later require .NET Framework 4.6.2. Upgrade your servers to .NET Framework 4.6.2 before you install Exchange 2013 CU16 or you'll receive an error. If .NET Framework 4.5.2 is installed on your Exchange servers, upgrade your servers to Exchange 2013 CU15 before installing .NET Framework 4.6.2.
Quelle: Exchange 2013 prerequisites  https://technet.microsoft.com/en-us/library/bb691354(v=exchg.150).aspx

When upgrading Exchange from an unsupported CU to the current CU and no intermediate CUs are available, you should first upgrade to the latest version of .NET that's supported by Exchange and then immediately upgrade to the current CU. This method doesn't replace the need to keep your Exchange servers up to date and on the latest supported CU. Microsoft makes no claim that an upgrade failure will not occur using this method, which may result in the need to contact Microsoft Support Services.
Quelle: https://docs.microsoft.com/en-us/exchange/plan-and-deploy/supportability-matrix?view=exchserver-2019#microsoft-net-framework

Ein Update einer sehr alten Version würde also zu vielen Installationen und Reboots führen.

Allerdings ist beim Schreiben des Artikels (Sep 2018) das Exchange 2013 CU21 aktuell und auf den offiziellen Seiten von Microsoft gibt es nur noch CU20 und CU19.

Microsoft unterstützt mit Exchange immer nur das aktuelle und die beiden vorherigen Updates. Da die Updates ca. alle 3 Monate kommen, sollten Sie einen Server nicht älter als 9 Monate hinsichtlich der Updates betreiben. Eine zügige und aktuelle Konfiguration macht natürlich immer Sinn aber wenn Sie keinen Zugriff mehr auf Zwischenupdates haben, ,dann können Sie eben auch nicht mehr diesen "Weg" durchschreiten.

Direktes Updates

Der offizielle und von Microsoft natürlich favorisierte Weg ist der, dass Sie Updates für Windows, NET und auch Exchange zeitnah installieren. Wer also schon mehr als zwei Versionen zurück liegt, hat seit mehr als 6 Monaten keine Updates mehr installiert. Hier sollten Sie wirklich überlegen, ob dies ein adäquates Vorgehen ist. Sollte hier ein Ausfall, Datenverlust o.ä. passieren und man ihnen einen Zusammenhang mit fehlenden Updates nachweisen können, dann sind durchaus auch Abmahnungen und Schadensersatzansprüche denkbar.

Aber sie sind ja nun in der Situation ihren vorhandenen Windows und Exchange Server auf einen aktuellen Stand zu bringen. Und es gibt Hilfe denn auch ein direktes Update auf die aktuellste Version ist über einen Kniff möglich. Die beiden Aussagen bleiben natürlich unberührt:

  • Ein zu aktuelle Exchange Patchstand ist auf einem zu alten NET-Framework nicht installierbar
    Das Exchange Setup verhindert dies in den meisten Fällen
  • Ein zu neuer NET-Framework-Stand kann die Funktion eines zu alten Exchange Patchstand stören
    Im einfachsten Fall starten die Dienst nicht. Schlimmer ist der Verlust von Datenbanken oder übertragenen Mails aufgrund von Fehlern

Die Versionen müssen also zueinander passen, damit nichts passiert. Sie wissen aber auch, dass Sie bei einer Neuinstallation natürlich immer zuerst den Windows Server auf den aktuellen Stand bringen und dann Exchange in der  aktuellsten Version installieren. Damit kann man einen Weg ableiten:

  • Unter einem inaktiven Exchange Stand können Windows und NET Framework aktualisiert werden.

Seit Exchange 2013 sind die Updates ja sowieso "Vollinstallationen", die bei der Installation die bestehenden Programmteile entfernen und dann die neue Version installieren. DA wird also nicht mehr wie früher "gepatched", sondern einfach neu installiert. Die Einstellungen und Datenbanken werden natürlich soweit möglich beibehalten. Einige Anpassungen, z.B. in OWA, sind ggfls. wieder zu wiederholen.

Wir müssen also bei dem Update nur aufpassen, dass der "alte Exchange Code" nie aktiv wird, wenn die neueren Windows und NET-Framework Updates installiert wurden. Das sollte aber zu schaffen schein.

Checkliste zur Installation

Der Trick besteht darin, den Start der Exchange Dienste zu unterbinden, bis die Versionen wieder zueinander kompatibel sind ohne das Exchange Setup zu stören. Microsoft hat erst ziemlich spät zu dem Fall ein Statement veröffentlicht:

When upgrading Exchange from an unsupported CU to the current CU and no intermediate CUs are available, you should upgrade to the latest version of .NET that’s supported by Exchange first and then immediately upgrade to the current CU. This method doesn’t replace the need to keep your Exchange servers up to date and on the latest, supported, CU. Microsoft makes no claim that an upgrade failure will not occur using this method, which may result in the need to contact Microsoft Support Services.
Quelle: Exchange Server supportability matrix https://docs.microsoft.com/en-us/Exchange/plan-and-deploy/supportability-matrix#microsoft-net-framework

Es gibt nirgendwo bei Microsoft eine öffentliche Quelle, dass dieses  Vorgehen gültig und schadlos ist. Bei mir hat es bislang geklappt und für alle Fälle hatte ich immer noch ein Backup und einen Partner in der DAG und hätte notfalls den Server eben komplett neu mit der aktuellsten Exchange Version aufgesetzt.

Folgende Checkliste nutze ich in Kurzform. Beachten Sie dazu auch Exchange 2016 Update Checkliste

Schritt Status

Vorarbeiten

Stellen sie sicher, dass ihr Monitoring die geplante Unterbrechung nicht als Fehler meldet, Personen aktiviert oder selbständig Gegenmaßnahmen und Reparaturen startet. Der beste Weg ist dabei den Exchange Server in "Wartung" zu setzen. Dann wissen das auch alle anderen Server

set-servercomponentstate `
   -Component serverwideoffline `
   -State inactive `
   -Requester Maintenance

Exchange Dienste beenden

Normalerweise macht das das Exchange Setup auch, aber das Setup startet die Dienste am Ende wieder. Und das ist in diesem Fall natürlich nicht gewollt, bis alles zueinander passt

Exchange Dienst "deaktivieren

Bei den späteren Installation von Windows und NET Updates muss sichergestellt sein, dass die Exchange Dienste auf jeden Fall nicht gestartet werden. Sie sollten sich irgendwo merken, welche Startart welcher Dienst hatte.

Installation des Ziel NET-Frameworks

Nun können wir wohl gefahrlos das aktuell gewünschte NET-Framework installieren. Exchange "läuft" ja nicht und wird auch nicht gestartet. Dafür wird aber nach der Installation des Frameworks und etwaiger Updates ein Neustart des Servers erforderlich sein. Das ist aber unkritisch, da die Exchange Dienste gestoppt und weiterhin deaktiviert sind.

Startart der Exchange Dienste wieder herstellen aber NICHT starten

Ehe wir das Exchange Update starten, müssen wir die anfangs vorhandene Konfiguration der Startart wieder herstellen. Das Exchange Update "merkt" sich nämlich diese Einstellungen vor dem Update, deaktiviert dann selbst die Dienste und restauriert Sie nach dem Abschluss der Installation wieder.

Die Dienste werden aber nicht gestartet und sollten auch nicht gestartet werden, denn nun haben wir ja eine "alte" Exchange Version mit einem zu neuen NET-Framework. Würden die Dienste gestartet, dann würden diese im einfachen Fall einfach wieder abbrechen. Unangenehmer wäre, wenn sie "irgendwie" halb funktionieren und die Umgebung stören oder sogar Daten korrumpieren würden.

Aktuelles Exchange CU installieren

Damit Exchange auch wieder einen "Support"-Status kommt, wird es nun Zeit das aktuelle CU zu installieren. Das Setup von Exchange merkt es sich die "Startart" der Dienste ehe es die Dienste wieder deaktiviert. Daher ist es wichtig, dass wir vorher die Startart wieder hergestellt haben. Das Setup sollte problemlos mit dem aktuellen NET-Framework arbeiten und die alte Exchange Version dann entfernen und die aktuelle und mit dem NET-Framework kompatible Version installieren. Das Setup stellt danach dies am Anfang deaktivierten Dienste wieder auf den ursprünglichen Wert und startet die Dienste. Wenn der ursprüngliche Wert noch ein "deaktiviert" war, dann kann das Setup die Dienste ebenfalls nicht starten und läuft auf einen Fehler.

Monitoring reaktivieren

Nun ist es an der Zeit die Funktionsfähigkeit des Servers zu überprüfen. Was liegt näher als dies durch das vorhandene Monitoring durchführen zu lassen. Dazu zählt natürlich auch das Exchange eigene Monitoring.

set-servercomponentstate `
   -Component serverwideoffline `
   -State active `
   - Requester Maintenance

So sollen Sie mit ein1-2 Neustarts und einer Exchange Update Installation direkt auf den aktuellen Stand kommen. Die Exchange Updates zwischen der alten und der nun aktuellen Installation ersparen Sie sich.

Dieser Weg "sollte" auch gehen aber ich habe bei Microsoft noch keine entsprechende Beschreibung dazu gefunden. Wer einen "Single Server" hat, sollte sich doch eher an den offiziellen Weg halten. Wer aber mehrere Server in einer DAG betreibt, sollte kein Problem mit dieser Art haben. Im schlimmsten Fall macht man eben eine Recovery-Installation des Servers

Exchange ist hier durch die CU-Verteilung einer Komplettinstallation sicher besser aufgestellt als z.B. Skype for Business. Bei Skype for Business gibt es nur "RUs", also Rollup, die auf dem alten RTM-Installationsimage aufsetzen. Aber auch hier starten die Dienste von Skype for Business nach der Installation nicht automatisch. Sie können also die RTM-Version erst installieren und dann umgehend das letzte Update nachinstallieren um dann mit dem NET-Framework fortzufahren. Erst ganz am Ende, wenn alle Komponenten aktuelle sind, werden die Dienste dann gestartet.

Weitere Links