WebFarm / Internet Information Server Clustering (Bölüm-1)


2007 yılında tasarladığımız ve hayata geçirdiğimiz Türkiye’nin en büyük e-ogrenme portallarından birinin web sunucularının altyapı çalışmaları sırasında hazırladığım ve yayınladığım bir makaleyi tekrar paylaşmak istedim. Makale, Software Network Load Balancing konusunda çeşitli yapılandırma bilgileri içermektedir.

WebFarm / Internet Information Server Clustering (Bölüm-1)

Kurumların büyüme ölçeklerini göz önünde bulundurarak söylemek gerekirse internet ya da intranet üzerinden verdikleri/verecekleri hizmetler bakımından sürekli artan bir ihtiyaç söz konusudur. Kurum içinde bu hizmetleri kullanacak personel sayısı arttıkça ya da kurumun dışarıya vermek istediği hizmetlerin boyutu -ister kullanıcı, isterse teknoloji bazlı olsun- arttıkça kurumlar server hizmetleri bakımından yeni yapılara ihtiyaç duyarlar. Günümüzün bu konudaki gözde teknolojilerinden biri “cluster” (küme) yapılardır. Bu makalede internet/intranet yani web üzerinden verilecek sistemlerdeki kullanılabilirlik, ölçülebilirlik ve performans açısından Web Server’ların Cluster yapısı anlatılacaktır.

Web Sunucularının cluster(kümeli) şeklinde çalışması için çeşitli tasarımlar geliştirilmiştir. Bu yapılar “WebFarm” şeklinde isimlendirilir. Birden çok sunucu ile ya da aynı anda birden çok süreç üzerinde eş zamanlı olarak çalışmak söz konusu olunca bu konuda çeşitli terimler ortaya konmuştur. Burada durumu biraz daha netleştirmek için Webfarm Cluster yapısının haricindeki “WebGarden” denilen başka bir yapıyı da açıklamakta fayda görüyorum. Bu yapı WebFarm’dan farklı olarak tek bir sunucu üzerinde aynı web hizmetinin devamlılığını sağlamak için birbirine eş birden fazla process oluşturarak belli bir application pool’da bulundurur ve bu yöntemle hataya karşı dayanıklılığı (Fault tolerancy) sağlar. WebFarm yapısı bundan tamamen farklı olarak birden fazla server ile “Fault tolerancy-Scalability- High Availability” ögelerini yerine getirir. Bu makelenin tümünde Windows Server 2003 R2 işletim sistemi kurulu olan sunucular kullanılmıştır. Ayrıca Internet Information Server 6.0 (IIS-6.0), Network Load Balancing Manager (NLB), Disturbed File System Management (DFS), SQL-2005, Windows XP/Vista ayrıca çeşitli scriptler senorya gereği kullanılmıştır. Bu clustering senaryosu yukarıda sözü geçen uygulamaların başka sürümlerinin kombinasyonları ile de kullanılabilir, makale boyunca yeri geldiğince bu konuya ve bunu gerçekleştirirken karşılaşılabilecek sorunlara değinilecektir. Konuya doğrudan girmek yerine bu bölümde cluster konusunda temel bilgiler vermeyi daha doğru buluyorum.

Cluster(kümeleme) yöntemi, yukarıda WebFarm üzerine bahsettiğim gibi birden çok sunucunun belli bir amaç için beraber ya da duruma göre sırayla, belirlediğimiz sunusu kümesi içerisinde toplanarak çalıştırılmasıdır(kümelenmesidir). Bu sunucu kümesinin üyesi olan her sunucudan birine “Node”(düğüm) denir. Cluster uygulamasında yer alan node’lar tek bir birim gibi çalışarak Microsoft Internet Information Services (IIS), Exchange Server gibi uygulamalara yönelik hizmetleri yüksek kullanılabilirlik(high avaibility) ile kullanıcılara sunar. Böylelikle küme oluşturmak cluster içindeki node’ları tek tek yönetmek yerine, uygulamaya yönelik olarak tek bir sistem halinde yönetilmesini sağlar. Bunun yanı sıra bu durum kullanıcı tarafı temel alınarak incelenirse, kullanıcılar sistemin cluster şeklinde çalışıp çalışmadığını çoğu durumda sezemezler, bu da cluster içindeki sunucuların tek bir sistem şeklinde çalıştığının kanıtıdır ki cluster yapmanın en önemli amaçlarından biri budur.

Cluster uyumlu olan uygulamalara örnek vermek gerekirse:
· DFS (distributed File System)
· DHCP
· Exchange Server
· File Server görevleri (dosya paylaşımları)
· IIS (Internet Information Services)
· Microsoft Distributed Transaction Coordinator (MS-DTC)
· MSMQ (Microsoft Message Queuing)
· NNTP (Microsoft News Transfer Protocol)
· Printer Pooling
· SMTP
· SQL Server
· WINS

