Home Map Index Search News Archives Links About LF
[Top bar]
[Bottom bar]
Bu makalenin farklı dillerde bulunduğu adresler: English  Castellano  Deutsch  Francais  Nederlands  Turkce  

convert to palmConvert to GutenPalm
or to PalmDoc

[Photo of the Author]
tarafından Atif Ghaffar

Yazar hakkında:

Atif bir bukalemondur. Rollerini sistem yöneticisinden programcıya, proje yürütücüsüne, işini yapmak için icap eden herhangi bir seye çevirebilir.
Onu bazen tuvalette otururken laptopunda programlama yaparken yada belge yazarken bulabilirsiniz.
Atif onun öğretmeni olduğu için Linux'a ve açık-kaynak topluluğuna kendisinin pek borçlu olduğunu düşünür.
Onun hakkında daha fazla bilgiyi onun anasayfasından edinebilirsiniz.


İçerik:

Linux altında Yüksek Erişilebilirlik(High Availability)

Çeviri : Cem Yıldız

High Availability systems under Linux -- Image borrowed from http://lwn.net/Gallery/i/suits.gif

Özet:

Özel amaçlı kritik sistemler tasarlancağı zaman, ya akıcı şemalandırma esnasında yada onu fiziksel olarak paketlerle, kablolarla vs inşa ederken, birinin şu soruları sorması gerekir:

Bu soruları kendi kendime sorduğum zaman çoğu kez aynı cevaplara ulaşıyorum.
İşten kovulacağım :)


