Exchange Server 2013: Installazione Prodotto in Alta Affidabilità

Microsoft Exchange Server

In questi articoli andiamo a vedere come configurare Exchange Server 2013 in Alta Affidabilità, partendo dall’installazione di un singolo server fino alla configurazione di un bilanciatore e di un SMTP Relay Agent. Nel primo articolo ci occuperemo della parte Exchange, nel secondo del Bilanciatore e nel terzo del RA!

Tralasciamo la descrizione teorica dei DAG, Exchange in HA, Bilanciatori e tutto il resto e… partiamo subito con il lab!

Architettura del Lab

Il lab che andremo a realizzare comprende tutto ciò che server per poter studiare le funzionalità di Exchange Server 2013. In particolare avremo:

  • Un Domain Controller (DC01)
    • Una vCPU
    • 4 GB di RAM
    • Disco C 80 GB
    • NIC1: 192.168.102.1/24
  • Due server Exchange (EXC01 e EXC02)
    • Due vCPU
    • 6 GB di RAM
    • Disco C da 80 GB S.O.
    • Disco D da 20 GB Binari di Exchange
    • Disco E da 100 GB Database
    • Disco F da 10 GB Log
    • NIC1: 192.168.102.21 e 192.168.102.22 entrambi in /24
    • NIC 2 (Privata): 192.168.200.1 e 192.168.200.2 entrambe in /30 (.252 finale!)
  • Un bilanciatore (LB01)
    • Una vCPU
    • 512 MB di RAM
    • Disco da 80 GB
    • NIC1: 192.168.102.253/24 (Management)
    • NIC2 (VIP): 192.168.102.20
  • Un firewall (FW01) opzionale!
    • Una vCPU
    • 512 MB di RAM
    • Disco da 80 GB
    • NIC1 (LAN): 192.168.102.254/24
    • NIC2 (DMZ): 192. 168.102.254/24
    • NIC3(WAN): dipende dal vostro lab!
  • Un SMTP Mail Relay in DMZ (MRA01) opzionale!
    •  Una vCPU
    • 512 MB di RAM
    • Disco da 80 GB
    • NIC1: 192.168.103.1/24

Tutti i sistemi Microsoft sono installati con Windows Server 2012 R2 aggiornato all’ultima patch. Il bilanciatore che utilizzeremo per questo LAB, ma che in realtà utilizzo anche in alcune installazioni è Zen Load Balancer in versione Community: gratuito e fa tutto quello che serve! Un’ottima alternativa è la versione gratuita di Kemp.

Come firewall… usate quello che volete! Io di solito nei lab uso Smootwall: anche questo gratuito e molto semplice da configurare e gestire.

Un discorso a parte lo merita il Relay SMTP. Exchange ha il ruolo Edge (reintrodotto con SP1) che serve proprio a questo: funziona alla grande, è integrato con il resto dell’infrastruttura (ma va!) ma… molto spesso le organizzazioni preferiscono per diversi motivi utilizzare appliance (HW o Virtuali) per questo scopo. In tal caso, se non hanno già in casa dei dispositivi e se proprio non vogliono usare il ruolo Edge, mi trovo bene a lavorare con MailCleaner. In particolare nel lab useremo la OpenSource Edition.

I Passi Necessari

A grandi linee, dopo aver approvvigionato i sistemi sul virtualizzatore che preferite, i passi necessari sono i seguenti:

  • Installazione dei sistemi operativi
  • Creazione del dominio
  • Join dei server Exchange
  • Installazione dei prerequisiti
  • Installazione Exchange nodo 1
  • Installazione Exchange nodo 2
  • Configurazione Exchange
  • Creazione e configurazione del DAG
  • Bilanciamento
  • Pubblicazione (FW e SMTP, entrambi facoltativi)

Per quest’articolo partiamo dal passo 4, lasciando a voi gli altri.

Configurazione Active Directory ed altri Prerequisiti

