İçerikleri sosyal medya üzerinden paylaşarak daha fazla kişiye ulaşmasına yardımcı olabilirsiniz.



Fırat Boyan 23.12.2021 0

Exchange Server 2019'da DAG Yapısına PowerShell İle Database Ekleme

Exchange Server 2010 sürümünden beri son derece başarılı bir şekilde çalışan DAG (Database Availability Group) mimarisi, kesintisiz bir E-Mail sistemi deneyimi sunmaktadır. Aslında Exchange Server 2007 sürümünde temelleri atılan ancak Exchange Server 2010 sürümü ile ideal yapıya kavuşan DAG, yani aslında LOG replikasyonu, sayesinde Mailbox Server'lar arasındaki eşitleme özelliği sayesinde olası bir sorunda Mailbox Server seviyesinde herhangi bir kesinti olmadan kullanıcılarımız E-Mail'lerine ulaşmaya devam edebilmektedir.

Bu nedenle de özellikle iletişimin yollarınızdan birisi olan E-Mail trafiğinin yönetiminin yapıldığı Exchange Server mimarinizin kalbi olan ve tüm E-Mail verilerinizin tutulduğu Database'lerin yedekliliğinin sağlanması; iş sürekliliğinizi sağlamanız, zaman ve para kayıplarının önüne geçmeniz açısından kritik önem arz etmektedir. Bu makalemde sizlere Exchange Server 2019'da mevcut DAG yapınıza yeni bir Database'in (veri tabanı) nasıl ekleneceğinden bahsediyor olacağım.

1- Aşağıdaki komutla Exchange yapımızdaki DAG yapılandırma bilgilerini çekiyorum.

Get-DatabaseAvailabilityGroup

Exchange DAG

2- Ortamımda tek bir DAG yapılandırması var. Yukarıdaki komutla DAG mimarimizin Member Server'larını görebiliyoruz ancak aşağıdaki komutla da Member Server'ların hangisinin DAG mimarisinde çalışabilir durumda olduğu bilgisini görüntülüyorum.

Get-DatabaseAvailabilityGroup EXCHDAG01 -Status

Exchange DAG

3- Aşağıdaki komutla Exchange yapımızdaki Database'lerin hangisinin aktif kopya, hangisinin pasif kopya olduğu ve hangi Server'larda host edildiği bilgilerini elde ediyorum. Çıkan sonuçta Database'lerin Status bilgisi Healthy ve Mounted olarak ikiye ayrılmaktadır. Healthy, DAG mimarisindeki pasif kopya Database'i; Mounted, DAG mimarisindeki aktif kopya Database'i temsil etmektedir.

Ortamımda bir önceki Exchange Server 2019'da Exchange Management Shell Üzerinden Database Oluşturma isimli makalemde oluşturmuş olduğum MBXSYSDB isimli Database'in de listede yer aldığını, Mounted durumda olduğunu ve Healthy durumda olan pasif kopyalasının olmadığını görebiliyorum.

Get-MailboxDatabaseCopyStatus * | Sort Name | Select Name, Status, ContentIndexState

Exchange DAG

4- Aşağıdaki komutla yukarıdaki komut çıksındaki bilgilerin daha derli toplu bir hali ile sonuç çıktısını elde edebiliriz.

Get-MailboxDatabase | Format-List DatabaseCopies

Exchange DAG

5- Aşağıdaki komutlarla Exchange Server Host Name bilgileri ile Member (üye) bazında Database kopylaları filterli bir şekilde görüntülenebilir. Makalemde 2 adet Member (üye) Exchange Server'ım olduğu için ve doğal olarak tüm Database'lerin her iki sunucuda da aktif ve pasif kopyaları olacağı için çok büyük bir fark görülmeyecek olsa da, daha fazla Member (üye) Exchange Server olan DAG yapılarında belirleyici bir filtreleme olacaktır. Bu çıktıyı almamdaki asıl sebep, DAG içine yer almayan MBXSYSDB isimli Database'in sadece EXCHSRV01 Host Name'li sunucuda yer aldığını, diğer sunucuda böyle bir Database'in olmadğını göstermektedir.

Get-ExchangeServer -Identity EXCHSRV01 | Get-MailboxDatabase | Format-List DatabaseCopies

Exchange DAG
Exchange DAG

6- Aşağıdaki komutla MBXSYSDB isimli Database'in pasif kopyasının ortamımdaki ikinci DAG Member (üye) Exchange Server'ımda oluşmasını sağlıyorum.

Add-MailboxDatabaseCopy -Identity MBXSYSDB -MailboxServer EXCHSRV02 -Verbose –ActivationPreference:2

Exchange DAG

7- MBXSYSDB isimli Database'in pasif kopyasının ortamımdaki ikinci DAG Member (üye) Exchange Server'ımda oluşmasını sağladıktan sonra sıra, Information Store servisinin Restart edilmesine geldi. Aşağıdaki komutla ilgili servisi Restart ediyorum.

Get-Service | Where-Object { $_.DisplayName –ilike “Information Store *” } | Restart-Service

Exchange DAG

8- Aşağıdaki komutla iligli Database'in hangi sunucuda pasif kopya/kopyalarının tutulduğu ve en son hangi tarih ve saatte en son Log dosyasının kopyalandığı bilgisi yer almaktadır. Last Inspection Log Time, sadece Status bilgisi Healthy olan yani pasif kopya Database'lerde tarih ve saat damgasını işlemektedir.

Get-MailboxDatabaseCopyStatus * | ft -AutoSize

Exchange DAG

9- Aşağıdaki komut, Database adı verilen ilgili Database'in hangi sunucuda aktif kopyasının, hengi sunucularda pasif kopyalarının bulunduğu bilgisini vermektedir. Görüldüğü gibi MBXSYSDB isimli Database'im EXCHSRV02 Host Naname'li Exchange Server'ımda pasif kopya durumdadır.

Get-MailboxDatabaseCopyStatus -Db MBXSYSDB

Exchange DAG

10- Aşağıdaki komutla tüm Database'lerin Replication Health bilgilerinin "Passed" yani başarılı durumda olduğunu görüntülüyorum.

Test-ReplicationHealth -Identity EXCHSRV01

Exchange DAG
Exchange DAG

11- Replication Health kontolü sırasında hangi adımların kontrol edilğini detaylıca açıklamak istiyorum.

ClusterService:
Cluster servisinin sağlıklı bir şekilde çalışıp çalışmağını kontol eder.
ReplayService:
Microsoft Exchange Replication servisinin çalışıp çalışmağını kontol eder.
ActiveManager:
Active Manager'ın çalışıp çalışmağını kontol eder.
TasksRpcListener:
Tasks RPC Listener servisinin çalışıp çalışmağını ve uzak isteklere cevap verip vermediğini kontol eder.
TcpListener:
TCP Listener servisinin çalışıp çalışmağını ve uzak isteklere cevap verip vermediğini kontol eder.
ServerLocatorService:
Server Locator servisinin çalışıp çalışmağını ve uzak isteklere cevap verip vermediğini kontol eder.
DagMembersUp:
DAG üye sunucularının UP ve Running durumda olduklarını kontol eder.
MonitoringService:
Monitoring WCF Service servisinin çalışıp çalışmağını ve uzak isteklere cevap verip vermediğini kontol eder.
ClusterNetwork:
Network'lerin sağlık durumlarını kontrol eder.
QuorumGroup:
DAG için kullanılan quorum ve witness'ın sağlık durumlarını kontrol eder.
FileShareQuorum:
Witness için kullanılan dizin yolunun erişilebilir olduğunu doğrular.
DatabaseRedundancy:
Database'lerin yeterli yedekliliğe sahip olduklarını kontrol eder.
DatabaseAvailability:
Database'lerin yeterli erişim düzeyine sahip olduklarını kontrol eder.
DBCopySuspended:
Database kopyalarının herhangi birinin 'Suspended' durumda olup olmadıklarını kontrol eder.
DBCopyFailed:
Database kopyalarının herhangi birinin 'Failed' durumda olup olmadıklarını kontrol eder.
DBInitializing:
Database kopyalarının herhangi birinin 'Initializing' durumda olup olmadıklarını kontrol eder.
DBDisconnected:
Database kopyalarının herhangi birinin 'DisconnectedAndHealthy' durumda olup olmadıklarını kontrol eder.
DBLogCopyKeepingUp:
Database kopyası için Log kopyalama ve incelemenin, kaynak sunucudaki Log oluşturma işlemine ayak uydurduğunu doğrular.
DBLogReplayKeepingUp:
Log kaydı tekrarlama işleminin Log kopyalama ve incelemeye ayak uydurduğunu doğrular.

Faydalı olması dileğiyle...


Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.



Yazar Hakkında

firatboyan.com


1985 yılında Alanya'da doğdum. İlk, orta ve lise öğrenimimi Alanya'da tamamladım. Liseden mezun olduktan sonra Akdeniz Üniversitesi Bilgisayar Teknolojisi Ön Lisans programına yerleştim ve bu programdan mezun oldum. Ön Lisans programından mezun olduktan bir süre sonra Dikey Geçiş Sınavı (DGS) ile İstanbul Teknik Üniversitesi (İTÜ) Bilgisayar Mühendisliği Lisans programına yerleştim. 2003 yılından beri Bilgi Teknolojileri sektöründe Sistem ve Network alanlarında çalışıyorum. Bir çok firma bünyesinde farklı projelerde yer alarak bu alanda yıllar içinde ciddi bir bilgi birikimi ve deneyimler kazandım. Bilgi Teknolojileri sektöründeki profesyonel çalışma hayatımın uzunca bir dönemini entegratör firma bazında, ağılıklı olarak Microsoft ürünleri üzerine danışman olarak sürdürüyor ve yüksek seviyeli projeler geliştiriyorum. Uzunca bir süredir de Türkiye'nin en önde gelen entegratör firması olan Data Market bünyesinde Senior Cloud Engineer olarak çalışıyorum. Ek olarak, 2015 yılında Network Akademi bünyesinde Sistem ve Network Uzmanlık eğitimleri vermeye başladım ve 2017 yılında da eğitmenlik tecrübemi, Microsft Certified Trainer (MCT) ünvanı ile taçlandırdım. Eğitmenlik serüvenime 2021 yılından beri Bilge Adam bünyesinde MCT ünvanı ile devam etmekteyim.

YORUMLAR
Bu makaleye henüz yorum yapılmadı! İlk yorum yapan sen ol.
Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.


750 karakter yazabilirsiniz.
Captcha
Güvenlik kodunu BÜYÜK harflerle giriniz.
* Yorumlar, onaylandıktan sonra yayınlanmaktadır.
* E-posta, yorum onay bildirimi için gereklidir. Yayınlanmaz.