Bu uygulamalar farklı cluster tipleri ile uygulanabileceği gibi beraberce de belli bir sistem için kullanılabilirler. Bunların yanında farklı uygulamalar da kümeli çalışabilirler(Oracle Server vs.) Cluster ortamının oluşabilmesi için IP tabanlı protokollere ihtiyaç vardır. Uygulamalar iletişim kurmak için IPX NetBEUI tarzındaki protokolleri kullanamazlar.

Daha önceden WebFarm senaryosunda kullanılacak uygulamalardan bahsederken Windows Server 2003 (R2) demiştik, burada bu Server2003’ün desteklediği 3 çeşit cluster tipi vardır:

1- NLB (Netwok Load Balancing), sunuculara gelecek olan yükü network üzerinde, belirlediğimiz kurallara yönelik olarak (affinity) paylaştıran, ağ yükünün dengelenmesi şeklinde gerçekleşir. NLB ile TCP (Transmission Control Protocol) haricinde UDP (User Datagram Protocol) ve GRE (Generic Router Encapsulation) tarfikleri için de yük dengelemesi sağlanabilir. Webfarm uygulamasında kullanacağımız cluster tipi budur. Ayrıca Microsoft, Web Sunucuları için cluster yaparken en uygun yöntemi NLB olarak önerir.

2- CLB (Component Load Balancing), COM+ kullanan uygulama bileşenlerinin dinamik bir şekilde yük dengelemesini sağlar. Yine yüksek kullanılabilrlik-ölçeklenebilirlik(scalability) açısından birçok Node üzerinde yük dengelemesi sağlar.

3- MSCS (Server Clustering), Sunucu kümesi olarak adlandırılabilir. Cluster Administrator arayüzü kullanarak yapılandırılır. Yüksek kullanılabilirlik-Ölçeklenebilirlik-Güvenilirlik açısından uygulamalar üzerinde hataya karşı dayanıklılık (fault tolerancy) sağlar. Arka uç sunucularda (SQL Server vs.) kullanımı uygundur.

Her küme oluşturma teknolojisinin belirli bir amacı vardır ve farklı gereksinimleri karşılayacak şekilde tasarlanmıştır. NLB, web hizmetleri nedeniyle oluşabilecek kısıtlamaları engellemek amacıyla tasarlanmıştır. CLB, web tabanlı uygulamaların ölçeklenebilirlik ve yüksek kullanılabilirlik ihtiyaçlarını karşılayabilmek için tasarlanmıştır. MSCS, veri bütünlüğünü korumak(integrity) ve yerinde çalışma desteği sağlamak amacıyla tasarlanmıştır. Konuya daha geniş bir açıyla bakarsak, bu cluster hizmetleri beraberce kullanılabilir ve çoğu durumda da bu sistemin planlanan verimde çalışması için bir gerekliliktir. Yukarıda bahsi geçen üç cluster tipinin beraberce kullanılabileceği en genel senaryo bir web sitesinin yayınlanması olacaktır. Webfarm’ın adından işte burada söz etmeye başlayarak örneklerle devam edelim. Ön uç sunucular olan Web sunucularda (IIS) NLB yani Webfarm, orta katman sunucularda CLB ve arka uçta olan veri tabanı hizmetlerinde MSCS kullanılarak (SQL Clustering) bir sistem tasarlanabilir. Bu sistem genel hatlarıyla aşağıdaki taslağa benzeyecektir, zaten ilerleyen bölümdeki uygulamaları bu taslak üzerinden yola çıkarak yapacağız.