Il dominio usato per il lab è PMINCLOUD.COM. Per fare tutti i test servirebbe effettivamente un dominio registrato, che ci consenta di ottenere i certificati pubblici necessari. Visto he il dominio è in hosting e non volevo avere troppi problemi con i nomi già registrati di default, ho scelto di utilizzare come nome pubblico Outlook. Il namespace che utilizzerò nel LAB è unico, sia per la parte pubblica che per la parte privata della rete.

Se abbiamo installato i sistemi con Windows Server 2012 R2 non avremo nessun problema di prerequisiti a livello di AD. Come indicazione di massima tuttavia, vi consiglio di configurare (sempre) anche la Zona Inversa, assegnando i corretti range. Comunque nel dubbio controllate sempre sul TechNet i prerequisiti aggiornati per installare Exchange.

Installazione del Primo Server

Dopo aver controllato tutta la parte di AD e delle “varie ed eventuali!” possiamo partire con il primo dei due server Exchange (exc01), andando a sistemare la rete e i prerequisiti.

Configurazione delle Interfacce di Rete

In tutti i cluster Microsoft (ed Exchange non è un’eccezione) particolare attenzione va prestata alla configurazione delle schede di rete, soprattutto di quella dedicata all’heartbeat. In particolare dobbiamo fare due operazioni:

  • Verificare che l’ordine di binding sia corretto (prima la pubblica poi la privata)
  • Disabilitare i protocolli non necessari sulla privata

Per farlo andiamo in Network Connection, scegliamo il menù Advance (usate il tasto ALT per avere i menù) quindi la voce Advanced Settings

2015_06_28_Exchange-01

Figura 1 – Impostazioni Rete Avanzate

Modifichiamo l’ordine di binding (se necessario) e rimuoviamo tutti i protocolli dalla seconda. Interfaccia.

2015_06_28_Exchange-02

Figura 2 – Disattivazione Servizi

Per semplificare la futura gestione, conviene rinominare anche le schede (ad esempio… LAN e PRI).

2015_06_28_Exchange-03

Figura 3 – Rename Schede Rete

Andiamo nelle proprietà della scheda PRI, apriamo la configurazione dell’IPV4, andiamo nelle proprietà avanzate e, nel tab DNS rimuoviamo il flag Register this connection’s addresses in DNS.

2015_06_28_Exchange-04

Figura 4 – Disattivazione Registrazione DNS

Poi dal tab WINS rimuoviamo il flag Enable LMHOSTS lookup e modifichiamo i NetBIOS setting in Disable NetBIOS over TCP/IP.

2015_06_28_Exchange-05

Figura 5 – Impostazione IP Rete Heartbeat

Fatto questo verifichiamo con un ping che le due macchine si vedano sull’interfaccia di heartbeat.

Prerequisiti

Innanzitutto mentre scarichiamo la Cumulative Update 7 for Exchange Server 2013 (KB2986485) per fare l’installazione, iniziamo a portarci avanti con i prerequisiti.

Visto che utilizziamo che Windows Server 2012 R2, che installiamo entrambi i ruoli sullo stesso server e che effettueremo l’espansione dello schema direttamente dal server Exchange (e comunque è utile avere i tool di amministrazione di AD installati) apriamo la PowerShell come amministratore e lanciamo:

Install-WindowsFeature RSAT-ADDS

Install-WindowsFeature AS-HTTP-Activation, Desktop-Experience, NET-Framework-45-Features, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, RSAT-Clustering-Mgmt, RSAT-Clustering-PowerShell, Web-Mgmt-Console, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation

2015_06_28_Exchange-06

Figura 6 – Attivazione Prequisiti

Riavviamo e procediamo poi con l’installazione del .NET Framework 4.5.2 (necessario visto che stiamo installando una versione successiva alla CU7) e del Unified Communications Managed API 4.0 Runtime.

Al termine facciamo un bel riavvio e poi un po’ di Windows Update, che non fanno mai male!

Altri Piccoli Consigli

Visto che vogliamo lavorare poi in DAG, ci serve “mettere un po’ in ordine” i percorsi dei database e dei log, che devono essere uguali su entrambi i server. Apriamo un prompt dei comandi per creare i path necessari:

mkdir e:\maildb01-db

mkdir e:\maildb02-db

mkdir f:\maildb01-log

mkdir f:\maildb02-log

Inoltre è vero che lavoriamo con macchine virtuali e che è semplicissimo allargare i volumi, ma è sempre meglio fare i lab il più “aderenti” possibile alla realtà. In produzione un piccolo trucco è quello di creare un tappo, cioè un file di dimensioni arbitrarie che potremo cancellare quando il cliente ci chiamerà che ha “la posta che non funziona” perché ha riempito i dischi. Normalmente li faccio da 10 GB sui dischi dei DB e da 5 GB su quelli dei Log, ma vedete voi da quanto volete farli! Il comando che utilizzeremo il fsutil:

fsutil file createnew e:\cancellareInEmergenza10 10737418240

fsutil file createnew f:\cancellareInEmergenza5 5368709120

2015_06_28_Exchange-07

Figura 7 – Creazione File e Cartelle

OK! Ora siamo pronti per espandere la CU8 e iniziare il setup.

Setup di Exchange Server 2013

L’installazione, invece che da interfaccia grafica, la facciamo direttamente da riga di comando. In questo modo è possibile specificare sia il nime del database che viene creato in fase di installazione sia i percorsi di DB e Log.

Iniziamo con la preparazione della foresta: da un prompt dei comandi aperto come amministratore, ci spostiamo dove abbiamo scompattato i file della CU8 quindi lanciamo i seguenti comandi:

Setup /PrepareSchema /IAcceptExchangeServerLicenseTerms

Setup /PrepareAD /OrganizationName:”pmincloud” /IAcceptExchangeServerLicenseTerms

Adesso lanciamo l’installazione vera e propria (anche se in produzione dovremmo fare tutte le verifiche previste per l’espansione dello schema e la preparazione di AD: controllo delle repliche, creazione dei gruppi, Event Viewer ecc, ecc).

Dal solito prompt dei comandi, lanciamo ancora una volta il setup:

Setup /mode:Install /role:ClientAccess,Mailbox /OrganizationName:”pmincloud” /IAcceptExchangeServerLicenseTerms /TargetDir:”d:\ExchangeServer” /DomainController:dom01.pmincloud.com  /MdbName:maildb01 /DbFilePath:”E:\maildb01-db\maildb01.edb” /LogFolderPath:”F:\maildb01-log”

NB: fate attenzione agli spazi e a quello che mette il copia incolla!

2015_06_28_Exchange-08

Figura 8 – Installazione Exchange su Nodo 1

Al termine di questo comando in pratica ci troviamo con un server Exchange Server 2013 SP1 con CU8 installato!

Installazione del Secondo Server

Procediamo con l’installazione del secondo server, configurando le schede di rete, installando i prerequisiti, creando i tappi e le cartelle e lanciando il comando di setup con questi parametri:

Setup /mode:Install /role:ClientAccess,Mailbox /OrganizationName:”pmincloud” /IAcceptExchangeServerLicenseTerms /TargetDir:”d:\ExchangeServer” /DomainController:dom01.pmincloud.com  /MdbName:maildb02 /DbFilePath:”E:\maildb02-db\maildb02.edb” /LogFolderPath:”F:\maildb02-log”

Ok! That’s all folks! Abbiamo i due server up and running! Piccola controprova per i patiti delle interfacce grafiche…

2015_06_28_Exchange-09

Figura 9 – Verifica Funzionamento Exchange

Iniziamo con la configurazione!

Configurazione Minima di Exchange

In questo lab facciamo solo una configurazione minimalista, solo per averlo funzionante! Quindi andremo a configurare:

  • Accepted Domain
  • Send Connector
  • Autodiscover
  • Virtual Folder e Outlook Anywhere
  • Certificati

Creazione di un Accepted Domain

Usando un namespace “congiunto” non serve creare nessun accepted domain aggiuntivo. Dovesse comunque servire il CmdLet per farlo è:

New-AcceptedDomain -Name “agt70” -DomainName agt70.com -DomainType Authoritative

Routing verso Internet

