Exchange 2019: Witness

Oppdatert:25. februar 2025

Dette dokumentet innholder en beskrivelse av hvilke steg som er gjort for å sette opp en Windows Server 2019 Core til å fungere som en «witness»-tjener i produksjonsmiljøet.

Installasjon

Virtuell maskin

Må settes opp i et tredje bygg, slik at quorum kan opprettholdes uavhengig av hvilket bygg som blir uttilgjengelig (Exchangetjenerne er spredt på to bygg).

Den forrige tjeneren ble satt opp på Matematisk institutt sin VMware-rigg. Etter litt fram og tilbake ble den løsningen videreført, se RT#6180916.

File share

Installer fileshare, gi tilgang til Exchange Trusted Subsystem. Begge deler er allerede på plass:

Get-LocalGroupMember Administrators

    ObjectClass Name                              PrincipalSource
    ----------- ----                              ---------------
    User        EXPROD\cerebrum_exad_r            ActiveDirectory
    Group       EXPROD\Cerebrum-integration       ActiveDirectory
    Group       EXPROD\Exchange Trusted Subsystem ActiveDirectory
    ...

 Get-WindowsFeature -Name 'FS-FileServer'

    Display Name            Name          Install State
    ------------            ----          -------------
    [X] File Server     FS-FileServer     Installed

Det er ikke nok med rettigheter, brannmuren må også åpnes opp noe:

Set-NetFirewallRule -DisplayGroup "File And Printer Sharing" -Enabled True -Profile Domain
Set-NetFirewallRule -DisplayGroup "Windows Management Instrumentation (WMI)" -Enabled True -Profile Domain

Når dette er på plass, bør Exchange kunne lage nytt witness-share. På en Exchangetjener / koblet til Exchange:

Set-DatabaseAvailabilityGroup -Identity mail-dag2 `
    -WitnessServer mail-witness02.exprod.uio.no `
    -WitnessDirectory "C:\DAGWitness2"

Fremdeles på en node i Exchangeklyngen:

Get-ClusterResource

Name                                                                        State  OwnerGroup    ResourceType
----                                                                        -----  ----------    ------------
File Share Witness (\\mail-witness01.exprod.uio.no\mail-dag2.exprod.uio.no) Online Cluster Group File Share Witness

Ved første øyekast ser det ikke ut som sharet / klyngeressursen har blitt oppdatert, men ved litt nøyere sjekking så viser det seg at det bare er visningsnavnet som er feil:

Get-ClusterResource | Get-ClusterParameter

Object                                                                      Name             Value
------                                                                      ----             -----
File Share Witness (\\mail-witness01.exprod.uio.no\mail-dag2.exprod.uio.no) SharePath        \\mail-witness02.exprod.uio.no\mail-dag2.expr...
File Share Witness (\\mail-witness01.exprod.uio.no\mail-dag2.exprod.uio.no) ArbitrationDelay 6
File Share Witness (\\mail-witness01.exprod.uio.no\mail-dag2.exprod.uio.no) UserName

Fiks visningsnavnet med:

(Get-ClusterResource "File Share Witness (\\mail-witness01.exprod.uio.no\mail-dag2.exprod.uio.no)").Name = `
    "File Share Witness (\\mail-witness02.exprod.uio.no\mail-dag2.exprod.uio.no)"

Verifiser filsharet på mail-witness02.exprod.uio.no:

Get-FileShare

Name                    HealthStatus OperationalStatus
----                    ------------ -----------------
ADMIN$                  Healthy      Online
C$                      Healthy      Online
mail-dag2.exprod.uio.no Healthy      Online

Helt til slutt, skru av virusskanning for sharet:

Set-MpPreference -ExclusionPath "C:\DAGWitness2\"

Det er også mulig å få en enda bedre bekreftelse på hvilken witness som er i bruk, ved å legge til en sekundær/alternativ witness-tjener for DAG'en. Da vil Get-DatabaseAvailabilityGroup vise hvilken witness som er aktiv:

Set-DatabaseAvailabilityGroup -Identity mail-dag2 `
    -AlternateWitnessServer mail-witness01.exprod.uio.no `
    -AlternateWitnessDirectory "C:\DAGWitness2\mail-dag2.exprod.uio.no"

Set-DatabaseAvailabilityGroup -Identity mail-dag2 `
    -AlternateWitnessServer:$null -AlternateWitnessDirectory:$null

Det kan også være lurt å sjekke at det ligger filer i witness-mappen på witness-tjeneren.

Diverse

Lag en mappe for midlertidige filer:

mkdir C:\Temp