Exchange Server SE'de IP-less DAG Kurulumu ve PowerShell ile Database Availability Group Yapılandırması

Exchange Server SubScription Edition (SE), Microsoft'un On-Premises Exchange platformunun 1 Temmuz 2025 tarihinde Generally Available (GA) olarak yayınlanan ve Modern Lifecycle Policy ile yönetilen Evergreen sürümüdür. RTM Build'i, Exchange Server 2019 CU15 ile kod düzeyinde eşdeğerdir. Bu nedenle yüksek erişilebilirlik mimarisi ve Database Availability Group (DAG) davranışı, Exchange Server 2016 ve Exchange Server 2019 ile birebir aynı çalışır.

Bu makalede, iki Mailbox Server üzerinde PowerShell kullanarak uçtan uca bir DAG kurulumunu adım adım yapılandırıyor olacağız. Kurulum boyunca Exchange Management Shell (EMS) yerine Windows PowerShell ISE tercih ettim. Bunun nedeni, çok adımlı ve Script tabanlı bir süreç olan DAG kurulumunda birden fazla cmdlet'i tek bir .ps1 dosyası içinde sıralı biçimde çalıştırmanın ve yönetmenin ISE ortamında çok daha pratik olmasıdır.

Database Availability Group, Exchange'in Native High Availability (yüksek erişilebilirlik) ve Site Resilience modelidir. Arka planda Windows Server Failover Clustering altyapısını kullanır, ancak Cluster'ı doğrudan Failover Cluster Manager üzerinden değil, Exchange cmdlet'leri üzerinden yönetirsiniz. Bir DAG en fazla 16 Mailbox Server'ı bir araya getirir ve aynı Mailbox Database'in farklı Server'lar üzerinde tutulan kopyaları arasında Continuous Replication çalıştırır. Aktif kopyada oluşan Transaction Log'lar, pasif kopyalara aktarılır ve Replay edilir. Böylece bir Server veya Disk arızasında Mailbox Database (veritabanı), otomatik olarak sağlıklı bir kopya üzerinde Mount edilir.

Çift sayıda üyeye sahip bir DAG'da Cluster'ın Quorum'unu koruyabilmesi için bir Witness Server gereklidir. Witness Server üzerinde Exchange tarafından otomatik oluşturulan File Share Witness, Quorum oylamasında belirleyici üçüncü oyu sağlar. Bu sayede iki üyeli bir DAG'da bir Server çevrimdışı kaldığında, ayakta kalan tek Server File Share Witness oyu ile birlikte Quorum çoğunluğunu korur ve Cluster, çalışır halde kalır. Bu kurulumda DAG, iki Mailbox Server ve bir Witness Server'dan oluşan klasik bir iki üyeli topolojiyi temel alır.

Ön Koşullar ve Lisanslama

DAG, arka planda hem Windows Server Failover Clustering altyapısına hem de Active Directory'ye dayanır. Bu nedenle ön koşullar; işletim sistemi Feature'larından Active Directory topolojisine ve Exchange Edition seviyesine kadar birden fazla katmanı kapsar. Aşağıdaki tablo, kuruluma başlamadan önce karşılanması gereken temel gereksinimleri özetler.

Gereksinim Açıklama
DAG Üyeleri Tüm DAG üyeleri Mailbox rolüne sahip Exchange Server SE Server'ları olmalıdır.
Active Directory Tüm DAG üyeleri aynı Active Directory Forest içinde yer almalıdır.
Failover Clustering Her DAG üyesi üzerinde Failover Clustering Feature kurulu olmalıdır.
Exchange, DAG'ın Cluster'ını bu Feature üzerinden otomatik oluşturur ve yönetir.
Witness Server Bir DAG üyesi olamaz. Windows Server 2008 veya sonrası bir işletim sistemi üzerinde çalışmalıdır.
Tercihen Domain Controller üzerine yerleştirilmemelidir, çünkü bu durum Exchange Trusted Subsystem grubuna gereğinden fazla yetki verilmesini gerektirir.
Edition ve Lisans Standard Edition başına en fazla 5, Enterprise Edition başına en fazla 100 Mailbox Database destekler.
13 veritabanı barındıran bu kurulum Enterprise Edition gerektirir.
Veritabanı sayısı sınırı Edition seviyesinde belirlenir. Standard Edition başına en fazla 5, Enterprise Edition başına en fazla 100 Mailbox Database desteklenir. Bir DAG içinde bir veritabanının her kopyası bu sayıma ayrı ayrı dahildir. 13 veritabanı barındıran bu kurulum için Enterprise Edition zorunludur.

