Exchange 2019 CU, és SU frissítés

Az alábbiakban bemutatom, hogy lehet az Exchange Cumulative Update (összegző frissítést), és SU-t (bizonsági updatet) szabályosan feltelepíteni. Itt fontos megjegyezni, hogy két tagú DAG (database availability group)-ról eseik szó, ahol nincs thirdparty SMTP load balancer.

Természetesen .NET Framework függő, hogy a CU telepíthető-e az infrasturktúránkra, például, ha  .NET Framework 4.8- as van a szervereken, akkor tudunk frissíteni a legújabb CU 13-as verzió-ra, amennyiben alacsonyabb a verzió akkor ez nem lehetséges, és .NET Framework update is kell. A  .NET Framework követelményeknek utána kell mindig nézni, jelen esetben a lenti tesztnél már 4.8 volt fent, és CU 12 ről kezdtem az updatet.

A tesztkörnyezet:

Aktuális Exchange verzió lekérdezése:

Exchange paracskészlet betöltése PowerShell ISE-be:

				
					Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn
				
			

Exchange verzió lekérdezése a szervereinkről:

				
					$ExchangeServers = Get-ExchangeServer | Sort-Object Name
ForEach ($Server in $ExchangeServers) {
    Invoke-Command -ComputerName $Server.Name -ScriptBlock { Get-Command Exsetup.exe | ForEach-Object { $_.FileversionInfo } }
}
				
			

Legfrisebb telepítőkészletek letöltése:

Az internetről, Microsoft -tól le kell tölteni a legfrisebb szoftver-eket:

https://learn.microsoft.com/en-us/exchange/new-features/build-numbers-and-release-dates?view=exchserver-2019

Legfrisebb CU (egész Exchange 2019 iso-t tartalmazza):

A hozzátartozó legfrisebb SU (security update):

Mindkét szerverre, DAGServer1, és DAGServer2 -re is fel kell másolni, odakészíteni.

Active Directory előkészítése

Meg kell nézni az interneten az adott összegző update AD verzió követelményeit (Microsoft hivatalos oldal):

Az alábbi parancsokkal lehet lekérdezni a három féle verzió számot (Scheme, Forest, Domain):

				
					Exchange Schema Version

$sc = (Get-ADRootDSE).SchemaNamingContext
$ob = "CN=ms-Exch-Schema-Version-Pt," + $sc
Write-Output "RangeUpper: $((Get-ADObject $ob -pr rangeUpper).rangeUpper)"
RangeUpper: 17003


				
			
				
					Exchange Object Version (forest)

$cc = (Get-ADRootDSE).ConfigurationNamingContext
$fl = "(objectClas=msExchOrganizationContainer)" # itt objectClass= -t kell írni, a wordpress-emnek nem tetszett így
Write-Output "ObjectVersion (Configuration): $((Get-ADObject -LDAPFilter $fl -SearchBase $cc -pr objectVersion).objectVersion)"
ObjectVersion (Configuration): 16759
				
			
				
					 Exchange Object Version (domain)
 
$dc = (Get-ADRootDSE).DefaultNamingContext
$ob = "CN=Microsoft Exchange System Objects," + $dc
Write-Output "ObjectVersion (Default): $((Get-ADObject $ob -pr objectVersion).objectVersion)"
ObjectVersion (Default): 13242
				
			

Először az Exchange telepítő-ből az alábbi CMD ben futtatott parancsokkal Enterprise + Scheme admin jogosultságokkal rendelkező rendszergazda felhasználóval frissíteni kell az AD scheme-t (AD objektumok, és azok hivatkozásait tartalmazó adatbázis), Forest, és Domain-t. Abban az esetben, ha a fent vizsgált verzió számok nem felelnek meg pontosan a telepíteni kívánt CU követelményeinek. 

Intézőből be kell tölteni a CU-ISO -ját, és a fent tárgyalt rendszergazda user nevében el kell indítani egy CMD ablakot:

(fontos, hogy a betöltött ISO meghajtójára át kell lépni, pl. F:, és onnan kell futtatni az alábbi parancsokat)

				
					setup.exe /PrepareSchema /IAcceptExchangeServerLicenseTerms_DiagnosticDataON

setup.exe /PrepareAD /IAcceptExchangeServerLicenseTerms_DiagnosticDataON

