Server performansının tatminkar olması, hata töleransı gibi önemli etkenleri lehimize çevirmek için aynı hizmeti veren çoklu Terminal Server ortamına ihtiyaç duyarız. ?Terminal Server Farms? olarak adlandırılan bu ortamlarda kullanıcı oturumlarının yönetimi ve performans açısından Session Directory ve NLB (Network Load Balancing) hizmetlerini birlikte nasıl kullanacağımızı bu makalenin sonunda öğrenmiş olacağız.
Session Directory en basit tanımıyla, hangi kullanıcının hangi Terminal Server üzerinde hangi oturumu açtığı bilgisini tutan bir veritabanıdır. Bu bilgi sayesinde, çoklu Terminal Server ortamlarında disconnect olmuş bir kullanıcı yeniden bağlanmak istediğinde, daha önce açmış olduğu oturuma yönlendirilir. Böylece aynı kullanıcı birden fazla Terminal oturumu açarak daha fazla kaynak tüketilmesine yol açmamış olur.
NLB ise aynı hizmeti veren birden fazla Terminal Server? in gelen oturum taleplerini aralarında paylaştırmak amacıyla kullanılan bir teknolojidir. Kullanıcılar tek bir IP adresi üzerinden sanki tek bir sunucuya bağlanıyormuş gibi oturum açma talebinde bulunurken NLB gelen talepleri iş yükünü dengelemek adına arka planda Terminal Server? lara paylaştıracaktır. (NLB konusunda daha detaylı bilgi için sitemizdeki Network Load Balancing Service makalesini okuyabilirsiniz.)
Şekil ? 1 Yukardaki Terminal Server Farm ortamını oluşturacağız.
Yukarıda belirttiğimiz yapıyı kurmak için belirli şartların yerine getirilmesi gerekiyor;
Kullanıcıların terminal oturumlarının yönetimi için Session Directory Service? inin bir server üzerinde çalışıyor olması gerekir. Bu servisin çalıştığı bilgisayar Terminal Server? lardan birisi olabileceği gibi farklı bir bilgisayarda olabilir. Bu noktada dikkat edilmesi gereken husus, hem session directory service? inin çalıştığı hem de Terminal Server olarak yapılandırılacak bilgisayarların işletim sistemlerinin Windows Server 2003 Enterprise yada Data Center Edition olması gerektiğidir.
Genel bilginin ardından şimdi Şekil-1? deki yapının nasıl hayata geçirileceğine göz atalım;
İlk olarak Terminal Server? lerimizin makale serisinin ilk bölümünde anlatıldığı gibi kurulması gerekir. Licence Server olmayan 120 günlük geçici lisanslı kurulumu seçmeye dikkat edelim.
NLB ve Session Directory service? lerinin üzerinde çalışacağı bilgisayarda başlangıç olarak disable konumda bulunan Session Directory Service? inin başlangıç durumu ?Automatic? olarak değiştirilip servis başlatılmalıdır.
Şekil ? 2 Session Directory Service? inin durumunun değiştirildiği ekran
Servisin başlatılmasının ardından söz konusu bilgisayarda c:/windows/system32 dizininin altında ?tssesdir? adıyla yeni bir klasör otomatik olarak oluşur. Bu klasör Session Directory? e ait veritabanı ve log dosyalarını barındırır.
Aynı zamanda yine servisin başlatılmasının ardından ?Session Directory Computers? adıyla yeni bir grup hesabı otomatik olarak oluşur. Eğer Session Directory Service? inin çalıştığı bilgisayar bir Domain Controller ise oluşacak grup bir Domain Local Security grup olacaktır. Bu grup hesabı adından da anlaşılacağı üzere Terminal Server olarak yapılandırdığımız bilgisayarların hesaplarının üye yapılacağı gruptur.
Şekil ? 3 Active Directory üzerinde Session Directory DL Grubu ve Üyeleri
Şekil-3? de de görüldüğü üzere Terminal Server olarak konfigüre ettiğimiz Session-1 ve Session-2 bilgisayarlarının hesaplarını Session Directory grubuna üye yapıyoruz. Böylece servis hangi Terminal Server? ların oturumlarını yöneteceğini biliyor.
Bu aşamada sıra, NLB hizmetini devreye almaya geldi. Yük dengeleme yapmamızı sağlayacak olan NLB Microsoft? un 2003 üzerindeki service? lerinden biridir. Biz örnek uygulamamızda NLB ve Session Directory Service? ini aynı server üzerinde yapılandırdık. NLB için farklı bir server yapılandırılabileceği gibi 3. party bir yük dengeleme (Load Balancer) programı da çözüm olarak seçilebilir. Bu konudaki farklı firmalara ait çözümler konusunda makalenin sonunda daha ayrıntılı bilgi bulabilirsiniz.
Bizim yapımızda NLB hizmeti domain controller üzerinde çalışıyor. NLB Manager konsolunu açıp yeni bir cluster oluşturup bir ?Cluster Name? ve ?Cluster IP? belirlememiz gerekiyor. Örnekte ?fikri.terminal.com? bizim cluster adımızken ?10.20.20.40? ise cluster ip adresimiz olacak. Tek network kartına sahip olan Terminal Server? larımızın ip adresleri de aşağıdaki şekilde görüldüğü gibi yapılandırılmıştır.
Şekil ? 4 Bizim uygulama için hazırladığımız ortamın topolojisi
NLB Manager cluster özelliklerinde çalışma modunu Multicast olarak belirliyoruz. Bu çalışma modunu tercih etmemizin sebebi tek network kartına sahip bilgisayarlar üzerinde load balancing yapmak isteyişimizdir. Multicast modda node? lar birbirleriyle haberleşebilir olacaklardır.
Şekil ? 5 Cluster Parametrelerinin Konfigüre Edildiği Ekran
Yükün node? lar arasında dengeli bir şekilde paylaştırılması ve bağlantısı kopan bir kullanıcı oturumunun yine aynı node? a yönlendirilebilmesi için ?Port Rules? sekmesinde ?Affinity? değerinin single olarak işaretlenmesi ve ?equal? checkbox? ının işaretlenmesi gerekir.
Şekil ? 6 Affinity değerinin ayarlanacağı Edit Port Rules Ekranı
Bu aşamada Terminal Server? ların cluster? a node olarak eklenmesi gerekir. Bu işlem NLB Manager ile yapılabileceği gibi Terminal Server? larda çalışan network kartları üzerinde de yapılabilir. Node ekleme işleminin ardından NLB cluster convergence sürecine girer. Bu işlem cluster? ın üyelerinin hayatta olup olmadığını belirleyen ve yükün paylaşılmasını sağlayan süreçtir.
Şekil ? 7 İki Node? lu NLB Cluster? in Converged Olduğu ve Çalıştığı Görülüyor
İş yükünü dengeleyecek yapıyı kurduktan sonra her bir node? da çalışan Terminal Server? in aynı Session Directory Server? i kullanması için konfigüre edilmesi gerekir. Terminal Server konfigürasyonları Terminal Service Configuration üzerinden yapılabileceği gibi Group Policy yardımıyla da yapılabilir. Şekil-8 de görüldüğü gibi Terminal Service Configuration aracında Server Settings bölümünde Session Directory özelliği ?enable? edilir.
Şekil ? 8 Terminal Server? lar üzerinde Session Directory Özelliğinin Aktif Edilmesi
Örneğimiz için bu bölümde cluster name kısmına fikri.terminal.com adını giriyoruz. Session Directory Service? inin çalıştığı Server? in hostname? ini yazdıktan sonra hangi network kartımız üzerinden gelen oturum isteklerini karşılayacağımızı belirtiyoruz.
Ekranın alt kısmında bulunan IP Address redirection seçeneği default olarak işaretli gelir. Söz konusu seçenek, bağlantısı kopan kullanıcı oturumlarının tekrar bağlanmak istediklerinde Session Directory sayesinde aynı terminal server? a IP adresi üzerinden yönlendirilmesini sağlar. Eğer bu seçenek işaretlenmez ise IP adres üzerinden yönlendirme yerine token üzerinden yönlendirme yapılacaktır. Ancak token yonlendirme özelliğinin hem Terminal Server hemde Load Balancer tarafından desteklenmesi gerekir.
Şekil ? 9 Terminal Server? in Session Directory Özelliklerinin Konfigürasyonu
Yukarıda her bir Terminal Server için gerçekleştirdiğimiz Session Directory yapılandırmalarını aynı zamanda Group Policy yardımıyla da rahatlıkla yapabiliriz. Böylece her Terminal Server üzerinde aynı özellikleri tek noktadan yapılandırmış oluruz. Bu özellikleri şekil -10? da görüldüğü gibi group policy üzerinde ;
Computer Configuration / Administrative Templates / Windows Compenents / Terminal Services/Session Directory altından yapılandırabilirsiniz.
Şekil ? 10 Terminal Server? in Session Directory Özelliklerinin GPO ile Konfigürasyonu
Bu aşamada artık kullanıcılarınızın Terminal Server? larınıza oturum açma isteklerini göndermesi gerekir. Session Directory ve NLB hizmetleri kullanıcı oturumlarını ve yük dengelemesini yapıyorsa yapılandırmamız doğru bir şekilde çalışıyordur.
Böyle bir yapıyı NLB ve Session Directory hizmetleriyle oluşturmanın yanısıra yukarda da belirttiğimiz üzere 3.party çözümler de kullanmak mümkündür. Araştırma yaptığınızda bu konuda birçok firmanın çözümleriyle karşılaşabilirsiniz. Terminal Service konusunda bilmek istediğiniz tüm detayları bulabileceğiniz www.msterminalservices.org adresinden 3.party Load Balance çözümlerine ilişkin önerileri görebilirsiniz.. Bende bu önerilen 3. party çözümlerden birini kullanarak aynı Terminal Server Farm ortamını nasıl oluşturucağımızı göstereceğim.
Tercih ettiğimiz Load Balancer yazılımı, 2X Software Ltd firmasına ait olan 2X LoadBalancer. Yazılımın deneme sürümünü www.2x.com adresinden temin edebilirsiniz. Yazılım aslında Session Directory ve NLB servislerinin gerçekleştirdiği hizmeti tek başına sunan ve kurulum ve yapılandırması oldukça basit bir yazılım. Terminal Service desteği olduğu gibi Citrix? le de beraber kullanılabiliyor. SSL üzerinden iletişimi sağlayabildiği gibi hem kaynak tabanlı hem de Round Robin yöntemini kullanarak yük dengelemesi yapabiliyor. Unutmadan yazılımın demo versiyonunun yalnızca 2 Terminal Server üzerinde yük dengeleme yapmanıza müsaade ettiğini söylemeliyim.
Bizim örnek yapımızı göz önünde bulundurursak NLB ve Session Directory servislerinin çalıştığı DC üzerinde 2X LoadBalancer kurulumunu yapıyoruz. Tabii ki yazılımı yükledikten sonra NLB ve Session Directory hizmetlerine ihtiyacımız kalmıyor. Artık bu hizmetleri devre dışı bırakabiliriz. Yazılımın ?client agent? olarak bilinen ve Terminal Server? lar üzerinde çalıştırılması gereken bileşenini Session-1 ve Session-2 bilgisayarlarımıza yüklüyoruz. Bu agent yazılımı Load Balancer ile Terminal Server arasındaki iletişimi kuracak bir servisi çalıştırıyor. Bu aşamadan sonra yapılması gereken DC üzerine kurduğumuz LoadBalancer yazılımını konfigüre edip kullanıcı oturumlarını beklemek olacak.
Şekil ? 11 2X LoadBalancer Server Konfigürasyon Ekranı
Yukardaki şekilde görüldüğü üzere basit bir konfigürasyon ekranımız var.General sekmesi yapılandırmanın özünü oluşturuyor. Terminal Server? lara oturumlar hangi port üzerinden yönlendirilecek, Terminal Server? lar hangi makinalar, yük dengelemesi hangi kriterlere göre yapılacak gibi önemli konfigürasyonları bu sayfadan yapıyoruz.
Şekil ? 12 Terminal Server Ekleme Ekranı
Terminal Server? ları eklerken maksimum kabul edilecek oturum sayısını ve iletişim için kullanacağımız port no? yu belirtiyoruz. RDP? nin default portu olan 3389? u kullanmayı tercih ediyoruz. Alternate IP Address bölümü ise programın farklı bir modda çalıştığı zaman kullanılacak bir özelliğidir. Kullanıcı burada belirtilen IP adresi üzerinden direkt olarak Terminal Server ile iletişim kurar. Biz programımızı bu modda çalıştırmadığımız için bu özelliği kullanmıyoruz.
?Load Balancing Method? bölümünde eğer Round Robin seçeneğini tercih edersek basit bir yük dengeleme modeli seçmiş oluruz. Round Robin, DNS Server? lar tarafından kullanılan bir yöntemdir. Aynı isim ve farklı IP adreslerini içeren kayıtlar için kullanıcılardan gelecek sorguların cevaplarına her defasında diğer kayıtın iletilmesini sağlar.
Eğer ?Resource Based Load Balancing? seçilirse Load Balancer, yük dengelemesini bizim belirleyeceğimiz kaynağa göre yapacaktır. Session sayısı, CPU ve RAM kullanım oranları seçebileceğimiz kaynaklar. Biz örneğimizde session sayısına göre yük dengelemesi yapmak istediğimizi belirtiyoruz. Artık ?Terminal Server Farm? ortamımız hazır ve oturumları kabul edebiliriz.
Load Balancer? in oturumları nasıl paylaştırdığı ve kaynak kullanımları ile ilgili bilgilere ulaşabilmemiz için kullandığımız yazılım bize LoadBalancer Monitor aracını sunuyor.
Şekil ? 13 Terminal Server Kaynak Kullanımını Analiz Eden Load Balancer Monitor Aracı
Sonuç olarak, Terminal Service teknolojisinin firmanın sahip olma maliyetine, bizim yönetimsel iş yükümüze olumlu katkılar sağlayacağı gerçektir. Ancak bu ve benzeri teknolojilerinin fayda sağlayabilmesi doğru ihtiyaç analizi yapmamıza ve doğru çözümler üretmemize bağlıdır. Varolan sistemin iş yükünü hesaplamak ve ihtiyaç duyulması durumunda yük dengeleme çözümüne başvurmak gerekir.
Kaynakça:
www.microsoft.com
www.msterminalservices.org
|