Dopo aver detto a Exchange per quali domini accettare la posta, andiamo a dirgli come inviare la posta verso l’esterno. Supponiamo di avere già configurato in DMZ il nostro SMTP Relay Agent (con IP: 192.168.103.1 e FQDN pmail.pmincloud.com), seguendo l’articolo di windowserver.it.

Entrambi i server dovranno averlo configurato, quindi:

New-SendConnector –Name “Internet-EXC01” –AddressSpaces ‘*’ –SourceTransportServers EXC01 –DNSRoutingEnabled:$false –SmartHosts “192.168.103.1”

New-SendConnector –Name “Internet-EXC02” –AddressSpaces ‘*’ –SourceTransportServers EXC02 –DNSRoutingEnabled:$false –SmartHosts “192.168.103.1”

Controlliamo il tutto con un bel Get-SendConnector | fl.

2015_06_28_Exchange-10

Figura 10 – Elenco Connettori

Configurazione dell’autodiscover

Anche in questo caso procediamo via PowerShell. Come abbiamo detto prima, il record FQDN che utilizzeremo per il nostro Exchange è outlook.pmincloud.com.

Questo record sarà associato all’indirizzo IP del bilanciatore, e entrambi i nodi dovranno essere configurati per rispondere a outlook.pmincloud.com invece del proprio nome. Quindi prima procedere andiamo ad inserire nel DNS il record opportuno, facendo in modo che punti ad entrambi gli indirizzi IP. In pratica, almeno fino a quando non configureremo il bilanciatore utilizzeremo semplicemente il DNS Round Robin.

Se effettuiamo un rapido controllo con Get-ClientAccessServer | ft identity,AutoDiscoverServiceInternalUri possiamo notare che il valore di ciascun server punta al proprio FQDN, ad esempio https://exc01.pmincloud.com/Autodiscover/Autodiscover.xml

Procediamo con questi CmdLet:

Set-ClientAccessServer -Identity EXC01 -AutoDiscoverServiceInternalUri https://outlook.pmincloud.com/Autodiscover/Autodiscover.xml
Set-ClientAccessServer -Identity EXC02 -AutoDiscoverServiceInternalUri https://outlook.pmincloud.com/Autodiscover/Autodiscover.xml

Oppure, in modo più coinciso:

Get-ClientAccessServer | Set-ClientAccessServer -AutoDiscoverServiceInternalUri “https://outlook.pmincloud.com/Autodiscover/Autodiscover.xml”

Prima di procedere solito rapido controllo con Get-ClientAccessServer | ft identity,AutoDiscoverServiceInternalUri.

Configurazione delle Virtual Directory e degli HostName

Ok, siamo quasi alla fine della configurazione di base. Procediamo andando a configurare le Virtual Directory dei diversi servizi: ECP, EWS, ActiveSync, OAB e OWA

Configurazione Virtual Directory Esterne

Primo server (EXC01):

Set-EcpVirtualDirectory -identity "EXC01\ECP (Default Web Site)" -externalUrl https://outlook.pmincloud.com/ecp
Set-WebServicesVirtualDirectory -identity "EXC01\EWS (Default Web Site)" -externalUrl https://outlook.pmincloud.com/EWS/Exchange.asmx
Set-ActiveSyncVirtualDirectory -identity "EXC01\Microsoft-Server-ActiveSync (Default Web Site)" -externalUrl https://outlook.pmincloud.com/Microsoft-Server-ActiveSync
Set-OabVirtualDirectory -identity "EXC01\OAB (Default Web Site)" -externalUrl https://outlook.pmincloud.com/OAB
Set-OwaVirtualDirectory -identity "EXC01\OWA (Default Web Site)" -externalUrl https://outlook.pmincloud.com/owa
Set-PowerShellVirtualDirectory -identity "EXC01\PowerShell (Default Web Site)" -externalUrl https://outlook.pmincloud.com/powershell
Secondo server (EXC02):
Set-EcpVirtualDirectory -identity " EXC02\ECP (Default Web Site)" -externalUrl https://outlook.pmincloud.com/ecp
Set-WebServicesVirtualDirectory -identity "EXC02\EWS (Default Web Site)" -externalUrl https://outlook.pmincloud.com/EWS/Exchange.asmx
Set-ActiveSyncVirtualDirectory -identity "EXC02\Microsoft-Server-ActiveSync (Default Web Site)" -externalUrl https://outlook.pmincloud.com/Microsoft-Server-ActiveSync
Set-OabVirtualDirectory -identity "EXC02\OAB (Default Web Site)" -externalUrl https://outlook.pmincloud.com/OAB
Set-OwaVirtualDirectory -identity "EXC02\OWA (Default Web Site)" -externalUrl https://outlook.pmincloud.com/owa
Set-PowerShellVirtualDirectory -identity "EXC02\PowerShell (Default Web Site)" -externalUrl https://outlook.pmincloud.com/powershell

