Exchange Server

Exchange Server 2016 DAG Activation Preference Değişimi – PreferenceMoveFrequency

Exchange Server 2010 sürümünden beri son derece başarılı bir şekilde çalışan DAG mimarisi sayesinde kesintisiz bir mail sistemi deneyimi sunmaktadır. Aslen 2007 sürümünde temelleri atılan ancak 2010 sürümü ile ideal yapıya kavuşan DAG yani temelde log replikasyonu sayesinde mailbox sunucuları arasındaki eşitleme özelliği sayesinde olası bir sorunda posta kutusu seviyesinde herhangi bir kesinti olmadan kullanıcılarımız mailerine ulaşmaya devam edebilmektedir.

clip_image001

 

Ancak her yeni sürüm hatta CU güncellemesi ile DAG üzerinde birtakım iyileştirmelerin yapıldığını da görüyoruz. Aslında bunlar küçük iyileştirmeler olsa bile son derece önemli sonuçlar doğurabiliyor. Bende bu makalemde aslında Exchange Server 2019’ un çıktığı şu dönemde Exchange Server 2016 CU2 ile gelen yeni bir özelliği yazmak istedim. Peki nedir bu yeni özellik ve neden şimdi yazma ihtiyacı duydum?

Öncelikle değişim aslında DAG mimarisi içerisindeki Activation Preference olarak isimlendirdiğimiz pasif kopyalar için öncelik sırası olarak da özetleyebileceğimiz bir mekanizmanın “PreferenceMoveFrequency” olarak isimlendirilen yeni bir özellikle güçlendirilmesidir. DAG mimarisini bilen ve kullanan sistem yöneticilerinin tecrübe ettiği gibi aslında Activation Preference çok kritik bir değer olup hangi veri tabanının öncelikle hangi sunucu üzerinde aktif olacağını seçebiliyoruz, bu sayede olası bir yama yükleme, sunucu kapatma açma veya felaket sonrasında sistem planladığımız tasarıma göre yük dağılımını gerçekleştirebilecektir. Ancak genel sorun Türkiye başta olmak üzere pek çok yapıda Exchange Server DAG mimarisi aynı site içerisinde 2 sunucu ile kurulmaktadır. Yani 1000 üstü kullanıcı bile olsa daha güçlü iki makine ile tüm posta kutularına hizmet verebilmekteyiz. Tabiki banka, Telekom, gsm veya büyük şirketlerde kullanıcı sayıları 5000, 10.000, 30.000 şeklinde arttıkça mimari büyüyor. Ancak zaten o boyuttaki şirketlere genelde bizim gibi üst seviye yapılarda danışmanlık yapmış insanlar destek verdiği için makalenin konusu olan özelliği biz bu CU güncellemesine kadar zamanlanmış görevler ile elle yapıyorduk. Yani bir nevi büyük yapılar zaten başının çaresine bakıyordu.

Sorun neydi peki?

Basit olarak iki sunucu kurdunuz ve 5 tane veri tabanı açtınız, açma sıranıza göre zaten sunucu1 hepsi için aktif sunucu2 ise hepsi için pasif yani öncelik numarası 2 olarak belirlenmektedir.

Örnek bir veri tabanı aktif kopyasında öncelik sıralaması 1 dir.

clip_image002

Bunun kopyasında ise bu numara 2

clip_image003

Başka seçeneğin olmamasının sebebi ortamda 3. Bir mailbox sunucusu yoktur. Sorun nerede ortaya çıkıyor? Örneğin 5 veri tabanının 3 tanesini ilk sunucuya 2 tanesini ikinci sunucuya attınız güzel güzel aktif – aktif çalışıyorsunuz ancak birinde bir kesinti oldu, yama yüklendi veya restart oldu, tüm DB ler nereye geçer? Kalan aktif sunucuya peki ondan sonra ne olur bir daha ki kesinti veya sizin elle müdahalenize kadar o sunucuda çalışmaya devam eder. İşte tam bu noktada ben devreye giriyordum ve müşterilerimizin sahip oldukları tüm bilgisayar ve depolama gücünü daha doğru kullanması için zamanlanmış görev üzerinde her gece 22:00 de PS çalıştırıyordum, bu PS ne yapıyordu peki? Tüm DB leri tekrar sunucuların arasında dağıtıyordu. Microsoft da bunu bildiği için aslında Exchange 2016 CU2 sonrasında artık bu işi otomatik yapan bir özellik ekledi ve ismine de “PreferenceMoveFrequency” dedi. Tabiki burada yine Activation Preference önemli, yani onu mutlaka istediğiniz gibi bir kereye mahsus düzenlemeniz gerekli, daha sonra eğer bu özelliği aktifleştirirseniz her saat başı bu dağıtımı herhangi bir kesinti olmadan Exchange server’ ın kendisi yapacaktır. Kesinti olmaması için tabiki database kopyalarının kontrolü sonucunda bu taşıma gerçekleşecektir. Eğer isterseniz bu özellik için saat aralığını değiştirebilir veya kapatabilirsiniz.

Bu özellik ne yazık ki Exchange Server 2013 üzerinde yoktur.

Peki nasıl yapılandırıyoruz;

Öncelikle bu özelliği kullanmak için ortamınızda minimum Exchange Server 2016 CU2 ve üstü bir sürüm olmalıdır.

Daha sonra PS ile başlayabiliriz;

clip_image004

Eğer CU2 geçilmiş ise durumun yukarıdaki gibi olduğunu görebilirsiniz. Yani varsayılan olarak her 1 saatte bir kontrol eder ve değişim gerekiyor ise ( aktifleşme numarasına göre uygun olmayan yerde bir veri tabanı var ise ) bunu gerçekleştirir.

Peki süreyi değiştirebiliyor muyuz? Yani örnek saat başı değil de 12 saatte bir yapsın? Örnek komut aşağıdaki gibidir;

Set-DatabaseAvailabilityGroup -Identity DAG1 -PreferenceMoveFrequency 12:00:00

DAG1 yazan yere kendi ortamınızdaki DAG ismini yazmanız yeterlidir.

clip_image005

Sonuç

clip_image006

Peki bu özelliği kapatmak isterseniz;

Set-DatabaseAvailabilityGroup -Identity DAG1 -PreferenceMoveFrequency ([System.Threading.Timeout]::InfiniteTimeSpan)

Sadece DAG1 yazan yere sizin ortamınızdaki DAG ismini yazmanız yeterli.

clip_image007

Sonucu tekrar kontrol ettiğinizde ise durum aşağıdaki gibidir

clip_image008

Ya da bu komut da aynı işi görmektedir;

Set-DatabaseAvailabilityGroup -Identity DAG1 -PreferenceMoveFrequency 00:00:00

Burada önemli nokta eğer sizde benim gibi bu özelikten önce RedistributeActiveDatabases.ps1 ile zamanlanmış görev tanımlamış iseniz artık bunu kaldırabilirsiniz.

Bir diğer önemli konu ise yaptığınız tüm bu değişikliklerden sonra Replication servisini restart etmeniz gerektiğidir.

clip_image009

Peki bu işlemleri nasıl takip edeceğiz?

Öncelikle olay günlüklerinden veri tabanı move işlemlerini görebiliriz;

Bunun için aşağıdaki olayları takip edebilirsiniz;

Event Log – Application and Services Logs – Microsoft – Exchange – HighAvailability – Operational altında Event ID 322 olarak takip edebilirsiniz.

 

clip_image010

Veya aşağıdaki gibi son derece kullanışlı bir komut seti ile html bir rapor alabilirsiniz

.\CollectOverMetrics.ps1 -DatabaseAvailabilityGroup DAG1 -StartTime “10/01/2018” -EndTime “10/27/2018” -GenerateHTMLReport –ShowHTMLReport

clip_image011

clip_image012

Hatta canlı bir sistemde bir süre beklerseniz elle yaptığınız bir switch over sonrası DB’ lerin öncelikli yerlerine döndüğünü görebilirsiniz.

clip_image013

Örneğin yukarıdaki işlemi ben server switch over ile gerçekleştirdim. DB06, EXC02 den EXC01 e gitti, ancak öncelik aktivasyon DB’ si EXC02 olduğu için bir süre sonra ( her saat başı kontrolde) otomatik olarak eski yerine geri döndü;

 

clip_image014

 

Evet bir makalemin daha sonuna geldim. Umarım faydalı bir makale olmuştur. Bir sonraki makalemde görüşmek dileği ile.

Kaynak

https://docs.microsoft.com/en-us/exchange/high-availability/manage-ha/monitor-dags?view=exchserver-2019

 

 

Hakan Uzuner

2002 yılından beri aktif olarak bilişim sektöründe çalışmaktayım. Bu süreç içerisinde özellikle profesyonel olarak Microsoft teknolojileri üzerinde çalıştım. Profesyonel kariyerim içerisinde eğitmenlik, danışmanlık ve yöneticilik yaptım. Özellikle danışmanlık ve eğitmenlik tecrübelerimden kaynaklı pek çok farklı firmanın alt yapısının kurulum, yönetimi ve bakımında bulundum. Aynı zamanda ÇözümPark Bilişim Portalı nın Kurucusu olarak portal üzerinde aktif olarak rol almaktayım. Profesyonel kariyerime ITSTACK Bilgi Sistemlerinde Profesyonel Hizmetler Direktörü olarak devam etmekteyim.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu