Exchage Server güncelleştirilmesi, senaryoları, geçişler planları ve buna benzer bir çok makale,video ve benzeri kaynaklar gerek portalımı üzerindea gerekse bir çok bloglarda paylaşılmıştır. İhtiyaçlarımıza bağlı olarak Exchange organizasyonumuz için, ihtiyaç duyulan geçiş planlarını gerçekleştirdik ve projelendirme adımlarına başladık. Projemizin mevcut durumuna bağlı olarak testlerimizi yaptık ve son olarak mevcut eski exchange sunucumuz üzerinde bulunan kullanıcı mail kutularını yeni kurmuş olduğumuz exchange mimarisine taşımaya başladık.
Yukarıda yer alan ekran görüntüsü içinde Mbx01 isimli exchange mailbox sunucusu üzerinde bulunan bir posta kutusunun Mbx02 isimli exchange mailbox sunucusu üzerine nasıl aktarıldığını gösteren Basic local move request process diyagramı, işlem sırası yer almaktadır.
Bizler bir posta kutusun için taşıma isteği gerçekleştirdiğimizde istek ilk önce organizasyon içinde bulunan Active Directory Sunucularına gider ve taşınacak olan posta kutusunun bilgileri öğrenilir. Ardından taşınacak olan posta kutusunun bağlı bulunmuş olduğu CAS sunucusuna bilgi gider ve istek MRS tarafından kuyruğa alınır. Ardından posta kutusu için taşıma işlemi başlar ve diyagramda gösterildiği adımlar çerçevesinde ilerler/tamamlanır.
Paylaşmış olduğum diyagrama ek olarak, bizler exchange organizasyonu içinde bulunan herhangi bir mailbox sunucusu üzerinde bu işlemi gerçekleştirirecek olursak benzer işlemler sırasıyla oluşur. Bir posta kutusunun nasıl taşınacağının detaylı bilgisini Understanding Move Requests makalesinden yararlanabilirsiniz.
Yukarıda yer alan ekran görüntüsü içinde bir posta kutusunun kaynak sunucudan hedef sunucuya taşınma işlemi gerçekleştirilirken başlatmış olduğumuz işlemin desteklenip,desteklenmeyeceği ve eğer işlem destekleniyorsa başlatmış olduğumuz taşıma işleminin kullanıcı tarafında hissedilip-hissedilmeyeceğinin bilgisi yer almaktadır.
Konuyu detaylandırmak için, Diyagramın haricinde örneklerle açıklama ihtiyacı hissediyorum. Taşıma işlemini gerçekleştirecek olduğumuz posta kutusunun barınmış olduğu Kaynak sunucumuz Exchange 2007 Sp1, hedef sunucumuz ise Exchange 2010 olduğunu varsayarsak taşıma işleminin olmayacağının bilgisi bizlere paylaşılmış durumdadır. Suppoted sutunu altında NO olarak görülmektedir. Taşıma işlemini başlatmadan önce mevcut exchange 2007 Sp1 Sunucumuzu Exchange 2007 Sp2 sürümüne yükseltmemiz gerekmektedir. Kaynak sunucumuz Exchange 2007 Sp2’ ye yükselttikten sonra operasyonu yapacak olduğumuz posta kutumuz desteklenir duruma gelecek ve kesinti olmadan (online move supported) taşınacaktır. Online move işleminden kastımız taşıma işlemi gerçekleştirilirken kullanıcımız mail alıp-vermeye ve exchange sunucumuzun özelliklerini kullanmaya devam edecek ve herhangi bir kesintiye uğramayacaktır.
Son bir örnek vermemiz gerekirse Exchange 2003 Sp2 olan kaynak sunucumuz üzerinden Exchange 2010 sunucumuz üzerine taşıma işlemini gerçekleştirebiliriz fakat bu taşıma işlemi online move özelliğini desteklememekte olup taşıma işlemleri süresince kullanıcılarımız posta kutularına erişemeyecek ve hizmer kesintisi olacaktır. Organizasyonumuzun durumuna, kullanıcılarımızın önem sırasına bağlı olarak bu işlemleri iyi bir şekilde planlamamız gerekmektedir.
Bir posta kutusunun kaynak mailbox sunucusu üzerinden hedef mailbox sunucusu üzerine taşıma için ihtiyaç duyulan istekleri yerine getirdik ve taşıma işlemlerine başladık. Organizasyonumuz içinde bulunan kullanıcı ve berabarinde taşınması planlanan posta kutusu sayısı çok fazla ve yapımız online move işlemini desteklememektedir. Taşıma işlemleri için mesai saati içinde veya dışınada bir zaman dilimi planlandı ve taşıma işlemlerine başlanacak. Problemimiz ayrılan zaman dilimi çok sınırlı ve hizmet kesintisi olacağı için sitreslidir. Birde bu duruma Mailbox Replication Service’ nin varsayılan değerlerinin sınırları, destek boyutları eklendiği zaman işlemler keyif almaz bir duruma gelecektir.
Mailbox Replication Service’ nin varsayılan değerlerinde eş zamanlı olarak taşınacak olan posta kutusu sayısı 2’ dir. Varsayılan değerler sınırında eş zamanlı olarak 2 tane posta kutusunu taşırken diğer posta kutularımız taşınmak üzere kuyrukta bekleyecektir. İsteklerimizin kuyrukta bekleme nedeni sahip olduğumuz Exchange organizasyonu içinde yer alan exchange sunucularının performans yetersizliği nedeniyle sağlık durumlarının bozulmasının engellenmesi ve performans sıkıntısı nedeniyle hizmet kesintisine uğramasını engellemek içindir. Çünkü bir taşıma işlemini başlattığımız zaman bu istek Network performasını, disk I/O’ sunu etki edecektir. Performans haricinde taşıma işlemleri sırasında Mailbox sunucularımız, taşınacak olan her bir posta kutusunun sahip olduğu boyut kadar Transaction Log üretecektir ve performans haricinde Mailbox sunucularımız üzerinde muhtemel yeterli alan sıkıntısına sebep olacaktır.
Bu olası ihtimallerin yaşanılmaması için taşıma isteklerimiz Mailbox Replication Service (MBR) tarafından sınırlandırılmıştır. Bizler organizasyon içinde bulunan sunucularımızın kaynak durumu, sahip olduğumuz ağ ürünlerinin kaynak durumu ve ihtiyaçlarımıza bağlı olarak değiştirme haklarına sahibiz. Varsayılan değerleri değiştirebilmek için Exchange 2010 CAS sunucumuz üzerinde ilgili yolu takip edip <Exchange Installation Path>\Program Files\Microsoft\Exchange Server \V14\ Bin\ MSExchangeMailboxReplication.exe.config dosyasını notepad aracıyla açıp düzenleyebiliriz.
Yukarıda yer alan ekran görüntüsü herhangi bir düzenlemeye uğramamış, varsayılan durumda bulunan MSExchangeMailboxReplication.exe.config dosyasının ekran görüntüsüdür. Ekran görüntüsü içinde yer alan satırların anlamaları ve her bir satır içinde yer alan özelliklerin değer, değiştirebileceğimiz değer bilgileri aşağıda yer almaktadır.
MaxRetries Taşıma işlemleri sırasında MRS servisi hatayla karşılaşırsa var sayılan değerde 60 tane başarısız işlem sonrasında işlem hatayla sonuçlanacaktır. Bu özellik için örnek vermemiz gerekirse taşıma işlemini yapmış olduğumuz bir posta kutusu içinde 60 tane bozulmuş-zarar görmüş ileti olduğu zaman işlem başarısızlıkla sonuçlanacaktır. Bizler bu değeri 0 ile 1000 arasında değiştirebiliriz.
MaxCleanupRetries Taşıma işlemleri sırasınra MRS servisi clean up task görevini çalıştırma ihtiyacı hisseder ve bu ihtiyaç çerçevesinde varsayılan değer olarak 5 tane işlemi gerçekleştirir. Eğer taşıma işlemleri sırasında bu görev 5’ i aşarsa taşıma işlemleri başarısızlıkla sonuçlanmaktadır. Bizler bu değeri 0 ile 100 arasında değiştirebiliriz.
MaxStallRetryPeriod Taşıma işlemleri sırasında, taşıma işleminin gerçekleşmiş olduğu kaynak Mailbox Sunucusu veya Hedef Mailbox Sunucusu üzerinde bulunan Information Store Servisi hata verebilir ve taşıma işlemleri için problemin yaşanmış olduğu mailbox sunucusu üzerinde problemin çözülmesi için taşıma işlemlerini bekletebilir. Böyle bir durum yaşanıldığı zaman MRS servisinin Information Servisinin sağlık durumunun düzelmesi için bekleyecek olduğu süredir. Varsayılan değer 00:15:00 (15 dakika)’ dir. MRS servisi bu değer süresince bekler ve bekleme süresi sonrasında Information Store Servisi tarafından düzeldi bilgisi gelmezse taşıma işlemi başarısız olur. Bizler bu değeri 00:00:10 (10 saniye) ile 05:00:00 (5 saat) arasında değiştirebiliriz.
RetryDelay Posta kutusu taşıma işlemleri sırasında MRS servisi her hangi bir şekilde hatayla karşılaşırsa ne kadar süre sonra görevi çalıştırmak için tekrardan çalışır duruma geleceğini belirleriz. Varsayılan değer 00:00:30 (30 saniye) ‘ dir. Bizler bu değeri 00:00:10 (10 saniyede)’ den 00:30:00 (30 dakika) arasında değiştirebiliriz.
MaxMoveHistoryLength Bu özellik taşınacak olan posta kutusunun sağlık durumunu korumak için hareket geçmişini denetler. Varsayılan değer olarak her bir posta kutusu için 2 hareket geçmişidir. Bizler bu değeri 0 ile 100 arasında değiştirebiliriz.
MaxActiveMovesPerSourceMDB Posta kutusunun taşınacak olduğu Kaynak database’den eş zamanlı kaç adet mailbox taşıma işleminin yapılabileceğini belirtir. Varsayılan değer aynı anda 5 taşıma işlemine izin vermektedir. Bizler bu değeri 0 ile 100 Arasında değiştirebiliriz.
MaxActiveMovesPerTargetMDB Posta kutusunun taşınacak olduğu hedef database eş zamanlı kaç adet mailbox taşımanabileceğini belirtir. Varsayılan değer eş zamanlı 2 taşıma işlemine izin vermektedir. Bizler bu değeri 0 ile 100 Arasında değiştirebiliriz.
MaxActiveMovesPerSourceServer Posta kutusunun taşınacak olduğu kaynak databaseden eş zamanlı kaç adet mailbox taşımanabileceğini belirtir. Varsayılan değer eş zamanlı 50 taşıma işlemine izin vermektedir. Bizler bu değeri 0 ile 1000 Arasında değiştirebiliriz.
MaxActiveMovesPerTargetServer İşlemin başlamış olduğu zamanda hedef server’a kaç adet posta kutusunun taşıma işleminin yapılacağını belirler. Varsayılan değer es zamanlı 5 tanedir. Bizler bu değeri 0 ile 1000 Arasında değiştirebiliriz.
MaxTotalMovesPerMRS MRS servisi üzerinden eş zamanlı taşınacak olan Posta kutusunun sınırlarıdır. Varsayılan değer aynı anda 100 taşıma işlemine izin verir. Bizler bu değeri 0 ile 1024 Arasında değiştirebiliriz.
FullScanMoveJobsPollingPeriod MRS servisinin yeni taşıma işlemlerini hangi aralıklarla kontrol edeceğini belirler. kaç dakikada bir control edeceğini belirler. Varsayılan değer 00:10:00 (10 Dakikadır). Bizler bu değeri 00:03:00 (3 dakika)’ dan 1.00:00:00 (1 gün)’ e kadar değiştirebiliriz.
http://technet.microsoft.com/en-us/library/ff963524.aspx
Yukarıda vermiş olduğumuz bilgiler çerçevesinde ve taşıma işlemlerindeki ihtiyaçlarımız doğrultusunda mevcut MSExchangeMailboxReplication.exe.config dosyası içinde gerekli düzenlemeleri gerçekleştirdik. Yapmış olduğumuz değişikliklerin özeti Kaynak Mailbox Database içinden Hedef Database içine taşınacak olan eş zamanlı posta kutusu sayısını 50 Adet’e yükselttik. MRS servisi üzerinden eş zamanlı taşınacak olan posta kutusu sayısını 400 olarak belirledik.
Yapmış olduğumuz değişiklikleri kaydettik ve Exchange CAS sunucumuz üzerinde bulunan Microsoft Exchange Mailbox Replication servisini re-start ettik.
Eğer exchange organizasyonumuz içinde birden fazla CAS sunucusu bulunuyor ve bu cas sunucularımız bir CAS array ortamının üyesi durumundaysa aynı değişiklikleri her bir cas sunucusu üzerinde yapmamız gerekmektedir. Önerim bu değişikliklerin bir tane Cas sunucusu üzerinde yapılması ve işlem sonrasında MSExchangeMailboxReplication.exe.config dosyasının kopyalanıp diğer cas sunucularının ilgili bölümlerine yapıştırılmasıdır. Böylelikle olası bir parametre yanlışlığının önüne geçmiş olacağız. Parametreler yanlış girilirse veya maksimum değerlerinin üzerinde değerler verilirse taşıma işlemlerinde problem yaşanacak ve işlemler başlamayacaktır. Bu sebepten ötürü değişiklikler yapılmadan önce mevcut MSExchangeMailboxReplication.exe.config dosyasının bir yedeğini almayı unutmayalım.
İşlemlerin sonrasında taşıma isteklerini tekrardan başlatıyoruz. Ve görüldüğü gibi eş zamanlı olarak 50 adet posta kutusunun taşındığını görebilmekteyiz.
Aşağıda varsayılan değerlerin ve değiştirilmiş MSExchangeMailboxReplication.exe.config dosyasını değerlerini görebilirsiniz.
Varsayılan Değerlere sahip MSExchangeMailboxReplication.exe.config dosyası.
<MRSConfiguration
MaxRetries = “60”
MaxCleanupRetries = “5”
MaxStallRetryPeriod = “00:15:00”
RetryDelay = “00:00:30”
MaxMoveHistoryLength = “2”
MaxActiveMovesPerSourceMDB = “5”
MaxActiveMovesPerTargetMDB = “2”
MaxActiveMovesPerSourceServer = “50”
MaxActiveMovesPerTargetServer = “5”
MaxTotalMovesPerMRS = “100”
FullScanMoveJobsPollingPeriod = “00:10:00”
MinimumTimeBeforePickingJobsFromSameDatabase = “00:00:04”
ServerCountsNotOlderThan = “00:10:00”
MRSAbandonedMoveJobDetectionTime = “01:00:00”
BackoffIntervalForProxyConnectionLimitReached = “00:30:00”
DataGuaranteeCheckPeriod = “00:00:10”
DataGuaranteeTimeout = “00:30:00”
DataGuaranteeLogRollDelay = “00:01:00”
EnableDataGuaranteeCheck = “true”
DisableMrsProxyCompression = “false”
DisableMrsProxyBuffering = “false”
MinBatchSize = “100”
MinBatchSizeKB = “256” />
</configuration>
İhtiyaçlarımız çerçevesinde değiştirilmiş MSExchangeMailboxReplication.exe.config dosyası.
<MRSConfiguration
MaxRetries = “60”
MaxCleanupRetries = “5”
MaxStallRetryPeriod = “00:15:00”
RetryDelay = “00:00:30”
MaxMoveHistoryLength = “2”
MaxActiveMovesPerSourceMDB = “50”
MaxActiveMovesPerTargetMDB = “50”
MaxActiveMovesPerSourceServer = “200”
MaxActiveMovesPerTargetServer = “200”
MaxTotalMovesPerMRS = “400”
FullScanMoveJobsPollingPeriod = “00:10:00”
MinimumTimeBeforePickingJobsFromSameDatabase = “00:00:04”
ServerCountsNotOlderThan = “00:10:00”
MRSAbandonedMoveJobDetectionTime = “01:00:00”
BackoffIntervalForProxyConnectionLimitReached = “00:30:00”
DataGuaranteeCheckPeriod = “00:00:10”
DataGuaranteeTimeout = “00:30:00”
DataGuaranteeLogRollDelay = “00:01:00”
EnableDataGuaranteeCheck = “true”
DisableMrsProxyCompression = “false”
DisableMrsProxyBuffering = “false”
MinBatchSize = “100”
MinBatchSizeKB = “256” />
</configuration>
Umarım faydalı bir makale olmuştur.