Diğer taraftan kendi kendime "İşletim Sistemi bozulacak mı" diye sorduğumda şu cevaba ulaşırım.
Hayır. 1 bit rekabetine dayanamayan bir 2 bit şirketi tarafından yazılmış, özgün bir şekilde 4 bit micro işlemci için şifrelenmiş, bir 8 bit iştetim sistemine 16 bit yama için olan, 32 bit ilavelerini çaliştırmıyorsunuz ki.(bir .sig'den ulaştı)

Şimdi birkaç ciddi tartışma için.



 

Neden YE (HA)?

Linux'a gözüm kapalı guvendiğim halde, makineleri, güç sağlayıcılarını, ağ kartlarını, anakartları vs. üreten şirketlere güvenmem ve onlardan birisi bozulursa sistemimin kullanılamaz olacağından daima korkarım. Bundan dolayı servis ulaşılamaz olacak, üstelik benimle doğrudan alakalı olmadığı halde bütün şirket servislerini kapalı hale getireceğim. Örneğin



Aynı şey bir Windows Sunucusu üzerinde de meydana gelebilir; fakat onu bilgisizler kullanmaya alıştığı için onun hakkında çok fazla hoo haa olmayacaktır ama dikkatinizi çekiyorum: Bu bir Linux paketinde oluyor olsa, yönetimden çok fazla "sen sadece Linux'a güvenemezsin", vs sözleri olacaktır.


 

YE (HA) nedir?

Yüksek Erişilebilirlik onun ne olduğunu söyleyen birşeydir.
Yüksek Erişilebilir birşey.

şirketinizin iş görürlüğünü korumak için gerçekten önemli birtakım hizmetler.
Örnek:

Bu hizmetler iki nedenden dolayı aksayabilirler. Donanım aksaklıkları için yönetim tarafından donanım siparişi verilirken bir çok önlem alınabilir, örneğin, her makinenin fazla güç sağlayıcısı, Raid 5'i vs. olabilir.
Sık sık kontrol altında olan yazılım aksaklıklarıdır.
İster inanın ister inanmayın, daha önce Ağ kartındaki ani bir problem, CPU'nun aşırı ısınması vs. nedeni ile Linux paketlerinin kapandığını gördüm.

Büyük patron, güç sağlayıcısının bozulması yada ağ kartındaki bir aksaklık neticesinde sistemin göçmesiyle gerçekten ilgili değildir.
Partonunuzun, işçilerin ve müşterilerin ilgilendiği tek şey servisin ulaşılabilir olması gerektiğidir.
Servis teriminin altını çizdiğimi farkedin.
Tabiki servis bir makine üzerinde çalışmaktadır ve servisi ve istekleri diğer sağlıklı makinelere yönlendirmek Yüksek Erişilebilirlik sanatıdır.

 

YE (HA) oluşturma örneği

Bu örnekte, teorik olarak bir apache sunucu üzerinde çalışmakta olan, intranete hizmet veren Etkin/Etkisiz küme yaratacağız.
Bu ufak kümeyi oluşturmak için fazla RAM'i ve çok CPU'su olan iyi bir makine ve sadece servisi çalıştırmak için yeterli RAM/CPU'su olan diğer bir makineyi kullanacağız.
İkinci makine yedekleme düğümü oluyorken, birincisi ana düğüm olacaktır. Yedekleme düğümünün yaptığı iş eğer ana düğüm cevap veremiyorsa ondan servisleri devralmaktır.

 

Bu nasıl çalışır

Kullanıcılarımızın intranete nasıl erişeceğini sadece bir düşünelim.
Onlar kendi gezginlerine http://intranet/ yazacaklar ve DNS sunucusu onları 10.0.0.100'a (örnek ip) yönlendirecektir.


Bu intranet servisini çalıştıran farklı ip adresli iki sunucu koyarsak ve ana düğüm devreden çıktığı zaman DNS sunucusundan onu ikincisine yönledirmesini istesek nasıl olur.
Tabiki bu bir seçenek, fakat istemciler üzerinde DNS belleklendirmesi vb. hakkında tartışılacak birkaç nokta var ve belki DNS sucunusunu bir YE(HA) kümesinin kendi üzerinde çalıştırmak isteyeceksiniz. .
Diğer seçenek eğer ana düğüm çalışmaz ise durgun düğüm onun ip'sini deralabilir ve isteklere hizmet vermeye başlayabilir.
Bu yöntem "İP devralma" diye adlandırılır ve örneklerimizde kullanıyor olacağımız yöntemdir. Şimdi ana düğüm DNS'e herhangi bir değişiklik yapmadan çalışmasa bile, bütün gezginler onları 10.0.0.100 'a nakledecek olan http://intranet'e erişeceklerdir.

 

Kümeler nasıl konuşur

Ana/durgun düğümler kümedeki diğer düğümün çalışmadığını nasıl anlayacak?
Onlar bir seri kablo ve bir çapraz olarak bağlanmış Ethernet kablasu üzerinden birbirleriyle konuşacaklar (fazla olarak, seri kablo yada Ethernet kablosu işlevini yapmayabilir) birbirlerinin kalp atışlarının dinleyecekler (evet tıpkı sizin kalp atışlarınız gibi). Eğer kalp atışınız durmuş ise, büyük bir ihtimalle ölmüşsünüz demektir.
Küme düğümlerinin kalp atışlarını görüntüleyen programa ...tahmini... kalp atışı denir.
Kalp atışına buradan erişilebilir http://www.linux-ha.org/download/
İp adresi devralmaya yarayan bu program sahte olarak adlandırılır ve kalp atışında hesaplanmıştır.

İki makineyede koymak için fazladan bir ağ kartınız yoksa, kalp atışısını sadece bir seri kablo (kukla modem) üzerinden çalıştırabilirsiniz.
Diğer yandan ağ kartları ucuzdur, bu nedenle fazla olarak başka bir tane daha ekleyin.

 

Küme düğümlerini hazırlamak

Daha önce bahsettiğimiz gibi, birinde iyi makine diğerinde ise cok iyi olmayan bir makine kullanacağız.
İki makinenin de herbiri 2 ağ kartıyla donatılacak ve en az bir seri portu olacak.
Bir tane çapraz bağlanmış cat 5 RJ45 (Ethernet) kablosuna ve bir tane de kukla modeme (çapraz bağlanmış seri kablo) ihtiyacımız var.

Her iki makinedeki ilk ağ kartını onların Internet ip adresleri için kullanacağız.(eth0)
Her iki makinedeki ikinci ağ kartını udp kalp atışıyla konuşan bir gizli ağ için kullanacağız. (eth1)


Her iki makineye de Internet ip adreslerini ve isimlerini vereceğiz.
Her iki düğümün eth0'ına örnek olarak şunları gösterebiliriz:
10.0.0.1 ip adresiyle clustnode1
10.0.0.2 ip adresiyle clustnode2

Şimdi sabit olmayan bir ip adresi (bu daha önce altını çizdiğim servis ip adresidir) 10.0.0.100(intranet)'ü kaydedeceğiz. Bu anda onu herhangi bir makineye atamamiza gerek yok

Bir sonraki adımda makinelere ikinci ağ kartlarini için ayar yapacağız ve onlara kullanılmayan bir genişlikten herhangi bir ip adresi vereceğiz.

clustnode1 ip adresi 192.168.1.1
clustnode2 ip adresi 192.168.1.2

Sonra makinelerin 1 yada 2 Seri portuna uzanan seri kablolara bağlantı kuracağız ve onların çalışıyor/birbirleriyle konuşuyor olduğundan emin olacağız.
(herbir makinenin ayni portuna bağlandığınızdan emin olun, en kolay yolu budur)
Buraya bir bakın http://www.linux-ha.org/download/GettingStarted.html

 

Kalp atışının kurulması

Yazılımı kurmak kolaydır, kalp atışına ikili tabanlı olan ve kaynak paketleri şeklinin her ikisine de rpm ve tar.gz uzantısında erişebilirsiniz.
Yazılımı kurarken bir sorunla karşılaşırsananız, büyük ihtimalle bir YE(HA) sistemi kurmak için sorumluluk almamış olmalısınız. (YE(HA) olmayacak, belki o DE (NA) olacak)
Mükemmel bir Getting Started with Linux-HA klavuz mevcut, bu nedenle bilgileri buraya tekrar kopyalamayacağım.

 

Kümeyi ayarlamak

Kalp atışını düzenleyin

örneğin kalp atışı ayar dosyaları /etc/ha.d içindeyse
sonra
/etc/ha.d/authkeys dosyasını en sevdiğiniz editörle düzenleyin.

#/etc/ha.d/authkeys
auth 1
1 crc
#end /etc/ha.d/authkeys

Sonra rahat olduğunuz zaman md5 yada sha'ya yönelebilirsiniz, ilk denemede doğrulama mekanizmasını 1 olarak bırakın.

/etc/ha.d/ha.cf dosyasını düzenleyin

debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility     local0
deadtime 10
serial  /dev/ttyS3  #bunu uygun bir portla değiştirin ve bu bilgi bölümünü silin
udp     eth1      #ikinci ağ kartını kullanmıyorsanız bu satırı silin
node    clustnode1
node    clustnode2


/etc/ha.d/haresources dosyasını düzenleyin
#masternode ip-address service-name
clustnode1 10.0.0.100 httpd
bu anadüğümü clusternode1 olarak tanımlar, örneğin clusternode1 çalışmağı zaman clusternode2 servisi devralacak, fakat clusternode1 geri geldiği zaman, kendi servisini düzeltecek. Bu iyi olan bir makine ve iyi olmayan makine kullanıyor olmamızın nedenidir (clusternode1 iyi makinedir)
İkinci madde servisle birlikte devralınması gerekli olan ip adreslerini tanımlar, ve üçüncü madde servisin ismini tanımlar
Makine1 servisi devraldığı zaman, şunu derlemeye çalışacak
/etc/ha.d/httpd start
eğer dosyayı bulamazsa şunu deneyecek
/etc/rc.d/init.d/httpd start

Bir servis geri bırakıldığı zaman benzerliğin olduğu doğrudur eğer clusternode2 bir servisten geri bırakırsa, o şunu yapmaya çalışacak
/etc/ha.d/httpd stop
eğer dosyayı bulamazsa şunu deneyecek
/etc/rc.d/init.d/httpd stop
clusternode1 üzerindeki ayarlamalarınız bittiğinde, dosyaları node2'ye kopyalayabilirsiniz.
/etc/ha.d/rc.d dizininde ip adresi vs atama görevini yapan ip-request vs isimli bir betik bulacaksınız.
şimdi her iki makinedeki /etc/rc.d/init.d/heartbeat'i başlatın.
http sunucusu tarafından hizmet verilecek makineler üzerinde farklı bir index sayfası oluşturun.

örneğin.
clustnode1 üzerinde

echo hello world from clustnode1 >/yourWwwDocRoot/index.html
ve clustnode2 üzerinde
echo hello world from clustnode2 >/yourWwwDocRoot/index.html

her iki düğüm üzerinde httpd servisinin açılışta otomatik olarak başlamadığından emin olun, rcN dizinlerindeki bağlantıları silin yada daha iyi olarak her iki makine üzerindeki "httpd" yada "apache" başlangıç betiklerini /etc/rc.d/init.d/ dizininden /etc/ha.d/rc.d/ dizinine taşıyın.
Herşey düzgün bir şekilde kurulmuşsa ve kalpatışı çalışıyor ve iletişim kurabiliyorsa, clusternode1 10.0.0.100 ip adresine sahip olacak ve http isteklerine cevap veriyor olacak.
onu iki kez deneyin ve cevap verdiğinden emin olun. Eğer herşey iyi gözüküyorsa, clusternode1'i kapatın, 10 saniye içinde clusternode2 servisi ve ip adresini devralacaktır.
Sizin en fazla düşme zamanınız 10 saniye olacaktır.

 

Veri bütünlüğü sorunu ne olacak

httpd servisi node1'den node2'ye taşıntığı zaman aynı veriyi görmez. Benim httpd CGI'larımla yaratıyor olduğum tüm dosyaları serbest bırakıyorum. .

İki cevap:
1. Kendi CGI'nızdan dosyaya asla yazmamalısınız.(onun yerine bir ağ veritabanı kullanın...MySQL oldukça iyidir)
2. İki düğümü merkezi bir SCSI deposununa bağlıyabilirsiniz ve bir zamanda sadece bir tanesinin onunla konuştuğundan emin olun, ve a makinesi üzerindeki kartın SCSI tanımlayıcısını 6'ya çevirdiğinizden ve b makinesindekini ise 7 olarak bıkartığınızdan yada bunun tersinden emin olun.
Bunu ben Adaptec 2940 SCSI kartlarıyla denedim ve onlar SCSI tanımlayıcısını değiştirmeme izin verdiler. En ucuz kartlar bunu yapmanıza izin vermeyecektir.
Bazı Raid denetleyicileri kümenin-farkında denetleyiciler olarak satılırlar fakat şundan emin olun ki üreticiler Microsoft cluster kit'i satın almadan kartın konak tanımlayıcısını (HOST ID) değiştirmenize izin vermeyecektir.
HP'den NetRaid dönüştürücülerine sahiptim ve onlar kesinlikle Linux'u desteklemezler. Para harcama hakkında iyi duygulara sahip olmak için onları bıkarmak zorunda kaldım.

Sonraki adım ufak bir SAN yaratmak için Fibrechannel kartları, bir fibrechannel hub ve bir Fibrechannel depo birimi satın almak olacaktır, onlar kesinlikle paylaşımlı SCSI kullanmaktan daha maliyetlidir fakat onlar iyi bir yatırımdır.
Tüm makinelerin sanki yerel bir depo gibi oluşturduğu depo birimine saydam erişime sahip olmanıza izin veren FC üzerinde GDS(GFS) (Genel Dosya sistemi, aşağıdaki kaynaklara bakınız) çalıştırabilirsiniz.

Biz 2 si yukarıda tarif ettiğim YE(HA) düzenlemesine benzeyen 8 makine üzerinde yapım ortamında GDS(GFS) kullanıyoruz

 

Etkin/etkin kümeden ne haber

Eğer aynı anda olan erişime izin veren iyi bir depolama sisteminiz varsa kolay bir şekilde Etkin/Etkin sunucuyu inşa edebilirsiniz. Fibrechannel ve GDS(GFS) örnekleridir.
Eğer NFS gibi Ağ dosya sisteminizden hoşnutsanız, bunu kullanabilirsiniz fakat tavsiye edemeyeceğim.

Ne olursa olsun, servisA'yi clusternode1'e ve servisB'yi clusternode2'ye kopyalayabilirsiniz, benim kaynak dosya örnegim:

clustnode2 172.23.2.13 mysql
clustnode1 172.23.2.14 ldap
clustnode2 172.23.2.15 cyrus
Depolama için GDS(GFS) kullanıyorum, bu nedenle veriye aynı anda olan erişimlerle bir problemim yok ve bu makineler tarafından yönetilebilir olabildiğince çok servis çalıştırabiliyorum.
Burada ldap için clusternode1 esas oluyorken clusternode2 mysql ve cyrus için esas olmaktatadır.
Eğer clusternode2 çalışmazsa clusternode1 tüm ip adreslerini ve servisleri devralır.

 

Kaynaklar

Linux-HA.org
Linux YE(HA)'nın ana sayfası
kimberlite kümelendirme teknolojisi
Bir Kimberlite Kümesi, bir aktif-aktif hatasız ortamda bir paylaşımlı SCSI yada Fibre Channel depolama altsistemine bağlanmış iki sunucu düğümü için destek sağlar. Yazılım, herhangi iki düğümden birinin kümeden ayrıldığını farketme yeteneği sağlar, ve otomatik olarak, artakalan düğüm üzerindeki uygulamaları yeniden başlatmak için gerekli olan işlemleri yapan iyileştirme betiklerini başlatacaktır. Düğüm kümeye yeniden katıldığı zaman, uygulamalar gerekirse elle veya otomatik olarak, ona geri taşınabilir. Örnek iyileştirme betikleri temin edilir. Kimberlite en yüksek derece veri sağlamlığı vermek için tasarlanmıştır ve son derece etkindir. Değiştiril(me)miş Linux uygulamaları için yüksek erişilebilirlik gerektiren herhangi bir ortama yayılım için uygundur.
ultra monkey
Ultra Monkey, Linux işletim sisteminde Açık Kaynak bileşenlerini kullanan yerel bir ağ üzrerinde yük dengeli ve yüksek erişilebilir servisler yaratmak için oluşturulmuş bir projedir. Bu aşamada teknoloji kolayca diğer email ve FTP gibi servislere genişletilebilir olduğu halde, odak, derecelendirilebilen, yüksek erişilebilir bir görsel yöre çiftliği üretme üzrerindedir.
Linux Virtual Sunucu
Linux Virtual Sunucu, Linux işletim sisteminde çalışan yük dengeleyicisiyle birlikte, gerçek sunucuların bir kümesi üzerinde inşa edilmiş, yüksek derecelendirilebilir ve yüksek erişilebilir bir sunucudur. Küme mimarisi son kullanıcılara görülmezdir. Son kullanıcılar sadece tek bir virtual sunucu görürler.
4U kümesi / 4U SAN (Utandırıcı tapa)
4U kümesi ve 4U SAN, şirketimiz 4Unet tarafından sağlanan YE(HA) kümesi and SAN yerine getirmesidir.
Eğer bir ISS, Taşıyıcı, yada bir telecom şirketi iseniz ve tasarlanmak ve yerine getirilmek için Yüksek Erişilebilirlik çözümlerine ihtiyaç duyuyorsanız, 4Unet istemek için doğru yer olacak.
Not: 4Unet bir tamamlayıcıdır, onlar kümeleri yada SANları satmazlar, müşterileri için onu yerine getirirler. Bütün teknolojiler bu kümeler/SAN açık kaynak olduğu için bunları kullandılar.
4Unet'in hedef müşerileri sadece ISSler, Taşıyıcılar(Carrier) ve telekom şirketleridir.
Genel Dosya Sistemi
Genel Dosya Sistemi (GDS) bir paylaşımlı disk kümesi dosya sistemidir. GDS makalelendirmeyi ve istemci bozulmalarının iyileştirmelerini destekler. GDS küme düğümleri fiziksel olarak Fibre Channel yada SCSI aygıtları vahısıtasıyla aynı depoyu paylaşırlar. Dosya sistemi herbir düğüm üzerinde yerel olarak gönünür ve GDS kümeye karşı dosya erişimini eşzamanlar(senkronize eder). GDS(GFS) tamamen simetriktir, ki bütün düğümler eşittir ve bir tıkanıklık yada tek bir başarısızlık noktası olabilecek hiçbir sunucu yoktur. GDS, tüm UNIX sistem semantiklerine bakıyorken okuma ve yazma belleklendirmesini kullanır.
 

Bu yazı için görüş bildiriminde bulunabilirsiniz

Her yazı kendi görüş bildirim sayfasına sahiptir. Bu sayfaya yorumlarınızı yazabilir ve diğer okuyucuların yorumlarına bakabilirsiniz.
 talkback page 

Görselyöre sayfalarının bakımı, LinuxFocus Editörleri tarafından yapılmaktadır
© Atif Ghaffar , FDL
LinuxFocus.org

Burayı klikleyerek hataları rapor edebilir ya da yorumlarınızı LinuxFocus'a gönderebilirsiniz
Çeviri bilgisi:
en -> -- Atif Ghaffar
en -> tr Cem Yıldız

2001-02-10, generated by lfparser version 2.9