Příprava instalace
Zjištění aktuální verze
Verze a čísla sestavení si nejlépe zobrazíme pomocí Exchange Management Shell.
[PS] C:\>Get-ExchangeServer | FT Name, Edition, AdminDisplayVersion -AutoSize Name Edition AdminDisplayVersion ---- ------- ------------------- MAIL1 Enterprise Version 15.1 (Build 1531.3) MAIL2 Enterprise Version 15.1 (Build 1591.10)
Přiřazení čísla verze a Cumulative Update nalezneme v článku Exchange Server Updates: build numbers and release dates.
Stažení instalačních souborů
Instalace aktualizace Cumulative Update (CU) obsahuje kompletní instalaci Exchange serveru. Díky tomu obsahuje všechny předchozí CU, takže instalujeme vždy poslední verzi. Když se instalace spustí na serveru s Exchange, tak automaticky provádí aktualizaci.
Stahovaný soubor je typu ISO (třeba ExchangeServer2016-x64-cu10.iso
) o velikosti okolo 6 GB. Můžeme jej vypálit na DVD, namapovat nebo rozbalit a instalaci spouštíme pomocí setup.exe
.
Odkazy na stažení všech dostupných Cumulative Update (CU) nalezneme v článku Exchange Server Updates: build numbers and release dates.
Instalace Cumulative Updates (CUs)
Oficiální popis, včetně obrázků, se nachází v Upgrade Exchange to the latest Cumulative Update.
Přepnutí serveru do Maintenance Mode
Pokud máme vysokou dostupnost a používáme Database Availability Group (DAG), tak by měl jít upgrade provést postupně na jednotlivých serverech, bez většího výpadku pro klienty. Server, který chceme aktualizovat, musíme nejprve přepnout do Maintenance Mode.
Oficiální dokumentace Performing maintenance on DAG members. Alternativní návody Exchange Maintenance Mode, Gracefully Patching Exchange 2016, 7 Steps to Maintaining Exchange Server Without User Impact.
Microsoft dokumentace uvádí, že je možno použít skripty (pro část operací), které jsou součástí instalace Exchange serveru. V popisech na internetu se většinou ručně spouští jednotlivé příkazy. Vhodnou metodu si tedy každý může vyzkoušet/zvolit sám.
cd $ExScripts .\StartDagServerMaintenance.ps1 -ServerName <ServerName> .\StopDagServerMaintenance.ps1 -serverName <ServerName>
Komunikace z internetu
Před přepnutím do módu údržby provedeme
- na Firewallu zablokujeme komunikaci na upgradovaný server (pokud máme Load Balancing, tak směrujeme pouze na ostatní)
Interní komunikace
Co mi není jasné a nenašel jsem k tomu žádné informace. Jak zajistit, aby Outlook klienti uvnitř interní sítě, fungovali relativně bez výpadku. Když se aktivuje databáze, kde má uživatel schránku, na jiném serveru, tak se Outlook na nějakou dobu odpojí (ale většinou se relativně rychle opět připojí). Ale i když je server v módu údržby, tak následně při vypnutí služeb nebo restartu, se některým uživatelům Outlook odpojí a trvá, než se připojí k jinému serveru.
Je to v konfiguraci, kdy se používá DNS Load Balancing a 2 servery s DAGem. Tedy adresa mail.firma.local
obsahuje dvě IP adresy a na tuto adresu se připojuje Outlook pomocí MAPI over HTTP. Na klientovi je většinou vidět (Resource Monitor - Network), že má navázané session na oba servery, ale komunikace jde převážně na jeden. Podle informací, že Outlook podporuje DNS Load Balancing, bych chápal, že při nedostupnosti služby na jedné IP adrese by měl vyzkoušet další. Ale v praxi to dost trvá. Možná to jde nějak nastavit nebo to MS moc neřeší a chce aby i interně byl Load Balancer.
Maintenance Mode
Následuje pouze výpis jednotlivých PowerShell příkazů pro přepnutí do módu údržby.
# vyprázdnění transportní fronty, přestane přijímat zprávy Set-ServerComponentState MAIL1 -Component HubTransport -State Draining -Requester Maintenance # restart transportní služby, aby okamžitě započalo uvolňování fronty Restart-Service MSExchangeTransport Restart-Service MSExchangeFrontEndTransport # přesměrování nevyřízených zpráv na jiný server Redirect-Message -Server MAIL1 -Target MAIL2.firma.local # pozastavení uzlu (Node) v DAGu Suspend-ClusterNode MAIL1 # přesun aktivních DB na jiné členy DAGu Set-MailboxServer MAIL1 -DatabaseCopyActivationDisabledAndMoveNow $True # zkontrolujeme, že používáme politiku Unrestricted (druhá varianta IntrasiteOnly bude asi pouze výjimečně, ale případně # ji použijeme při návratu) Get-MailboxServer MAIL1 | Select DatabaseCopyAutoActivationPolicy # nastavíme politiku Blocked, kdy se nemohou DB aktivovat na tomto serveru Set-MailboxServer MAIL1 -DatabaseCopyAutoActivationPolicy Blocked # ověříme, že se všechny DB přesunuly (žádná není mountovaná zde), přesun trvá řadu minut, pokračujeme až po přesunu Get-MailboxDatabaseCopyStatus -Server MAIL1 | Where {$_.Status -eq "Mounted"} # přepneme server do Maintenance Mode Set-ServerComponentState MAIL1 -Component ServerWideOffline -State Inactive -Requester Maintenance
Instalace upgradu
Průběh upgradu je stejný jako čistá instalace, ale detekuje se, že jde o update a tudíž nedostaneme skoro žádné dotazy.
Základní kroky instalace:
- dopředu bychom měli zkontrolovat, že vše dobře funguje
- Microsoft doporučuje před instalací restartovat server (může to i zrychlit následující upgrade)
- spustíme setup.exe
- můžeme zjistit, zda nejsou online k dispozici aktualizace
- soubory se zkopírují na lokální disk do
%WinDir%\Temp\ExchangeSetup
- detekuje se, že jde o upgrade
- musíme souhlasit s licenčními podmínkami
- poté dojde ke kontrole připravenosti, zda jsou splněny všechny předpoklady, pokud je nalezena nějaká chyba, tak můžeme zvolit pouze Retry, pokud ji odstraníme (například může být vyžadována novější verze .NET Framework, je zde i odkaz na web pro instalaci)
- při instalaci některých Cumulative Update je potřeba aktualizovat AD Schema, detekuje se, zda má uživatel dostatečná práva, pokud ne, tak nemůžeme pokračovat v instalaci (můžeme spustit znovu pod jiným uživatelem nebo rozšíření provést zvlášť)
- spustí se instalace (disabluje služby, odstraní původní soubory, nainstaluje nové)
- upgrade trvá dlouho (CU11 u mne cca 50 minut, pak restart - než vše naběhne a srovná se DAG cca 10 minut), na začátku instalace se vypnou služby, takže Exchange celou dobu nefunguje
- na konci je vždy třeba provést restart serveru
Přepnutí serveru zpět do provozu z Maintenance Mode
Opět jen výpis příkazů pro uvedení aktualizovaného serveru do provozu.
# přepneme server zpět z Maintenance Mode Set-ServerComponentState MAIL1 –Component ServerWideOffline –State Active –Requester Maintenance # obnovíme uzel v DAGu Resume-ClusterNode –Name MAIL1 # pokud jsme měli nastavenu politiku IntrasiteOnly, tak použijeme tu, jinak Unrestricted Set-MailboxServer MAIL1 –DatabaseCopyAutoActivationPolicy Unrestricted # povolíme Database Copy Activation Set-MailboxServer MAIL1 –DatabaseCopyActivationDisabledAndMoveNow $false # aktivujeme službu Hub Transport, aby přijímala zprávy Set-ServerComponentState MAIL1 –Component HubTransport –State Active –Requester Maintenance # restartujeme transportní služby, aby se změny provedly hned Restart-Service MSExchangeTransport Restart-Service MSExchangeFrontEndTransport
Volitelně můžeme spustit skript na rozložení aktivních DB kopií na servery.
cd $ExScripts .\RedistributeActiveDatabases.ps1 -BalanceDbsByActivationPreference -Confirm:$false
Pokud server korektně funguje.
- na Firewallu povolíme komunikaci
Kontrolní testy
Můžeme použít nějaké cmdlety pro kontrolu, že vše v pořádku funguje.
Get-ClusterNode Test-ServiceHealth Test-MAPIConnectivity –Server MAIL1 Get-MailboxDatabaseCopyStatus * | Sort-Object Name | Select Name, Status, ContentIndexState Get-DatabaseAvailabilityGroup | Select-Object -ExpandProperty:Servers | Test-ReplicationHealth Get-MailboxServer MAIL1 | Select DatabaseCopyAutoActivationPolicy (Get-ServerComponentState -Identity MAIL1 -Component ServerWideOffline).LocalStates
Exchange Server Health Checker
Užitečný skript, který kontroluje nastavení Exchange serveru podle Best Practice, bezpečnostní nastavení a zranitelnosti. Poslední verze ke stažení Exchange Health Checker.
.\HealthChecker.ps1 .\HealthChecker.ps1 -BuildHtmlServersReport
Zdravím, je potřeba při instalaci CU (EX 2016) zálohovat nastavení IIS? Někde jsem se dočetl, že je to
U EX2010 CU šly vždy přes WSUS a nikdy jsem IIS nezálohoval. Jen zkontroloval funkčnost a nové vylepšení.
Děkuji Milan B.
Aktuálně se řeší zranitelnosti, které byly masivně zneužity. MS má určitý testovací nástroj, zda je server zranitelný.
github.com/microsoft/CSS-Exchange/tree/main/Security
Dobrý den, občas jsem viděl na fórech, že před instalací CU ještě doporučují zadat v PS skript "Set-ExecutionPolicy unrestricted"
Zadáváte to také?
Děkuji
odpověď na [3]Vašek K: To záleží na tom, jaké máte nastavení pro spouštění skriptů. V některých případech to potřeba je.