1- Failover Clustering Servisinin Kurulması

DAG, arka planda Windows Server Failover Clustering altyapısını kullandığı için ilk adım, her iki Mailbox Server üzerinde Failover Clustering Feature'ının kurulmasıdır. İlk olarak Add-PSSnapin *exc* komutuyla o andaki PowerShell Session'da (oturumda) Exchange snap-in eklenmesini, yani Exchange cmdlet'lerinin Session'a yüklenmesini sağlıyorum. Bu kurulumda birden çok cmdlet'i (komutu) art arda çalıştıracağım için, hepsini tek bir Session içinde kesintisiz yürütmenin bana sağladığı kolaylık nedeniyle bu yöntemi tercih ettim.
Add-PSSnapin ile Exchange snap-in yüklenmesi ve Invoke-Command ile Failover Clustering durumunun sorgulanması Microsoft Learn dokümantasyonunda snap-in'in doğrudan yüklenmesinin highly discouraged olarak nitelendirilmesi

Exchange cmdlet'lerinin Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn veya benim kullandığım kısa hali Add-PSSnapin *exc* ile doğrudan Session'a yüklenmesi, Microsoft tarafından şiddetle önerilmeyen bir yöntemdir. Bunun nedeni, bu yaklaşımın RBAC, yani Role Based Access Control katmanını tamamen atlamasıdır. Exchange Management Shell ile bağlanıldığında yalnızca atanmış rolün izin verdiği cmdlet ve parametreler kullanılırken, snap-in doğrudan yüklendiğinde rol ne olursa olsun tüm cmdlet'lere ve tüm dizine sınırsız erişimle çalışılır ve RBAC'ın yetki sınırlama ile denetim güvenceleri ortadan kalkar. Microsoft Learn, bu yöntemi yalnızca yönetim erişiminden kilitlenildiğinde başvurulacak geçici bir kurtarma yolu olarak konumlandırır. Bu nedenle Lab ve Script senaryolarında kolaylık sağlasa da, production ortamında rutin yönetim için Exchange Management Shell kullanılmalıdır.

Ardından Invoke-Command komutu ile her iki Server üzerinde Failover Clustering Feature'ının durumu uzaktan sorguluyorum. Sorgu sonucunda Failover Clustering servisinin her iki Server üzerinde henüz kurulmadığı, InstallState değerinin "Available" olduğu görülür.
Her iki Exchange Server üzerinde Failover Clustering Feature durumunun Available olarak görüntülenmesi


Add-PSSnapin *exc*

# 1- Installing Failover-Clustering Services

Invoke-Command -ComputerName TRISTSRVEXC01,TRISTSRVEXC02 -ScriptBlock {
    Get-WindowsFeature -Name Failover-Clustering
} | Select-Object PSComputerName, Name, DisplayName, InstallState | Format-Table -AutoSize

Feature'ın "Available" durumda olduğu doğrulandıktan sonra, Install-WindowsFeature cmdlet'i ile Failover Clustering ve yönetim araçları kurulur. Kurulum önce TRISTSRVEXC01 Server'ı üzerinde başlatılır ve ilerlemesi izlenir.
TRISTSRVEXC01 üzerinde Failover Clustering kurulumunun yüzde 45 ilerlemesiTRISTSRVEXC01 üzerinde Failover Clustering kurulumunun yüzde 89 ilerlemesiAynı işlem TRISTSRVEXC02 Server'ı üzerinde tekrarlanır.
TRISTSRVEXC02 üzerinde Failover Clustering kurulumunun yüzde 24 ilerlemesiTRISTSRVEXC02 üzerinde Failover Clustering kurulumunun yüzde 84 ilerlemesi


Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools -ComputerName TRISTSRVEXC01

Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools -ComputerName TRISTSRVEXC02

