Merhaba
Önceki iki bölümde DAG mimarisini ve tüm önkoşulları ele aldık. Ortamımız artık hazır: İki Mailbox sunucu (W25EXCNOD1, W25EXCNOD2), bir witness sunucu (W25WITNESS) ve sağlıklı bir Active Directory. Bu bölümde nihayet Exchange Management Shell’i açıp DAG’imizi sıfırdan oluşturacak, node’ları ekleyecek ve DAG ağlarını yapılandıracağız. Tüm işlemleri Exchange Management Shell (PowerShell) üzerinden yapacağız; aynı işlemlerin çoğu Exchange Admin Center (EAC) üzerinden de yapılabilir, ancak Shell hem daha hızlı hem de daha net kontrol sağlar.
Burada dikkat çeken nokta şu: Aşağıdaki tüm komutları Organization Management yetkisine sahip bir hesapla, Exchange sunucularından biri üzerinde açılan Exchange Management Shell’de çalıştıracağız.
Adım 1: Witness Sunucuyu Hazırlama
Bölüm 2’de belirttiğimiz gibi, Witness sunucumuz W25WITNESS üzerinde Exchange kurulu değil. Bu nedenle Exchange’in witness paylaşımını oluşturup yönetebilmesi için, Exchange Trusted Subsystem grubunu W25WITNESS‘in yerel Administrators grubuna eklememiz gerekiyor.
W25WITNESS üzerinde, PowerShell’i Run as administrator (Yönetici olarak çalıştır) ile açıp:
W25WITNESS üzerinde çalıştırılır:
Add-LocalGroupMember -Group "Administrators" -Member "BAKICUBUK\Exchange Trusted Subsystem"
Ayrıca File Server rolünün kurulu olduğundan emin olalım:
W25WITNESS üzerinde çalıştırılır:
Install-WindowsFeature FS-FileServer
Bu iki adım, Witness sunucunun DAG tarafından sorunsuz kullanılması için yeterlidir. Witness paylaşım klasörünü elle oluşturmanıza gerek yok; DAG oluşturulduğunda Exchange bunu kendisi yapacak.
Adım 2: DAG’i Oluşturma (IP-less DAG)
Şimdi asıl adıma geldik. Exchange Management Shell’de aşağıdaki komutla, IP adressiz (IP-less) DAG’imizi oluşturuyoruz:
New-DatabaseAvailabilityGroup -Name "EXCDAG" `
-WitnessServer "W25WITNESS" `
-WitnessDirectory "C:\DAGFileShareWitnesses\EXCDAG" `
-DatabaseAvailabilityGroupIpAddresses ([System.Net.IPAddress]::None)
Bu komuttaki parametreleri açıklayalım:
| Parametre | Açıklama |
|---|---|
-Name |
DAG’in adı. Örneğimizde EXCDAG. |
-WitnessServer |
Tanık sunucu (W25WITNESS). Çift sayılı DAG’da zorunlu. |
-WitnessDirectory |
Witness sunucuda oluşturulacak paylaşım klasörünün yolu. |
-DatabaseAvailabilityGroupIpAddresses |
[System.Net.IPAddress]::None değeri, IP-less DAG oluşturur. |
Bu aşamada DAG nesnesi Active Directory’de oluşur; ancak henüz hiçbir üye sunucu eklenmediği için arka planda bir Windows cluster kurulmaz. Cluster, ilk node eklendiğinde oluşacaktır.
Oluşturmayı doğrulayalım:
Get-DatabaseAvailabilityGroup -Identity "EXCDAG" | Format-List Name,Servers,WitnessServer,WitnessDirectory
Adım 3: Mailbox Sunucularını DAG’a Ekleme
Şimdi iki Mailbox sunucumuzu tek tek DAG’a ekliyoruz. İlk node eklendiğinde Exchange arka planda Windows Failover Clustering özelliğini otomatik kurar ve cluster’i oluşturur. Bu, birkaç dakika sürebilir.
İlk üyeyi ekleyelim:
Add-DatabaseAvailabilityGroupServer -Identity "EXCDAG" -MailboxServer "W25EXCNOD1"
Ardından ikinci üyeyi ekleyelim:
Add-DatabaseAvailabilityGroupServer -Identity "EXCDAG" -MailboxServer "W25EXCNOD2"
İkinci node eklendiğinde DAG artık çift sayılı hale gelir ve Quorum modeli otomatik olarak Node and File Share Majority‘ye geçer; işte bu noktada Witness sunucu aktif olarak devreye girer ve Witness paylaşımı W25WITNESS üzerinde oluşturulur.
Üyelerin eklendiğini doğrulayalım:
Get-DatabaseAvailabilityGroup -Identity "EXCDAG" -Status | Format-List Name,Servers,WitnessServer,WitnessShareInUse,OperationalServers
WitnessShareInUse değerinin dolu gelmesi, witness’in aktif olarak kullanıldığını gösterir. OperationalServers alanında her iki sunucuyu da görmelisiniz.
Get-ClusterNode gibi komutlarla okuma amaçlı kontrol edebilirsiniz; ancak unutmayın, cluster üzerinde değişiklik yapmak için yalnızca Exchange araçlarını kullanmalısınız.Adım 4: DAG Ağlarını Yapılandırma
Varsayılan olarak Exchange, DAG ağlarını otomatik (automatic) modda keşfeder. Ancak MAPI ve Replication ağlarını net biçiminde ayırmak istiyorsak, manuel ağ yapılandırmasına geçmek daha kontrollü bir sonuç verir.
Önce mevcut DAG ağlarını görelim:
Get-DatabaseAvailabilityGroupNetwork -Identity "EXCDAG" | Format-List Name,Subnets,Interfaces,ReplicationEnabled
Manuel ağ yapılandırmasını etkinleştirelim:
Set-DatabaseAvailabilityGroup -Identity "EXCDAG" -ManualDagNetworkConfiguration $true
Şimdi replikasyon ağını tanımlayalım (örneğimizde 192.168.2.0/24 subnet’i):
New-DatabaseAvailabilityGroupNetwork -DatabaseAvailabilityGroup "EXCDAG" `
-Name "ReplicationDagNetwork" `
-Description "Replikasyon trafigi" `
-Subnets "192.168.2.0/24" `
-ReplicationEnabled $true
MAPI ağı üzerinde replikasyonu kapatarak, replikasyon trafiğini yalnızca replikasyon ağına yönlendirelim:
Set-DatabaseAvailabilityGroupNetwork -Identity "EXCDAG\MapiDagNetwork" -ReplicationEnabled $false
Böylece üretim (MAPI) trafiği ile replikasyon trafiği birbirinden ayrılmış olur.
Adım 5: (Çok Siteli Ortamlar İçin) DAC Modunu Etkinleştirme
Eğer DAG’iniz birden fazla veri merkezine yayılıyorsa, Bölüm 1’de anlattığımız split-brain riskini önlemek için Datacenter Activation Coordination (DAC) modunu etkinleştirmelisiniz:
Set-DatabaseAvailabilityGroup -Identity "EXCDAG" -DatacenterActivationMode DagOnly
Tek siteli, iki node’lu basit senaryolarda bu adım zorunlu değildir; ancak ilerideki genişlemeler için bilinçli bir tercih olarak değerlendirebilirsiniz.
Adım 6: Kurulumu Doğrulama
DAG iskeletimiz artık hazır. Son olarak genel bir sağlık kontrolü yapalım:
DAG genel durumu:
Get-DatabaseAvailabilityGroup -Identity "EXCDAG" -Status | Format-List
Ağ yapılandırması:
Get-DatabaseAvailabilityGroupNetwork -Identity "EXCDAG"
Replikasyon sağlığı (her üye için):
Test-ReplicationHealth -Identity "W25EXCNOD1"
Test-ReplicationHealth -Identity "W25EXCNOD2"
Test-ReplicationHealth çıktısında tüm kontrollerin Passed durumunda olması beklenir. Bir kontrol Failed dönerse, bir sonraki bölümdeki sorun giderme adımlarına bakabilirsiniz.
| Kontrol | Beklenen |
|---|---|
| ClusterService | Passed |
| ReplayService | Passed |
| ActiveManager | Passed |
| TasksRpcListener | Passed |
| QuorumGroup | Passed |
| FileShareQuorum | Passed |
Test-ReplicationHealth çıktısında DatabaseRedundancy ve DatabaseAvailability kontrolleri *FAILED* dönebilir (Redundancy Count: 1. Expected Redundancy Count: 2 ... does not have enough copies configured). Bu bir hata değildir: veritabanınız henüz tek kopyadır. Bölüm 4’te Add-MailboxDatabaseCopy ile ikinci kopyayı ekledikten sonra her iki kontrol de Passed durumuna geçer. Cluster, Quorum ve Witness kontrollerinin Passed olması, DAG iskeletinin sağlıklı olduğunu gösterir.Özet ve Sonraki Bölüm
Bu bölümde DAG’imizi fiilen hayata geçirdik:
- Witness sunucuyu (W25WITNESS) Exchange Trusted Subsystem ve File Server rolü ile hazırladık.
New-DatabaseAvailabilityGroupile IP-less DAG01’i oluşturduk.Add-DatabaseAvailabilityGroupServerile W25EXCNOD1 ve W25EXCNOD2‘yi ekledik; ikinci node ile birlikte witness devreye girdi.- MAPI ve Replication ağlarını manuel olarak ayırdık.
Test-ReplicationHealthile kurulumu doğruladık.
Genel görünüm
Artık iki node’lu, witness destekli, sağlıklı bir DAG iskeletimiz var. Ancak henüz hiçbir veritabanının ikinci bir kopyası yok; yani yüksek erişilebilirlik (High Availability) henüz fiilen devrede değil. Bir DAG, ancak veritabanı kopyaları eklendiğinde amacına ulaşır.
Bir sonraki bölümde (Bölüm 4), serinin en kritik adımına geliyoruz: Add-MailboxDatabaseCopy ile veritabanı kopyalarını oluşturacak, seeding sürecini izleyecek, Move-ActiveMailboxDatabase ile switchover yapacak, sunucu bakım moduna alma (maintenance mode) ve sorun giderme adımlarını uygulamalı göreceğiz.
Başka bir yazımızda görüşmek dileğiyle…