setup.exe /PrepareDomain /IAcceptExchangeServerLicenseTerms_DiagnosticDataON
				
			

Amennyiben sikeresen lefut mind három parancs, a fent megjelölt Scheme, Forest, és Domain verziókat le kell kérdezni újra, és ha az megegyezik az adott CU interneten ellenőrzött verziószámaival csak akkor lehet tovább menni!

DAGServer1 (DAG első tagjának előkészítése maintenace mód-hoz)

Server Hub transport (levélforgalom írányításáért felelős) komponens draining módba állítani, és az üzenet átirányítás a másik szerverre:

				
					Set-ServerComponentState -Identity DAGServer1 -Component HubTransport -State Draining -Requester Maintenance

Redirect-Message -Server DAGServer1 -Target DAGServer2

Restart-Service MSExchangeTransport
				
			

Maintenance módba állítás, és vizsgálat:

				
					cd "C:\Program Files\Microsoft\Exchange Server\V15\Scripts"

.\StartDagServerMaintenance.ps1 -ServerName DAGServer1 -MoveComment Maintenance -PauseClusterNode

Set-ServerComponentState DAGServer1 -Component ServerWideOffline -State Inactive -Requester Maintenance

Get-MailboxServer DAGServer1 | Format-List DatabaseCopyAutoActivationPolicy
Get-Queue
				
			
UPGRADE:

Abból a CMD ablakból ahonnan a scheme updatet is futtattuk el kell indítani a frissítést, itt is az ISO meghajtóján a gyökér-ben kell lennünk, pl. F:

				
					Setup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataON /Mode:Upgrade
				
			

A végén ki kell írnia, hogy sikeresen lefutott (SUCCESSFUL), bő fél óra körübelül mire befejezi (teszt rendszeremben ennyi volt, de környezet függő természetesen).

Security Update telepítése, itt csak next next finish, a végén server restart:

Maintenance módból való kilépés:
				
					cd "C:\Program Files\Microsoft\Exchange Server\V15\Scripts"
.\StopDagServerMaintenance.ps1 -serverName DAGServer1

Set-ServerComponentState -Identity DAGServer1 -Component HubTransport -State Active -Requester Maintenance
Set-ServerComponentState DAGServer1 -Component ServerWideOffline -State Active -Requester maintenance

Get-ServerComponentState -id DAGServer1
				
			

Nagyon fontos, hogy az 5. sorban levő powershell parancs eredményét ellenőrizzük, mert a komponenseknek Active módba kell visszajönnie, ha ez nem történik meg, nem tudjuk a DAG másik tagján is folytatni a karbantartást.

Itt látható, hogy az összes fő komponens visszajött active-ba, a maintenance módból való kilépés megtörtént.

Tesztelő parancsok:
				
					Get-ClusterNode (on DAG members)
Test-ServiceHealth
Test-MAPIConnectivity
Get-MailboxDatabaseCopyStatus
Test-ReplicationHealth
				
			
Látható, hogy a DAG egyes tagja már frisebb mint a kettes:

DAGServer2 (DAG második tagjának előkészítése maintenace mód-hoz):
Ugyan azt kell végig vinnünk mint az egyes tagon, nincs különbség, természetesen a Powershell parancsoknál ki kell cserélnünk a szerver nevét, DAGServer1 -ről, DAGServer2-re (nyilván az adott Exchange szerverek hosztneve behelyettesítendő)
 
Amennyiben végigvittük a lépéseket a kettes tagon, és újra lekérdezzük a verzió számokat, immár ugyan azon a verzión kell lenniük.
 
 
Ha mindent jól csináltunk, akkor meg kell egyezniük a legfrisebb CU build number számával:
 

Karbantartási utáni feladatok:
Adatbázisok újraeleosztása a DAG tagjai között:
				
					cd "C:\Program Files\Microsoft\Exchange Server\V15\Scripts"
.\RedistributeActiveDatabases.ps1 -DagName DAGServer1 -BalanceDbsByActivationPreference:$True
				
			

Outlook kliens csatlakozások tesztelése, Outlook web access tesztelése, mail flow (levél küldés, fogadás tesztelése), ha van anonymous levélküldés tesztelése telnet -el. Amennyiben hybrid Exchange mailbox migrációk tesztelése felhő, és földi rendszer között oda – vissza. Outlook elérhetőségi információk tesztelése (presence).