Configurazione Virtual Directory Interne

Primo server (EXC01):

Set-EcpVirtualDirectory -identity "EXC01\ECP (Default Web Site)" -InternalUrl https://outlook.pmincloud.com/ecp
Set-WebServicesVirtualDirectory -identity "EXC01\EWS (Default Web Site)" -InternalUrl https://outlook.pmincloud.com/EWS/Exchange.asmx
Set-ActiveSyncVirtualDirectory -identity "EXC01\Microsoft-Server-ActiveSync (Default Web Site)" -InternalUrl https://outlook.pmincloud.com/Microsoft-Server-ActiveSync
Set-OabVirtualDirectory -identity "EXC01\OAB (Default Web Site)" -InternalUrl https://outlook.pmincloud.com/OAB
Set-OwaVirtualDirectory -identity "EXC01\OWA (Default Web Site)" -InternalUrl https://outlook.pmincloud.com/owa
Set-PowerShellVirtualDirectory -identity "EXC01\PowerShell (Default Web Site)" -InternalUrl https://outlook.pmincloud.com/powershell
Secondo server (EXC02):
Set-EcpVirtualDirectory -identity "EXC02\ECP (Default Web Site)" -InternalUrl https://outlook.pmincloud.com/ecp
Set-WebServicesVirtualDirectory -identity "EXC02\EWS (Default Web Site)" -InternalUrl https://outlook.pmincloud.com/EWS/Exchange.asmx
Set-ActiveSyncVirtualDirectory -identity "EXC02\Microsoft-Server-ActiveSync (Default Web Site)" -InternalUrl https://outlook.pmincloud.com/Microsoft-Server-ActiveSync
Set-OabVirtualDirectory -identity "EXC02\OAB (Default Web Site)" -InternalUrl https://outlook.pmincloud.com/OAB
Set-OwaVirtualDirectory -identity "EXC02\OWA (Default Web Site)" -InternalUrl https://outlook.pmincloud.com/owa
Set-PowerShellVirtualDirectory -identity "EXC02\PowerShell (Default Web Site)" -InternalUrl https://outlook.pmincloud.com/powershell

Anche questa volta prima di proseguire, facciamo i soliti controlli:

Get-EcpVirtualDirectory | ft server,internalurl,externalurl
Get-WebServicesVirtualDirectory | ft server,internalurl,externalurl 
Get-ActiveSyncVirtualDirectory | ft server,internalurl,externalurl
Get-OabVirtualDirectory | ft server,internalurl,externalurl
Get-OwaVirtualDirectory | ft server,internalurl,externalurl
Get-PowerShellVirtualDirectory |ft server,internalurl,externalurl

Nel nostro caso, avremo il risultato riportato sotto, rispettivamente prima della configurazione, dopo la configurazione delle Virtual Directory Esterne e dopo quella delle Virtual Directory Interne.

2015_06_28_Exchange-11

Figura 11 – Elenco Virtual Directories

Configurazione di ExternalHostName e InternalHostName per Outlook Anywhere

Analogo a prima, cambiano solo i CmdLet:

Set-OutlookAnywhere -identity "EXC01\Rpc (Default Web Site)" -ExternalHostname "outlook.pmincloud.com" -ExternalClientAuthenticationMethod Negotiate -ExternalClientsRequireSsl:$True
Set-OutlookAnywhere -identity "EXC02\Rpc (Default Web Site)" -ExternalHostname "outlook.pmincloud.com" -ExternalClientAuthenticationMethod Negotiate -ExternalClientsRequireSsl:$True
Set-OutlookAnywhere -identity "EXC01\Rpc (Default Web Site)" -InternalHostname "outlook.pmincloud.com" -InternalClientAuthenticationMethod ntlm -InternalClientsRequireSsl:$True
Set-OutlookAnywhere -identity "EXC02\Rpc (Default Web Site)" -InternalHostname "outlook.pmincloud.com" -InternalClientAuthenticationMethod ntlm -InternalClientsRequireSsl:$True

E anche i controlli sono simili a quelli delle Virtual Directory:

Get-OutlookAnywhere | ft Identity,InternalHostname,ExternalHostname

Certificati

Ultimissimo sforzo prima dell’HA! Nel nostro caso andiamo ad installare un certificato wildcard pubblico. La prima operazione da fare consiste nel caricare il certificato delle CA da cui ci siamo fatti rilasciare il nostro wildcard, se questa non comparisse nell’elenco delle Trusted Root CA. Questa operazione la facciamo da MMC (aprendo i Server Certificate).

Ora controlliamo i certificati presenti sui nostri due server con i seguenti CmdLet:

Get-ExchangeCertificate -server exc01
Get-ExchangeCertificate -server exc02

A questo punto importiamo il nostro certificato:

Import-ExchangeCertificate -FileData ([Byte[]]$(Get-Content -Path c:\Certificati\pmincloud.pfx -Encoding byte -ReadCount 0)) -Server exc01 -FriendlyName CertificatoPmincloud -Password:(Get-Credential).password

Al popup inseriamo la password che abbiamo usato durate la conversione del certificato. Il nome utente è ininfluente, quindi possiamo usare Administrator, come mostra la figura 12.

2015_06_28_Exchange-12

Figura 12 – Importazione Certificati

Se tutto è andato bene, procediamo con il secondo server:

Import-ExchangeCertificate -FileData ([Byte[]]$(Get-Content -Path c:\Certificati\pmincloud.pfx -Encoding byte -ReadCount 0)) -Server exc02 -FriendlyName CertificatoPmincloud -Password:(Get-Credential).password

Facciamo il solito controllo con Get-ExchangeCrtificate -server exc01 e Get-ExchangeCrtificate -server exc02 in modo da verificare che entrambi siano stati caricati correttamente (e in modo da copiarci il Thumbprint), quindi procediamo ad abilitarli per il servizio IIS con:

Enable-ExchangeCertificate –Thumbprint 2710995C10313ADB156998A738FF7D370C0D354D –Services “IIS, SMTP” –Server exc01
Enable-ExchangeCertificate –Thumbprint 2710995C10313ADB156998A738FF7D370C0D354D –Services “IIS, SMTP” –Server exc02

2015_06_28_Exchange-13

Figura 13 – Attivazione Certificato

Un ultimo controllo e se tutto è a posto, chiudiamo con un bel iisreset su entrambi i nodi!

Creazione e Configurazione del DAG

Terminata la configurazione di base procediamo veloci con la configurazione del DAG. La creazione del DAG si può semplificare in questi passi:

  • Prestaging dell’oggetto DAG
  • Creazione della cartella per il Witness
  • Creazione del DAG
  • Aggiunta dei server al DAG
  • Aggiunta delle DB Copy

Prestaging Oggetto DAG

Facciamo riferimento a questo aritcolo: Exchange Server 2013: Prestaging del Computer Account per i DAG. Quindi, sempre in PowerShell, e sempre con il Run As Admin, importiamo il modulo per AD e creiamo il Computer Name Object.

import-module activedirectory 
New-ADComputer -name DAG01 -SamAccountName DAG01 -Path "CN=Computers,DC=PMINCLOUD,DC=COM" -Enabled $false -Description “Account per DAG01”

Ok adesso creiamo i due script (il primo per il gruppo il secondo per il primo dei due server Exchange). Copiamo le righe seguenti in un editor e salvandole come AssegnaPremessiDAG-Gruppo.ps1.

$PC = Get-ADComputer DAG01
$SID = (Get-ADGroup "Exchange Trusted Subsystem").sid
$Rights = [System.DirectoryServices.ActiveDirectoryRights]::GenericAll
$Permission = [System.Security.AccessControl.AccessControlType]::Allow
cd AD:
$ACL = get-acl $PC
$ACE = new-object System.DirectoryServices.ActiveDirectoryAccessRule $SID, $Rights, $Permission
$ACL.AddAccessRule($ACE)
set-acl -path $PC -AclObject $ACL
C:

Ripetiamo ma salviamo come AssegnaPremessiDAG-Server1.ps1.

$PC = Get-ADComputer DAG01
$SID = (Get-ADComputer "EXC01").sid
$Rights = [System.DirectoryServices.ActiveDirectoryRights]::GenericAll
$Permission = [System.Security.AccessControl.AccessControlType]::Allow
cd AD:
$ACL = get-acl $PC
$ACE = new-object System.DirectoryServices.ActiveDirectoryAccessRule $SID, $Rights, $Permission
$ACL.AddAccessRule($ACE)
set-acl -path $PC -AclObject $ACL
C:

Una volta eseguiti gli script, in caso di esito positivo, avrete concluso!

2015_06_28_Exchange-14

Figura 14 – Esecuzione CmdLets

Creazione della Cartella per i Witness

Beh questo è facile, anche se…mettiamoci su un server (affidabile) ed accessibile da entrambi i server e creiamo la cartella (mkdir c:\dag01). A questo punto dobbiamo ricordarci che se non usiamo un Server Exchange come DAG, è necessario aggiungere al gruppo locale Administrators il gruppo universale “Exchange Trusted Subsystem” (quindi occhio ad usare un Domain Controller al di fuori di un lab per questo scopo!)

Creazione del DAG

Finiti i preliminari, passiamo semplicemente al New-DatabaseAvailabilityGroup i parametri necessari:

New-DatabaseAvailabilityGroup -Name DAG01 -WitnessServer DOM01 -WitnessDirectory C:\DAG01 -DatabaseAvailabilityGroupIPAddresses 192.168.102.23

Aggiunta dei Server al DAG

Ora (in produzione attendiamo che l’informazione si replichi ovunque, soprattutto in presenza di siti geografici) procediamo assegnano al DAG appena creato i nostri due server Exchange:

Add-DatabaseAvailabilityGroupServer -Identity DAG01 -MailboxServer EXC01
Add-DatabaseAvailabilityGroupServer -Identity DAG01 -MailboxServer EXC02

Il primo di questi due CmdLet si occupa anche di installare il servizio Cluster sui server, creando anche tutti gli ammennicoli necessari in AD. Di conseguenza… un attimo di pazienza!!!

Aggiunta delle DB Copy

Prendiamoci un secondo di tempo per controllare il path dei DB, verificando che gli stessi percorsi siano “creabili” sull’altro server:

Get-MailboxDatabase "maildb01-db" | select edbfilepath,logfolderpath
Get-MailboxDatabase "maildb02-db" | select edbfilepath,logfolderpath

Terminata anche questa verifica possiamo procedere creando le DB copy:

Add-MailboxDatabaseCopy -Identity maildb01-db -MailboxServer EXC02 -ActivationPreference 2
Add-MailboxDatabaseCopy -Identity maildb02-db -MailboxServer EXC01 -ActivationPreference 2

Lasciamo il tempo ad Exchange di replicare effettivamente i dati e controlliamo man mano che il tutto sia effettivamente funzionante:

Get-MailboxDatabaseCopyStatus "maildb01-db" | ft -auto
Get-MailboxDatabaseCopyStatus "maildb02-db" | ft -auto

Lato Exchange abbiamo finito! Non ci rimane che la configurazione del nostro bilanciatore e del Relay Agent.