Kurulum tamamlandıktan sonra Feature durumu yeniden sorgulandığında, her iki Server üzerinde InstallState değerinin "Installed" olduğu doğrulanır.
Her iki Exchange Server üzerinde Failover Clustering Feature durumunun Installed olarak doğrulanması

Failover Clustering Feature kurulumunun ardından her iki Server'ın yeniden başlatılması gerekir. Restart işlemi, Cluster bileşenlerinin servise alınması için zorunludur. DAG üyeliği işlemlerine geçmeden önce her iki Server'ın da yeniden başlatılmış ve tamamen erişilebilir durumda olması doğrulanmalıdır.

Her iki Server Restart-Computer cmdlet'i ile yeniden başlatılır. Yeniden başlatma sırasında Server'ların erişilebilirliği sürekli ping ile izlenir. Request timed out satırları yeniden başlatma anına denk gelir, ardından yanıtların geri dönmesi Server'ın tekrar ayağa kalktığını gösterir.
Restart-Computer komutları ve yeniden başlatma sırasında sürekli ping ile erişilebilirlik takibi


Restart-Computer -ComputerName TRISTSRVEXC01 -Force

Restart-Computer -ComputerName TRISTSRVEXC02 -Force

2- IP-less DAG Oluşturulması

DAG oluşturulmadan önce dikkat edilmesi gereken kritik nokta, Exchange'in Witness Server üzerinde Witness dizinini ve paylaşımını yönetebilmesi için yeterli izne sahip olmasıdır. Microsoft'un belgelediği standart yöntem, Witness Server bir Exchange Server değilse Exchange Trusted Subsystem Universal Security Group'unu Witness Server'ın Local Administrators grubuna eklemektir. Bu üyelik, Exchange'in Witness dizinini ve paylaşımını kendisinin oluşturup güvenli hale getirebilmesi içindir.

Bu tek yol değildir. Witness dizinini ve paylaşımını önceden kendiniz oluşturup üzerinde Exchange Trusted Subsystem grubuna Full Control verirseniz, Exchange'in yeni bir dizin ve paylaşım oluşturmasına gerek kalmaz. Bu kurulumda Local Administrators üyeliği değiştirilmemiş, bunun yerine C:\EXC-DAG-WITNESS dizini ve paylaşımı önceden oluşturulup Exchange Trusted Subsystem grubuna hem NTFS hem de Share seviyesinde Full Control verilmiştir. Yapılan kontrolde bu izinlerin yerinde olduğu görülür ve DAG, bu sayede Local Administrators üyeliği eklenmeden başarıyla oluşturulmuştur.
Witness Server üzerindeki EXC-DAG-WITNESS dizini için NTFS ve Sharing izinlerinin doğrulanması

Witness Server bir DAG üyesi olamaz ve Domain Controller üzerine yerleştirilmesi önerilmez. Witness Server'ın yedekli veya yüksek erişilebilir olması gerekmez, çünkü Witness yalnızca çift sayıda üye olduğunda Quorum amacıyla kullanılır. Witness dizinini önceden manuel oluşturmanız gerekmez, Exchange bu dizini ve paylaşımı kendisi oluşturup güvenli hale getirir. Yapmanız gereken tek hazırlık, Exchange Trusted Subsystem grubunu Witness Server'ın local Administrators grubuna eklemektir.

İzinler doğrulandıktan sonra DAG, New-DatabaseAvailabilityGroup cmdlet'i ile oluşturulur. Bu kurulumda DAG, IP-less olarak yapılandırılmıştır. Windows Server 2012 R2 ve sonraki sürümlerde, DatabaseAvailabilityGroupIpAddresses parametresi belirtilmediğinde DAG varsayılan olarak Administrative Access Point olmadan oluşturulur. Bu nedenle komutta herhangi bir IP adresi belirtilmemesi, DAG'ın IP-less yapıda kurulduğu anlamına gelir. Oluşturma anında Member Servers değeri henüz boştur.
New-DatabaseAvailabilityGroup ile DAG oluşturulması, Member Servers henüz boş

IP-less DAG, Cluster için Active Directory'de bir Cluster Name Object (CNO) oluşturmaz, Cluster'a bir IP adresi veya Network Name atamaz ve DAG adı DNS'te kaydedilmez. Bu yapı, CNO ön hazırlığı ve IP adresi yönetimi gibi ek operasyonel yükleri ortadan kaldırır. IP-less DAG yalnızca Failover Cluster Manager ile değil, PowerShell ile her bir Node üzerinden yönetilir. Eğer üçüncü parti araçlarınız Cluster'ın administrative access point'ine bağlanmayı gerektiriyorsa, IP-less DAG yerine CNO ve IP adresi içeren klasik bir DAG kullanmanız gerekir.

DAG oluşturulduktan hemen sonra Get-DatabaseAvailabilityGroup cmdlet'i ile durumu sorgulandığında, DAG'ın oluşturulduğu ancak henüz hiçbir üye Server içermediği görülür. WitnessShareInUse değeri de henüz boştur, çünkü Witness ancak DAG'a üyeler eklendiğinde devreye girer.
Get-DatabaseAvailabilityGroup ile DAG durumunun sorgulanması, üye listesi boş ve Witness henüz kullanımda değilFile Share Witness devreye alındığında, önceden oluşturulmuş Witness dizini altında DAG'a özel ve GUID adıyla bir alt klasör belirir. Bu klasörün içinde VerifyShareWriteAccess.txt ile Witness.log dosyaları yer alır.
Witness Server üzerinde File Share Witness için oluşturulan dizin, dosyalar ve paylaşım izinleri


# 2- Creating a new IPLESS DAG

New-DatabaseAvailabilityGroup -Name DAG-2552026 -WitnessServer TRISTSRVSYN01.ABC.LOCAL -WitnessDirectory C:\EXC-DAG-WITNESS

Get-DatabaseAvailabilityGroup -Identity DAG-2552026 -Status | FT Name, Witness*, Servers, Primaryactivemanager -Autosize

3- Exchange Server'ların DAG'a Üye Yapılması

DAG kabuğu oluşturulduktan sonra sıra, Mailbox Server'ları DAG'a üye yapmaya gelir. İlk üye TRISTSRVEXC01, Add-DatabaseAvailabilityGroupServer cmdlet'i ile eklenir. İlk Server eklenirken "Forming cluster" mesajı görüntülenir ve Windows Failover Cluster bu adımda otomatik olarak kurulur.
İlk Mailbox Server eklenirken Cluster'ın oluşturulması, Forming cluster mesajı

Cluster, DAG'a ilk Mailbox Server eklendiğinde oluşturulur. IP-less yapıda Cluster, IP adresi ve Network Name kaynağı olmadan kurulur ve Active Directory'de bir CNO oluşturulmaz.

İlk Server başarıyla eklendikten sonra Exchange, mevcut tüm Mailbox Database'lerin MasterServerOrAvailabilityGroup özelliğini DAG adıyla günceller. Bu, veritabanlarının artık standalone bir Server'a değil, DAG'a ait olduğu anlamına gelir. Verbose çıktıda, eklenen Server için Information Store servisinin yeniden başlatılması gerektiğini bildiren bir WARNING satırı yer alır.
Cluster oluşturulduktan sonra veritabanlarının MasterServerOrAvailabilityGroup özelliğinin güncellenmesi ve Information Store yeniden başlatma uyarısı

Bir Mailbox Server DAG'a eklendikten sonra, o Server üzerindeki Microsoft Exchange Information Store servisinin yeniden başlatılması gerekir. Bu işlem, Server'ın yeni DAG üyelik bilgisini ve veritabanı sahiplik değişikliklerini tam olarak uygulayabilmesi için zorunludur. Çıktıdaki "Please restart the Microsoft Exchange Information Store service" uyarısı tam olarak bu nedenle görüntülenir.