Cluster yapıları, Farm (çiftlik) ya da Paket adı verilen ikili gruplar olarak kullanılır. WebFarm bu gruplardan Farm yapısının Web uygulamalarına yönelik olarak kullanılış biçimi olduğu için bu şekilde isimlendirilir. Farm yapıları, benzer sistemler çalıştıran ama genelde veri paylaşmayan bir sunucu grubudur. Bunlara “Farm” adı verilmesinin sebebi, kendilerine iletilen tüm istekleri, verilerin sucular üzerinde yerel disklerde saklanan birebir kopyalarını kullanarak işlemeleridir. Verileri paylaşmak yerine birebir kopyalarının kullandıkları için node’lardan her biri özerk biçimde çalışır ve bunlara “Copy” (kopya) adı verilir. Paket ise bir arada çalışan ve bölümlenmiş verileri paylaşan bir grup sunucudur. Bunlara Paket denmesinin sebebi ise hizmetleri yönetmek ve korumak için birlikte çalışmalarıdır. Bir paketin üyeleri bölümlenmiş verilere erişimi paylaştığı için, işletim modları benzersizdir ve genelde paketin tüm üyelerinin bağlı olduğu disk sürücülerindeki paylaşılan verilere erişirler.
Çoğu durumda Web ve Uygulama(Application) hizmetleri Farm olarak, Arka uç veri tabanları ve kritik destek hizmetleri ise paket olarak düzenlenir. WebFarm yapısı birden fazla Farm’ın bileşimi olarak tasarlanabilir. Aynı veriler farm yapısındaki tüm Node’larda çoğaltılır ve her sunucu, kendisine gönderilen istekleri verilerin yerel kopyalarını kullanarak işleyebilir. Örneğin, NLB kullanan ve her birinde web sitesine ait olan verilerin yerel kopyası bulunan çok sayıda web sunucusu vardır. Elbetteki bir Farm içindeki sunucu sayısında da bir üst sınır vardır, bu konudan önümüzdeki paragraflarda bahsedeceğim. Biz oluşturduğumuz taslak üzerinden çalışma devam edeceğiz. Senaryomuzda WebFarm içerisinde iki adet web sunucuyu kümeli olarak çalıştıracağız. Aşağıdaki şema konu hakkında genel bir bilgi verecektir.

Paketi de kısaca açıklamak gerekirse, SQL Server çalıştıran ve bölümlenmiş veri tabanı görünümleriyle MSCS kullanan veri tabanı sunucuları bunlara örnektir. Bu durumda, paketin üyeleri verilere iletişimi paylaşır ve tüm istekleri işlemek yerine, verilerin ya da mantığın belirli bir bölümünü işlerler. Örneğin iki adet Node barındıran SQL Server cluster yapısında, bir sunucu A-M harfleri ile başlayan diğer sunucu ise N-Z harfleri ile başlayan hesapları işliyor olabilir.
Cluster mimarisi kullanan sunucular genelde üç katmanlı bir yapı kullanılarak tasarlanır bu yapı bahsettiğimiz şekilde, Katman1- NLB’nin kullanıldığı ön uç Web sunucuları Katman2- CLB’nin kullanıldığı çeşitli Uygulama sunucularını içeren orta katman sunucuları Katman3- MSCS’nin kullanıldığı arka uçta yer alan veri tabanı sunucularını ya da dosya, kritik destek alanında görev yapan sunucuları içerir.
Cluster yapısı hazırlanırken bu şekildeki katmanlı bir yapı izlenmesinin asıl nedeni, cluster yapmanın asıl amaçlarından biri olan ölçeklenebilirliktir(scalability). Bu ölçeklenebilirlik istenilen katmana yeni sunucular ekleyerek ölçeğin artırılmasıyla gerçekleşebilir. Burada kritik nokta kullanılan sunucu işletim sistemidir.
· Windows Server 2003’ün tüm sürümleri, en fazla 32 Node’dan oluşan bir NLB Cluster destekler. · Enterprise ve Datacenter Edition, en fazla 8 Node’lu bir CLB cluster destekler. · Enterprise ve Datacenter Edition, en fazla 8 Node’lu bir MSCS cluster destekler. İşlemci ya da RAM ekleyerek ölçek artırılmak isteniyor ise · Standart Edition, en fazla 4 işlemci ile 32bit sistemlerde 4gb RAM ve 64bit sitemlerde 32gb RAM destekler · Enterprise Edition, en fazla 8 işlemci ile 32bit sistemlerde 32gb RAM ve 64bit sitemlerde 64gb RAM destekler · Datacenter Edition, en fazla 128 işlemci ile 32bit sistemlerde 64gb RAM ve 64bit sitemlerde 512gb RAM destekler
Ölçeklenebilirlik gereksinimleri belirlenirken kuruluşun “live” sitemdeki ve piyasadaki ileriye dönük gereksinimleri göz önünde bulundurulmalıdır. Doğru Windows sürümü ile uygun ölçeklenebilirlik sağlanabilir. Buna ek olarak, işlemciler ve bellek (RAM), sunucuların çalıştıracağı uygulama ve hizmetlerin yanı sıra, eş zamanlı olarak gerçekleştirilecek kullanıcı bağlantı sayısına uygun olarak boyutlandırılmalıdır. Eş zamanlı kullanıcı sayısı özellikle WebFarm senaryosunda dikkat edilmesi gereken önemli bir noktadır.
Bir sonraki bölümde NLB hakkında genel açıklamalar ile WebFarm senaryosu için yapılandırılmasını ve uygulanmasını anlatacağım.

Ahmet TOPRAKÇI | MCT

Reklamlar

Ocak 27, 2012 tarihinde Makaleler | Yazılar, Windows Server içinde yayınlandı ve , , , , , , olarak etiketlendi. Kalıcı bağlantıyı yer imlerinize ekleyin. Yorum yapın.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: