Server 2012 Hyper-V Replica Oluşturma Seçenekleri
Hyper-v Replica özelliği bundan önceki windows işletim sistemlerinde 3 parti (third party) programlar aracılığıyla yapılabilen bir işlem iken Windows Server 2012 sayesinde işletim sistemine entegre ve ücretsiz bir hale getirildi.
Bu konudaki teknik detaylara aşağıdaki link üzerinden ulaşabilirsiniz
http://www.cozumpark.com/blogs/virtualization/archive/2012/06/17/hyper-v-replica.aspx
Daha önceki server sürümlerinde multisite cluster senaryolarını incelemiş arkadaşlar için önkoşul “destekleniyor, ama replikasyon yazılımla veya donanımla size ait” şeklindeydi. Bunun için yazılımsal olarak DoubleTake, SteelEye, CA gibi yazılımları veya depolama ünitenize ek lisansla alacağınız depolama replikasyonlarını kullanmanız gerekirdi.
Hyper-v replica kullanabileceğiniz senaryolar da adresini verdiğim makaleden incelenebilir. Biz bu makalede birkaç senaryo için oluşturulma ayarlarını inceleyeceğiz.
Replikasyon oluşturmak için ileri seviyede bilgiye pek ihtiyacınız kalmıyor. Yapmanız gereken işlemler veya eksiklikleriniz hakkında neredeyse tüm Microsoft ürünlerinde olduğu gibi bilgilendiriliyorsunuz. Benim oluşturacağım yapıda cpcls-testa ve cpcls2-testa adında iki sunucum bulunmakta. Bu iki sunucu birbirlerine bir router ile bağlı durumdalar ve bu router üzerinden iletişime geçilen portları da sizinle paylaşacağım.
Replika oluşturmak için AD yapısına yalnızca cluster sunucuları hedef veya kaynak olarak kullanacaksak gerek vardır. Bu seçenek, hyper-v’yi sanallaştırma platformu olarak seçmiş hiçbir yerde domain ortamının olmamasına rastlamadığımdan ilk bakışta gereksiz gibi görünse de hyper-v hostlarını çeşitli sebeplerle domaine dahil etmemiş kurumlar için uygulanabilir görünüyor. Ben bu yapıda oluşturduğum sanal sunucuları bir sonraki hyper-v replica broker makalesinde de kullanacağımdan ve hostlarımın domaine katılmasında herhangi bir sakınca görmediğimden tüm işlemleri AD üyeliği üzerine yapacağım.
Her iki hyper-v hostumda da özellikleri içerisinden “replication configuration (replikasyon ayarları)” menüsünden gerekli ayarlamalarımı yapıyorum. Bu ayarlar içerisinde öncelikle sunucuyu replikasyon ağının bir üyesi yapmak için “enable this computer as a replica server (bu sunucuyu bir replika sunucusu olarak aktive et)” seçeneğini seçtikten sonra diğer ayarların da erişilebilir olduğunu göreceğim. (1)
Replike edilen dosyalarımın hangi port üzerinden alınacağı da bu aşamada ayarlayabilirim. HTTP portunu seçtiğimde veriler şifresiz gönderileceğinden ben sertifika tabanlı bir replikasyonu seçiyorum. Aslında HTTP seçtiğinizde Kerberos gerektiğinden her iki sunucunun da aynı veya güven ilişkili (trusted) domainler içerisinde olması ve Windows Ipsec ile şifrelenebileceğinden güvensiz diyemeyiz.(2) AD yapınızda bir certification authority bulunması halinde “select certificate” butonu ile sunucunuz otomatik olarak talepte bulundupu sertifika bulunup kullanılacaktır. Dilerseniz kendiniz üretmeden güvenilir bir üreticiden ücret karşılığı aldığınız sertifikayı da kullanabilirsiniz. Buradaki sertifikanın özelliklerinde:
Sertifikanın geçerlilik süresi olmalı,
extended key usage (key kullanım amacı) değeri client & server authentication
sertifika için private key sahip olmanız,
diğer sunucunuz tarafından da güvenilir bir kök sertifika üreticisi tarafından sağlanıyor olması,
sunucunun adına üretilmiş veya tüm domaininize hitap edecek bir wildcard sertifikaya sahip olmanız,
signature ve encryption amaçlı olması gerekiyor. (3)
Ek gelen özellikte dilerseniz başarılı giriş yapmış her sunucudan replikasyon kabul edip bunları önceden belirlediğiniz klasöre atabileceğiniz gibi yalnızca belirlediğiniz sunucu veya sunucular üzerinden de replikasyonu kabul etme seçeneğiniz bulunmaktadır. Bu işlem kısmen encryption ayarları yapmadığınız iSCSI targetlarına benzemektedir. Her ne kadar önkoşul iSCSI target iqn veya ipsini bilmekse de bilen herkes bağlanabildiği için veri güvenliğiniz olmayacaktır. Burada da birden fazla yönetici olan ortamlarda sizden başka diğer çalışanın replica serverı gerek disk alanı gerekse diğer kaynaklar için doldurması veya yorması olası olduğundan yalnızca belirlediğiniz sunucular arasında replikasyon yapmanız yararınıza olur. Ayrıca bir atakla replika sunucunuzun kararlılığının da bozulabileceğini atlamayın.
Öncelikle replikasyonu kabul edeceğimiz sunucunun FQDN’ini, sonra replika edilecek hedefi belirliyoruz. Aynı trust group sunucuları replikasyon hakkına sahiptirler. Farklı iki trust group tanımlanması halinde trust grouplar arasında replikasyon olmayacaktır. Buradaki trust group (güven grubu) tanımı AD üzerindeki security grouplara veya kesişim kümelerine benzetilebilir.
Bu aşamadan sonra firewal üzerinde açmanız gereken port belirtilecektir. HTTPS üzerinden replikasyon seçtiğimiz için windows firewall üzerindeki öntanımlı gerekli kuralı izinli hale getirmemiz gerekiyor.
Replikasyon mantığı yalnızca tek yönlü değildir. Replike ettiğiniz sunucunun felaket merkezinizde açılması halinde artık kaynaklarınızı oradan kullanmaya başlayacaksınız. Dolayısıyla geriye dönük bir replikasyon da gerekmektedir. Bu yüzden felaket merkezinizdeki sunucunun da ana sunucunuzdan replikasyon kabul etmesini yukarıdaki ayarları bir de ana sunucunuz da yaparak sağlamalısınız. Aksi takdirde replikasyonu oluştururken hata alacaksınız.
Replikasyonu sanal sunucu bazlı yapacağınızdan Hyper-v Manager üzerinde ilgili sunucunun üzerindeyken “enable replication” (replikasyonu etkinleştir) seçeneği ile devam edeceğiz.
İlk aşamada hedefimizi belirliyoruz. Daha önce bahsettiğim gibi hedef sunucunuzda da gelen replikasyon ayarlarını doğru bir şekilde yapmadıysanız hata alacaksınız.
Hedef sunucuda da HTTPS portunu aktive etmiştim, dolayısıyla 443 portu otomatik geldi, buradaki sertifika da karşıya kendimizi tanıtmamız için gerekli ana sunucunun sertifikasıdır. Select certicate ile tek opsiyonumuz olduğundan otomatik tamamlanacaktır.
Aynı menüde veriyi hedefe gönderirken sıkıştırıp sıkıştırmamasını da ayarlayabiliyoruz.
Bir sonraki aşamamızda sanal sunucumuzun konfigürasyonundan alınan disk bilgilerini göreceğiz. Burada dilediğimiz diski seçip seçmeme şansına sahibiz. Biz burada tek vhd kullanmaktayız fakat birden fazla disk kullanmanız halinde gereksiz disklerinizi burada elemeniz mümkündür. Network üzerinden haberleşme ana fikir olduğundan ne kadar az replikasyon zorunluluğunuz olursa o kadar verimli olacaktır.
Bu yüzden Microsoft tarafından pagefile gibi işletim sisteminin tutarsızlığına (dolayısıyla çalışmamasına) sebep olmayacak kaynakların varsayılan değeri olan işletim sisteminin bulunduğu disk yerine farklı bir disk üzerinden çalıştırılması önerilmektedir. Dolayısıyla bu diski seçmediğinizde daha az veri transfer ediyor olacaksınız. Ama crash dumplardan da vazgeçmiş olacaksınız.
Replikasyon sırasında geriye dönük olarak tutulacak recovery pointleri de bir sonraki aşamada belirleyebilirsiniz. Dilerseniz tek kopya tutabilirsiniz. Ben birden fazla geri dönüş noktası tutacak şekilde ayarladım. Eğer her iki sunucu üzerindeki disk yapınız da uygunsa (replikasyon failover halinde çift taraflı olacağından) birden fazla tutmanız halinde hedef sunucunuzda önceki versiyonlardan çalıştırma şansınız olacaktır. Ek dönüş noktaları için gerek duyulacak ek disk alanı da bilgi olarak verilmektedir.
Replica işlemi sırasında hedef sunucunuz kapalı duracaktır. Failover durumları haricinde en son dönüş noktanızdan sunucunuzu açmamalısınız. Ayrıca geri dönüş noktalarınızın çokluğu sunucu içerisinde oluşabilecek işletim sistemsel hatalar vs. için de geri dönüş noktası sağlayacaktır.
VSS incremental kopyalar ile de her ne kadar uygulamalarınızda yavaşlıklar gözlemleseniz de tutarlılık sağlama şansınız vardır.
Bir sonraki aşamamız ilk replikasyonun nasıl yapılacağı ile ilgilidir. Buradaki işlemlere tek tek değineceğiz.
İlk seçeneğimiz network üzerinden hemen replikasyona başlamaktır. Özellikle felaket merkezleriyle olan yavaş bağlantılarda bu seçeneği kullanmanız hem zaman hem de dedike bir hattınız yoksa performans kaybına yol açabilir. Her ne kadar tam örnek olmasa da 250-300 GB civarlarında 4 veritabanından oluşan Exchange DAG yapısı 5Mbit/sn üzerinden dört günde taşınmıştı. Dediğim gibi uygulamalar farklı ama bu seçeneğin sonuçları hakkında fikir verebilir.
Performanstan etkilenmemeniz için bu ilk replikasyonu zamanlama şansınız da bulunmaktadır. Replikasyonu ayarlama sürenizden bir hafta sonrasına kadar bir sürede zamanlanmış görev olarak çalıştırabilirsiniz.
Diğer seçenekleri eğer veri boyutunuz çok büyükse ve felaket merkezinize fiziksel olarak ulaşma şansınız varsa kullanabilirsiniz.
İlk olarak ilk veriyi harici bir dosyaya alarak replikasyonu başlatabilirsiniz. Ben bu seçenek için ilk kopyanın atılacağı bir klasör belirledim ve fiziksel olarak diğer sunucuya ulaşma şansım olduğundan kalan işlemlerimi bu şekilde yapacağım.
Son aşamada replikasyon ile ilgili tüm ayarlar dökülüyor. Finish butonuyla herhangi bir sorununuz yoksa replikasyonun etkinleştirildiği bilgisini alacaksınız.
İlk kopyayı harici bir ortama al seçeneğini işaretlemiştim ve bunun yolu olarak c:\vhdreplica klasörünü göstermiştim. Sunucumu hyper-v manager üzerinden kontrol ettiğimde “initial replica” adında bir snapshot alındığını görüyorum. Klasör içinde de istediğim ilk kopya oluşturulmaya başlanmış durumdadır.
Bu kopyalam işlemi bitip, snapshot online olarak merge edilmeden dosyalarımı alıp diğer sunucum üzerinde işlem yapma şansım yok.
Bu kopyalam işlemi bitip, snapshot online olarak merge edilmeden dosyalarımı alıp diğer sunucum üzerinde işlem yapma şansım bulunmuyor. Dolayısıyla hyper-v manager üzerinden “status (durum)” sütununda işlemin durumunu kontrol edeceğim.
Bu sırada sunucuyu merge işlemi için kapatıp açma zorunluluğum bulumuyor. Kapatıp açmam halinde de replikasyonum etkilenmiyor.
İşlemim bittikten sonra belirlediğim klasörün tamamını alıp diğer sunucuma alıyorum.
Replikasyonu oluşturduktan sonra aynı konfigürasyona sahip bir sunucunun hedefim üzerinde oluşmuş olması gerekiyor. Ve bu sunucu değiştiremeyeceğiniz 5dk.lık sürelerde ilk kopyanız henüz ulaştırılmamış olsa bile replikasyona başlamış durumdadır. Fakat ilk kopya işlenmeden failover gibi bir seçeneğimiz bulunmuyor.
Aldığım kopyayı diğer sunucu üzerine import etmek için hedefteki sanal sunucumun üzerine sağ tıklayıp “replication” menüsünden “import initial replica” seçeneğine gidiyorum.
İlk işlem sonrası hali aşağıdaki gibi olacaktır.
İlk kopya replikasyonu için diğer seçeneğimiz farklı bir sunucu ile deneyeceğimiz “use an existing virtual machine on the replica server as the initial copy (replika sunucu üzerinde varolan bir sanal sunucuyu ilk kopya olarak kullan)” seçeneğidir.
Bu seçenek ilk bakışta aynı işletim sistemine sahip başka bir sunucuyu kullanabilmemiz gibi görünüyor. Mesela bir diffencing disk gibi kullanılabilirmi? Aşağısındaki açıklamayı okuduğunuzda böyle bir mantık olmadığı görülüyor. Eğer sanal sunucuyu replika sunucu üzerine restore yaptıysanız kullanılabilecek bir özelliktir. Aynı GUID, konfigürasyon ve disk yapısına sahip olmaları gerekiyor.
Bu durumu deneme amaçlı olarak nasıl yapabilirim diye düşünürken cin fikirlilikte sınır tanımayan milletimden aldığım güçle neden sunucuyu export etmiyorum ki dedim J Aşağı yukarı bir önceki aşamaya denk gelmiş oluyoruz ama diğerinden farkı export işlemi sırasında sunucumuzun kapalı olma zorunluluğu olacak. Export işlemi sonrası hedef sunucumuza gidip deneme yapacağım.
Daha önce de bahsettiğim gibi sunucuların ID değerlerinin aynı olması gerektiğini biliyorum dolayısıyla hedefe import ederken elimde kalan “register the new virtual machine in-place (use existing unique ID) –aynı IDyi kullanarak olduğu yerde kaydet (tüm export flash diskimde kalacak ama sunucu üzerinden çalıştırabileceğim)” ve “restore the virtual machine (use existing unique ID) –aynı IDyi kullanarak sunucuyu restore et (flash diskimden gerekli herşeyi diskime kopyalayacağım)” seçenekleri oluyor.
İlk seçeneği denediğimde aşağıdaki gibi disklerin olması gereken yerde olmadığı ile ilgili bir hata alıyorum.
Bu sırada kafamda replikasyonu oluştururken okuduğum “the restored machine will be used as initial copy (restore edilmiş sunucuyu ilk kopya olarak kullan)” seçeneğindeki RESTORE kelimesi yankılanıyor J
Hemen restore seçeceğimi kullanıp replikasyonu sorunsuzca oluşturuyorum.
Replikasyonlarım sorunsuz başladı. Network üzerindeki aktiviteye baktığımda aşağıdaki gibi HTTPS (443) RPC (135, 49153-49155) portlarının çalıştığını görüyorum. Eğer çok güvenlikli bir yapıdaysanız RPC için dinamik portları http://support.microsoft.com/kb/908472/en-us makalesinden yardım alarak düzenleyebilirsiniz.
Başlangıç işlemleri ayrıntılara dikkat edildiğinde çok kolaydır. Sağlığını kontrol etmek istediğimizde de aynı kolaylığa sahibiz. Öncelikle replikasyonunu ayarladığımız sunucuların Hyper-V manager üzerinden replikasyon durumlarına “replication” menüsü altından “replication health” seçeneği ile kontrol edebiliriz.
Açılacak pencerede, sorunlarımız, replike edilen data vs. gibi bilgiler bulunmaktadır. Aldığınız hataları “view events (olayları göster)” linkiyle görebileceğiniz gibi event viewer >> applications and services >> microsoft >> windows >> hyper-v vmms >> admin içerisinden de görebilirsiniz.
Gelişmiş ayarlarına sanal sunucu üzerine sağ tıkladığımızda replikasyonu aktive ettikten sonra ortaya çıkan ek seçeneklerle yapabiliriz. Burada “failover TCP/IP” seçeneği öne çıkmaktadır. Genellikle felaket merkezleriyle ana yapılar farklı subnetlere sahiptirler. Ve bu seçenekleri yapılandırmadığınız müddetçe merkezdeki sunucu üzerinde ayarlı sabit IP adresleri felaket merkezine aktarıldığında da aynı şekilde devam edecektir. Ayarınız sunucunun bu host üzerine geçtiğinde hangi Ipyi kullanacağınızı belirler. Bu ayarlamayı her iki taraf için de ayrı ayrı tanımlamanız gerekmektedir.
İkinci seçeneğimiz “replication” menüsündedir. Replikasyon tanımlaması sırasında yaptığımız tüm seçenekleri (kullanılan port, sertifika, geri dönüş noktası sayısı, vs) burada değiştirme şansına sahipsiniz.
Daha önceki yapılandırmamızdan hariç burada bir de “resynchronization” seçeneği bulunmaktadır. Herhangi bir sebeple tekrar senkronizasyon gereken durumlarda bu işlem performansınızı etkileyecek bir işlem ve ağ yükü getirecektir. Elle (manually) seçmeniz halinde daha önce üzerinden geçtiğimiz replication health kısmını sürekli kontrol ediyor olmalısınız. Otomatik seçtiğinizde zaman belirleme şansınız olmadığından gün içinde kullanıcı şikayetleri almanız olasıdır. Bu sebeplerle varsayılan değer olarak mesai saatleri sonrası (18:30-06:00) ayarlı haldedir.
Peki oluşturulmuş bu replike sunucuları nasıl kullanacağız. İlk kullanım şekli “planned failover” seçeneğidir. Bu şekilde eğer kaynak sunucunuzu kapalı hale getirirseniz, replike olmamış son değerleri (5dklık replikasyon periyodunun içindeyken) hedefe gönderip oradan başlamasını sağlarsınız. Daha sonrasında “reverse replication (ters replikasyon)” başlayacaktır.
İkinci bir seçenek “test failover” dır. Daha önceden hedefteki sunucunuzun failover halleri dışında kapalı olması gerektiğinden bahsetmiştim. Fakat verinizin sağlamlığını gözünüzle de görmek isterseniz istediğiniz herhangi bir geri dönüş noktasından bir test failover başlatabilirsiniz. Bu sırada sanal sunucunuzun bir kopyası oluşur ve geri dönüş noktasından açılır (1) Replikasyon test işleminiz için farklı bir sunucu oluşturulmuş olmasından dolayı etkilenmez. Ana sunucunuzu yine start komutuyla açamıyor durumda olursunuz. (2)
Failover seçeneği de yapılabilecek son işlemdir. Kullanım amacı merkezinizde herhangi bir sorun olması durumunda (sanal sunucunun sorunundan tutun da, hosttan networke kadar) sizi kurtaracak işlemdir. Şuana kadar hep sunucuyu start etmeyi denemiştik. Fakat hedefteki sunucumuzun “replication” menüsüne gittiğimizde bir failover seçeneği çıkacaktır.
Sunucular birbirleriyle haberleşebiliyorken bu seçeneği “kaynak sunucu açık” sebebiyle kullanamayacaksınız. Bu yüzden hyper-v virtual machine management servisini kapatarak deneme yapacağım.
Sunucu artık felaket merkezinde açılacaktır. Bu işlem tamamen plansız olduğundan dolayı son değişen verilerde replikasyon yapılamadı. Merkezdeki yapıma bir daha ulaşabilememe veya açıldıktan sonra yeni merkezimdeki değişiklikleri sorunsuz alması için “Reverse replication” işlemlerini yapmalıyız. Çünkü artık kim sahip kim köle belli değil.
Replikasyonu tamamen kesip, tüm işlemleri baştan yapmak da bir çözümdür.
Replica ile ilgili işlemlerin ayrıntıları ve önerilen kontrol senaryoları ile ilgili ek bilgilere http://blogs.technet.com/b/virtualization/archive/2012/08/08/types-of-failover-operations-in-hyper-v-replica-part-iii-unplanned-failover.aspx adresinden ulaşabilirsiniz.