Information Store servisi, eklenen TRISTSRVEXC01 üzerinde yeniden başlatılır. Servisin durdurulup tekrar başlatılması sırasında bekleme mesajları görüntülenir.
İlk Server üzerinde Microsoft Exchange Information Store servisinin yeniden başlatılmasıArdından ikinci Mailbox Server olan TRISTSRVEXC02, aynı cmdlet ile DAG'a eklenir. Bu Server Cluster'a katılırken "Adding server to the cluster" mesajı görüntülenir.
İkinci Mailbox Server TRISTSRVEXC02'nin DAG'a ve Cluster'a eklenmesiİkinci üye eklendiğinde DAG, çift sayıda üyeye ulaşır. Bu noktada Exchange, Quorum çoğunluğunu koruyabilmek için File Share Witness'ı otomatik olarak devreye alır. Verbose çıktıda, Witness paylaşımının çift sayıda üye için kullanıldığı ve File Share Witness kaynağının oluşturulup online hale getirildiği görülür.
Çift sayıda üye için File Share Witness'ın oluşturulup devreye alınmasıİşlem tamamlandığında TRISTSRVEXC02'nin DAG'a başarıyla eklendiği ve cmdlet'in "Done" mesajıyla sonlandığı görülür.
İkinci Server'ın DAG'a başarıyla eklenmesi ve işlemin tamamlanması

İkinci Server için de Information Store servisi yeniden başlatılır. Bu kurulumda, TRISTSRVEXC02 üzerindeki servis -ComputerName parametresi kullanılarak uzaktan yeniden başlatılmıştır.
İkinci Server üzerinde Information Store servisinin uzaktan yeniden başlatılmasıHer iki Server da DAG'a eklendikten sonra DAG durumu yeniden sorgulanır. Bu kez DAG'ın iki üyeye sahip olduğu, WitnessShareInUse değerinin "Primary" olarak göründüğü ve PrimaryActiveManager (PAM) rolünün TRISTSRVEXC01 üzerinde olduğu görülür. Primary Active Manager (PAM), DAG içinde veritabanı aktivasyon kararlarını koordine eden Cluster rolüdür.
DAG durumunun iki üye, aktif File Share Witness ve Primary Active Manager rolüyle doğrulanması


# 3- Making Exchange Servers Members Of DAG

Add-DatabaseAvailabilityGroupServer -Identity DAG-2552026 -MailboxServer TRISTSRVEXC01 -Verbose

Get-Service | Where-Object { $_.Name -like "*MSExchangeIS*" } | Restart-Service -Force

Add-DatabaseAvailabilityGroupServer -Identity DAG-2552026 -MailboxServer TRISTSRVEXC02 -Verbose

Get-Service -ComputerName TRISTSRVEXC02 | Where-Object { $_.Name -like "*MSExchangeIS*" } | Restart-Service -Force

4- Veritabanlarının DAG'a Dahil Edilmesi

DAG topolojisi hazır olduğunda sıra, mevcut Mailbox Database'ler için pasif kopyalar oluşturmaya gelir. Bu kurulumda tüm veritabanları başlangıçta yalnızca TRISTSRVEXC01 üzerinde aktif olarak bulunur ve hedef Server olan TRISTSRVEXC02 üzerinde henüz kopyaları yoktur. Bu işlem için önce kaynak Server'da bulunup hedef Server'da kopyası eksik olan veritabanları tespit edilerek bir önizleme listesi üretilir. MissingCopyOn sütunu, her veritabanı için kopyanın hangi Server'da eksik olduğunu gösterir.
Hedef Server üzerinde kopyası eksik olan veritabanlarının tespit edilip listelenmesi

Veritabanı kopyaları Add-MailboxDatabaseCopy cmdlet'i ile oluşturulur. Bu komutta belirtilen ActivationPreference değeri, bir failover durumunda hangi kopyanın hangi öncelikle aktif hale getirileceğini belirler. Aktif kopya genellikle ActivationPreference 1, ilk pasif kopya ise ActivationPreference 2 değerini alır. Kopya oluşturulduğunda Exchange, aktif veritabanından pasif kopyaya bir Seeding işlemi başlatır. Seeding sırasında veritabanının tam bir kopyası hedef Server'a aktarılır.

Ardından hedef Server'da kopyası eksik olan tüm veritabanları için ActivationPreference değeri 2 olacak şekilde sırayla kopya oluşturulur. Seeding işleminin ilerleyişi sırasında okunan, yazılan ve kalan byte miktarı izlenebilir.
MBXUSRDB01 veritabanı için seeding işleminin ilerleyişiMBXUSRDB02 veritabanı için seeding işleminin ilerleyişiMBXUSRDB03 veritabanı için seeding işleminin ilerleyişiMBXUSRDB04 veritabanı için seeding işleminin ilerleyişiMBXUSRDB05 veritabanı için seeding işleminin ilerleyişi Kopya oluşturma işlemleri ilerledikçe, eklenen yeni veritabanları için Information Store servisinin yeniden başlatılması gerektiğini bildiren WARNING satırları görüntülenir. Bu uyarı bir hata değildir. Servis yeniden başlatılmasa da DAG kurulur, kopyalar oluşur, Seeding tamamlanır ve veritabanları sorunsuz çalışmaya devam eder.

Uyarının nedeni RAM ile ilgilidir. Exchange'in veritabanı motoru ESE, performans için sık erişilen veritabanı sayfalarını RAM üzerindeki bir Database Cache içinde tutar. Sunucudaki kullanılabilir RAM, bu Cache için veritabanları arasında bölüştürülür ve bu bölüştürme hesabı Information Store servisi her başladığında yeniden yapılır. Yeni eklenen bir veritabanı, ancak servis yeniden başlatıldıktan sonra bu bölüştürmeye dahil olur.

Servis yeniden başlatılmazsa yeni veritabanı yine çalışır, fakat ESE Cache için RAM'den alması gereken payı tam olarak almaz. Bu nedenle Restart bir zorunluluk değil, performans için yapılan bir iyileştirmedir. Tek bir veritabanı için etkisi önemsizdir, ancak bu kurulumda 13 veritabanı eklendiği için uygun bir bakım zamanında Information Store servisini yeniden başlatmak yerinde olur.
Kullanıcı veritabanları için seeding işlemi ve Information Store yeniden başlatma uyarılarıSon olarak sistem veritabanı MBXSYSDB için de Seeding işlemi tamamlanır.
Sistem veritabanı MBXSYSDB için seeding işleminin tamamlanması


# 4- Adding Databases into DAG.
$SourceServer = "TRISTSRVEXC01"
$TargetServer = "TRISTSRVEXC02"

Get-MailboxDatabase -Server $SourceServer | ForEach-Object {
    $DB = $_

    $SourceCopy = Get-MailboxDatabaseCopyStatus -Identity "$($DB.Name)\$SourceServer" -ErrorAction SilentlyContinue
    $TargetCopy = Get-MailboxDatabaseCopyStatus -Identity "$($DB.Name)\$TargetServer" -ErrorAction SilentlyContinue

    if ($SourceCopy -and -not $TargetCopy) {
        [PSCustomObject]@{
            Database      = $DB.Name
            SourceServer  = $SourceServer
            SourceStatus  = $SourceCopy.Status
            MissingCopyOn = $TargetServer
        }
    }
} | Format-Table -AutoSize

Get-MailboxDatabase |
Where-Object {
    $_.MasterServerOrAvailabilityGroup -eq "DAG-2552026" -and
    $_.Servers.Name -notcontains "TRISTSRVEXC02"
} |
Add-MailboxDatabaseCopy `
    -MailboxServer TRISTSRVEXC02 `
    -ActivationPreference 2 `
    -Verbose

5- DAG Veritabanlarının Durumunun Kontrol Edilmesi

Tüm kopyalar oluşturulduktan sonra DAG'ın ve veritabanı kopyalarının sağlık durumu doğrulanır. İlk olarak Cluster Node'larının durumu Get-Cluster | Get-ClusterNode komutu ile sorgulanır. Her iki Node'un da "Up" durumda olması, Cluster'ın sağlıklı çalıştığını gösterir.
Get-Cluster ve Get-ClusterNode ile her iki Cluster node'unun Up durumda doğrulanmasıArdından her iki Server için Get-MailboxDatabaseCopyStatus cmdlet'i ile veritabanı kopyalarının durumu kontrol edilir. TRISTSRVEXC01 üzerindeki kopyalar aktif kopyalar olduğu için "Mounted" durumdadır.
TRISTSRVEXC01 üzerindeki veritabanı kopyalarının Mounted durumda görüntülenmesiTRISTSRVEXC02 üzerindeki kopyalar ise pasif kopyalar olduğu için "Healthy" durumdadır. CopyQueueLength ve ReplayQueueLength değerlerinin 0 olması, Replication'ın gecikmesiz çalıştığını gösterir.
TRISTSRVEXC02 üzerindeki pasif veritabanı kopyalarının Healthy durumda görüntülenmesi

Veritabanı kopya durumunda ContentIndexState değeri "NotApplicable" olarak görünür. Bu, Exchange Server 2019 ve Exchange Server SE sürümlerinde tasarım gereği beklenen bir davranıştır. Exchange Server 2019 ile birlikte Search (arama) altyapısı, Big Funnel adı verilen yeni mimariye geçmiştir. Search Index'ler (arama indeksleri) artık Disk üzerinde veritabanı başına ayrı dosyalarda değil, doğrudan Mailbox Database içinde Mailbox başına saklanır. Bu nedenle eski sürümlerdeki Healthy veya Failed gibi Content Index durumları yerine "NotApplicable" değeri gösterilir. Bu değer bir hata veya yapılandırma sorunu değildir.

# 5- Checking Status of DAG Databases (Mailbox Database Copy Status)

Get-Cluster | Get-ClusterNode

Get-MailboxDatabaseCopyStatus -Server TRISTSRVEXC01 | Sort Name | ft -AutoSize

Get-MailboxDatabaseCopyStatus -Server TRISTSRVEXC02 | Sort Name | ft -AutoSize

6- Replication Sağlığının Test Edilmesi

DAG kurulumunun son doğrulama adımı, Replication sağlığının test edilmesidir. Test-ReplicationHealth cmdlet'i, bir DAG üyesi üzerinde Cluster servisi, Replay servisi, Active Manager, Quorum grubu, File Share Quorum, veritabanı yedekliliği ve veritabanı erişilebilirliği gibi kritik bileşenlerin sağlık durumunu kontrol eder. İlk olarak TRISTSRVEXC01 test edilir ve tüm kontrollerin "Passed" sonucunu verdiği görülür.
TRISTSRVEXC01 üzerinde Test-ReplicationHealth sonuçlarının tümünün Passed olmasıArdından TRISTSRVEXC02 test edilir. Bu Server pasif kopyalar barındırdığı için, kullanıcı veritabanı kopyalarına yönelik DBCopySuspended, DBCopyFailed, DBLogCopyKeepingUp ve DBLogReplayKeepingUp gibi ek kontroller de listede yer alır. Tüm kontroller "Passed" sonucunu verir.
TRISTSRVEXC02 üzerinde Test-ReplicationHealth sonuçlarının tümünün Passed olması


# 6- Testing Replication Health

Test-ReplicationHealth -Identity TRISTSRVEXC01

Test-ReplicationHealth -Identity TRISTSRVEXC02

Get-DatabaseAvailabilityGroup | Select -ExpandProperty Servers | Test-ReplicationHealth | Where { $_.Result -like "Passed" }

Get-DatabaseAvailabilityGroup | Select -ExpandProperty Servers | Test-ReplicationHealth | Where { $_.Result -like "Failed" }

Veritabanı Activation Preference Değerlerinin Doğrulanması

DAG topolojisinin doğru kurulduğunu teyit etmek için her veritabanının kopya dağılımı ve ActivationPreference değerleri kontrol edilir. Her veritabanı için Format-Table ile Server, DatabaseCopies ve ActivationPreference bilgileri listelenir.
MBXUSRDB01 ile MBXUSRDB06 arası veritabanları için Activation Preference değerlerinin listelenmesiMBXUSRDB07 ile MBXUSRDB12 arası veritabanları için Activation Preference değerlerinin listelenmesi

Tek bir komutla TRISTSRVEXC01 üzerindeki tüm veritabanları topluca listelendiğinde, her veritabanının iki kopyaya sahip olduğu görülür. TRISTSRVEXC01 üzerindeki kopya ActivationPreference 1, TRISTSRVEXC02 üzerindeki kopya ise ActivationPreference 2 değerine sahiptir. Bu dağılım, TRISTSRVEXC01'in tüm veritabanları için birincil aktivasyon hedefi olduğunu gösterir.
TRISTSRVEXC01 üzerindeki tüm veritabanlarının kopya ve Activation Preference dağılımı


Get-MailboxDatabase MBXUSRDB01 | Format-Table Server, DatabaseCopies, ActivationPreference

Get-MailboxDatabase -Server TRISTSRVEXC01 | Format-Table Server, DatabaseCopies, ActivationPreference

DAG Sağlık Raporunun Alınması

DAG'ın genel sağlık durumunu detaylı bir rapor halinde görüntülemek için topluluk tarafından geliştirilmiş Get-DAGHealth.ps1 Script'i kullanılmıştır. Bu Script, DAG üyeleri, veritabanı kopyaları ve Replication bileşenleri üzerinde bir dizi sağlık kontrolü yapar ve sonuçları ekrana veya HTML raporu olarak çıktılar. Script çalıştırıldığında, ortamda bir ignorelist.txt dosyası bulunmadığını bildiren bilgilendirme amaçlı bir uyarı görüntülenir. Bu uyarı bir hata değildir, yalnızca hiçbir Server, DAG veya veritabanının rapor dışında bırakılmayacağını belirtir.
Get-DAGHealth.ps1 script'inin çalıştırılması ve ignorelist bilgilendirme uyarısıScript -HTMLFile -Detailed parametreleriyle çalıştırıldığında, çalıştığı dizinde get-daghealth.html adında detaylı bir HTML raporu oluşturur.
Get-DAGHealth.ps1 script dizininin içeriği ve HTML raporu oluşturma komutu

Get-DAGHealth.ps1, Microsoft tarafından sağlanan resmî bir araç değil, topluluk tarafından geliştirilmiş bir Script'tir. Bu nedenle çıktısı, kritik kararlar için her zaman Exchange'in native cmdlet'leriyle, yani Test-ReplicationHealth ve Get-MailboxDatabaseCopyStatus ile çapraz doğrulanmalıdır.

Oluşturulan HTML raporunda DAG mimarisi sağlık özeti ve veritabanı bazında detaylar görüntülenir. Raporun üst bölümünde, her veritabanı için sağlıklı ve sağlıksız kopya, kuyruk ve indeks sayıları renkli tablolar halinde özetlenir.
get-daghealth HTML raporunun DAG sağlık özeti bölümü

HTML raporunda "Unhealthy Indexes" sütununun kırmızı görünmesi ve "unhealthy Content Index count" uyarıları, bu ortamda gerçek bir indeks sorunu olduğu anlamına gelmez. Bu durum, topluluk Script'inin Content Index durumunu eski Exchange sürümlerine göre değerlendirmesinden kaynaklanan, beklenen bir false positive davranıştır. Exchange 2019 ve SE'de Content Index durumu tasarım gereği "NotApplicable" döndüğü için, eski mantıkla yazılmış Script bunu "unhealthy" olarak işaretler. Nitekim aynı veritabanları için Test-ReplicationHealth tüm kontrolleri "Passed" olarak döndürmektedir.

Raporun alt bölümünde her veritabanı kopyası için Status, Copy Queue, Replay Queue ve Activation Preference değerleri ile DAG üyelerinin bileşen bazlı sağlık durumları detaylı olarak listelenir. Member Health tablosunda Cluster Service, Replay Service, Active Manager, File Share Quorum ve Database Availability gibi tüm kontrollerin "Passed" olması, DAG'ın sağlıklı ve operasyonel olduğunu doğrular.
get-daghealth HTML raporunun veritabanı kopya detayları ve üye sağlık durumu bölümü

Sonuç

Bu makalede, Exchange Server SE üzerinde iki Mailbox Server ve bir File Share Witness Server'dan oluşan bir IP-less DAG'ın PowerShell ile uçtan uca nasıl kurulduğunu adım adım inceledik. Failover Clustering Feature'ının kurulmasından başlayarak, DAG'ın oluşturulması, Server'ların üye yapılması, veritabanı kopyalarının Seeding ile oluşturulması ve Replication sağlığının doğrulanmasına kadar tüm süreci ele aldık. DAG kurulumu doğru yapılandırıldığında, Exchange ortamına Server ve veritabanı seviyesinde güçlü bir yüksek erişilebilirlik ve site dayanıklılığı kazandırır.

Faydalı olması dileğiyle...

Bu makaleye henüz yorum yapılmadı. İlk yorum yapan sen ol!


750 karakter yazabilirsiniz.
Captcha
* Yorumlar, onaylandıktan sonra yayınlanmaktadır.
* E-posta, yorum onay bildirimi için gereklidir. Yayınlanmaz.