|
| ||
| ||
| Bu makalede, IT departmaninizin cok
yogun olarak ihtiyac duydugu kurulu sistemin 24x7x365 nasil ayakta
durabilecegi anlatilacaktir.
Gunumuzde internet'in is dunyasindaki onemi gercekten cok buyuktur. Artik herkes isini internetten goturmeye calismakta ve bunun en uygun yolunu aramaktadir. Sonuc olarak internetteki varliginiz buyuk bir onem kazanmaktadir ve bu varligin asla kesintiye ugramamasi gerekmektedir. Iste bu asamada CS (computer science)'in her zaman hayalini kurdugu fault-tolerant sistemler buyuk onem kazanmaktadir. Internet uzerinde hizmet veren bir bankanin sistemlerini 1 dakika down olmasinin karsiligi 10.000$ 'la olculmektedir (Kaynak: www.openmagazine.net ). Ayrica 1995 te Oracle ve Datamation sirketleri tarafindan yapilan arastirmaya gore planli olmayan kesintiler yuzunden saat basina 85.000$ ile 300.000$ arasi para kaybi olmaktadir. Bir sistemin 7x24x365 ayakta durmasini saglamak icin gercekten cok buyuk paralar harcanmaktadir. Buyuk yazilim firmalari asla kesintiye ugramayan sistemleri gercellemek icin cok yogun calismakta buna uygun dosya sistemleri, yazilimlar ... yazmaktadir. Fakat bu yazilimlar genelde cok pahali olmaktadir. Ek olarak yuksek erisebilirlik icin cesitli donanimsal cozumde mevcuttur. Butun bunlara alternatif olarak acik kaynak kod dunyasinda bircok ucretsiz alternatif bulunmaktadir. Bunlar ucretli rakipleri kadar iyi performans vermektedir. Bazi ticari firmalar eskiden ucretli olarak sattigi HA (High Availability) yazilimlarini Linux uzerinde calisacak sekilde yeniden yazip ucretsiz dagitmaktadir ( Or: FailSafe http://oss.sgi.com/projects/failsafe ). Her ne kadar bu yazi Linux ana kaynak olarak yazilmis ve ele alinan yazilim ( heartbeat http://linux-ha.org ) olsa da deneyimlerimin isiginda diger isletim sistemlerinde kullanilan HA yazilimlarindan da bahsedecegim. Bu isletim sistemlerine ornek olarak *BSD sistemler verilecektir.
| ||
| ||
| Bu dokumanin en guncel hali;
http://www.enderunix.org/docs/high_availability.html
adresindedir.
Aksi belirtilmedigi takdirde bu kabil dokumanlarin haklari kendilerini yazan yazarlarda saklidir. Bu dokuman da, parca parca ya da tamamen herhangi bir sekilde, yazarinin izni dahilinde dagitilabilir. Yazar, bu dokumani okuyanlarin ugrayacaklari herhangi bir zarardan oturu sorumluluk kabul etmez. Use at your own risk! Burada kurulacak olan sistem iki Linux server, bunlar uzerinde calisan apache web server'i ve HA'yi saglayacak olan heartbeat yazilimi olacaktir.
TODO: | ||
| Yuksek Erisebilirlik Nedir? | ||
| Yuksek Erisebilirlik bir servisin 7x24x365 ayakta
olmasi demektir. Tek basina kurulacak hic bir makina (eger built-in HA
ozelligi yoksa) bunu sunamaz. Onemli servislerimizin kostugu makinamizin
ayakta durmasini engelleyecek bir cok olasilik mevcuttur. Bunlara SPOF
(Single Point Of Failure) adi verilmektedir. Bunlara ornek vermek gerekirse: 1) Isletim sisteminin cokmesi 2) Uzerinde calisan yazilimin gocmesi 3) Depolama alanimizin bozulmasi 4) Elektrik kesilmesi 5) Ayrica bilerek yapilan servis kesintileri. Mesela server'in upgrade edilmesi. 6) Ve burada sayamiyacagim onlarca neden. Linux 2.0 kernel'i ile HA hizmetlerini sunabilecek kavramlara kavusmaya baslamistir. Bu surec 2.2 serisi ile devam etmistir ve 2.4 kernelinin sundugu yuksek erisilebilirlikli ozellikler sayesinde (GFS, CODA, NBD, DRBD, LVM ... ) ust seviye ulasmistir. Yuksek erisilebilirlik deyince aklimiza iki durum gelmelidir:
| ||
| Linux-HA ve Kavramlar | ||
|
Linux-Ha ( http://www.linux-ha.org
) projesinin temellerini
Linux-HA HOWTO atmistir. Bu HOWTO' da IT sektorunde bulunan diger
buyuk sirketlerinin urunlerinde bulunan ozelikler ve HA icin ortaya konmus
gerekli kavramlar aciklanmaktadir. Bu kavramlardan en onemlilerini bu
yazida anlatacagim: 1)Master Node ve Slave Node: Adinda anlasilacagi uzere kurulacak
iki makinadan biri master digeri slave olacaktir | ||
| On hazirlik | ||
|
Su ana kadar konseptlerden bahsettik. Bu asamadan sonra bu
konseptleri kullanarak www.EnderUNIX.ORG
clusterimizi kuracagiz. Ilk asamada
www.linux-ha.org/download
adresinden heartbeat yazilimini indirecek ve sistemimize kuracagiz. Buna
ek olarak surekli acik olmasini istedigimiz serviside her iki makina da
kuracagiz ki bizim durumumuzda bu apache olacak. Kurulacak sistemin daha
iyi anlasilmasi icin Sekil1 'e bakilabilir:
Simdi ustte gorulen grafigi biraz aciklayalim. Goruldugu uzere DNS'imizde
www adresi olarak 212.65.128.82 adresi kayitlidir. Fakat www1 ve www2
makinalarinin yine bu adres segmentinde olan degisik IP'leri vardir. Fakat
son kullanici sadece www'in karsiligi olan adresi yazarak istedigi sayfaya
ulasilabilecektir. Gerekli filtrelemeler yaparak Bunun yaninda sisteminize Apache paketinide kurun. Apache kurulumu bu dokumanin kapsama alaninin disindadir. Fakat kurdugunuz apache'nin her iki makinada da ayni dizinde olmasina ozen gosterirseniz ileride daha az problem yasarsiniz.
Onemli NOT: Sistem baslangic scriptlerinden /etc/rc.d/rc*.d dizini altindaki apache baslangic linklerini silin. Sadece /etc/rc.d/init.d/ altindaki kalsin. Apache'nin baslatilmasi ve durdurulmasi ile heartbeat yazilimi ilgilenecektir!
| ||
| HeartBeat'in Konfigurasyon Dosyalari | ||
| Isimizin cogunu hallettik. Buraya kadar geldiyseniz artik
devamini da yaparsiniz :) Bu asamada duzenlememiz gereken 3 adet
konfigurasyon dosyasi var. Bu konfigurasyon dosyalarinin orneklerini eger
yazilimi rpm'den kurduysaniz /usr/share/doc/packages/heartbeat dizininde
bulabilirsiniz. Bu dosyalar: 1) /etc/ha.d/authkeys deadtime 10 baud 19200 udpport 694 Seri interface'in mesajlari tasiyip tasimadigini su sekilde
ogrenebilirsiniz: Bu asamada www1 makinasinda Selam dunya yazisini gorebilmelisiniz. 3) /etc/ha.d/haresources #Bu dosya hangi node'un master olacagini ve hangi servisin
calistirilacagini belirler:
| ||
| Dosyalarin Senkronizasyonu. | ||
| Bu asamaya kadar pek cok mesafe aldik. Fakat onemli bir nokta
da her iki sistemde bulunan dosyalarin birbiri ile senkronize olarak
calismasidir. Ve bu icerik birbiri ile belirli araliklarla senkronize
edilmesidir. Master node'umuz www1 olduguna gore www1'in /var/www/htdocs
altinda bulunan dosyalar karsi taraftaki /var/www/htdocs ile ayni olmalidir.
Bunun icin onerilebilecek bir cok method var. Bu metodlar kernel tabanli
olabilecegi gibi userland tabanli'da olabilir. Burada ben dosya
senkronizasyonu icin rsync kullanacagim. Fakat rsync bizim
istedigimiz asil sistem degildir. Dosya senkronizasyonu icin kernel bazinda
ya da hardware bazinda diger secenekler de dikkate alinmalidir. Bunlara
ornek vermek gerekirse:
a)DRBD
Lan'inizdaki bulunan bilgisayarlarin dosya sistemini mirrorlamak icin Bu asamada rsync ile alakali bir kac sey soylemenin gerekliligini hissediyorum. Rsync iki sistem arasi dosya transferi icin yazilmis bir program ve sistemdir. Rsync'de amac mumkun olan en az bant genisligini yemek oldugundan dosya transferleri hususunda ftp ve bunun gibi protokollerden cok daha performansli olmaktadir. Ayrica rsyncd.conf'u degistirdikten sonra rsync process'ine HUP sinyalini gondermeye gerek yoktur. Rsync acilan her baglanti icin tekrar konfigurasyon dosyasini okur ek olarak rsync dosya transfer shell'i olarak yeni versiyonlarinda rsh yerine ssh kullanmktadir. Butun bunlardan sonra serverda (www1) rsync'yi daemon modunda calistiralim ve bu komutu gerekli sistem baslangic scriptlerine ekliyelim. #echo "rsync
--daemon" >> /etc/rc.local Simdi bu scriptimizi cronumuza ekliyelim. Her 5 dakikada bir www1'deki degisiklikler (yeni dosyalar ya da silinen dosyalar) www2'ye gecirilsin.
| ||
| Heartbeat'in Calistirilmasi | ||
| Simdi sira hearbeat yaziliminin calistirilmasina. Oncelikle
heartbeat baslangic scriptimizin gerekli run levellarda calismasini
saglayalim. Ben sistemimi her zaman run level 3'ten acarim. Sistemini run
level 5'ten acanlar assagidaki gibi bir degisikligi run level 5 scriplerine
yapmalari lazim gelmektedir. #cd /etc/rc.d/rc3.d #ln -sf /etc/rc.d/init.d/heartbeat S49heartbeat Simdi heartbeat
sistemimizi devreye sokabiliriz. Size tavsiyem oncelikle www1 yani master
serverdaki heartbeat'i calistirin ondan sonra www2'yi calistirin.
| ||
| HA calisiyor mu? | ||
| Simdi heartbeat'in calisip calismadigini kontrol edelim.
Assagidaki log dosyasi
www.linux-ha.org/download/GettingStarted.html 'den alinmistir. Log
dosyasinin yeri /var/log/ha-log 'tur. heartbeat: 2000/01/18_14:26:45 info: Neither logfile nor logfacility found. heartbeat: 2000/01/18_14:26:45 info: Defaulting to /var/log/ha-log heartbeat: 2000/01/18_14:26:45 info: *********************** heartbeat: 2000/01/18_14:26:45 info: Configuration validated. Starting heartbeat. heartbeat: 2000/01/18_14:26:46 notice: Starting serial heartbeat on tty /dev/ttyS0 heartbeat: 2000/01/18_14:26:46 notice: UDP heartbeat started on port 694 interface eth1 heartbeat: 2000/01/18_14:26:46 notice: Using watchdog device: /dev/watchdog heartbeat: 2000/01/18_14:26:46 error: Cannot open /proc/ha/.control: No such file or directory heartbeat: 2000/01/18_14:26:56 warn: node linuxha2.linux-ha.org: is dead heartbeat: 2000/01/18_14:26:56 INFO: Running /etc/ha.d/rc.d/status status heartbeat: 2000/01/18_14:26:57 info: Requesting our resources. heartbeat: 2000/01/18_14:26:58 INFO: Running /etc/ha.d/resource.d/IPaddr 192.168.85.3 status heartbeat: 2000/01/18_14:26:58 INFO: Running /etc/ha.d/rc.d/ip-request ip-request heartbeat: 2000/01/18_14:27:00 info: node linuxha2.linux-ha.org: status up heartbeat: 2000/01/18_14:27:00 INFO: Running /etc/ha.d/rc.d/status status heartbeat: 2000/01/18_14:27:28 Acquiring resource group: linuxha1.linux-ha.org 192.168.85.3 httpd smb mirror heartbeat: 2000/01/18_14:27:28 INFO: Running /etc/ha.d/resource.d/mirror start heartbeat: 2000/01/18_14:27:29 INFO: Running /etc/rc.d/init.d/smb start heartbeat: 2000/01/18_14:27:30 INFO: Running /etc/rc.d/init.d/httpd start heartbeat: 2000/01/18_14:27:31 INFO: Running /etc/ha.d/resource.d/IPaddr 192.168.85.3 start heartbeat: 2000/01/18_14:27:32 INFO: ifconfig eth0:0 192.168.85.3 netmask 255.255.255.0 broadcast 192.168.85.255 heartbeat: 2000/01/18_14:27:32 Sending Gratuitous Arp for 192.168.85.3 on eth0:0 [eth0] Bu log dosyasi master node'tan alinmistir. Simdi yavas yavas log dosyasini inceleyelim. Ilk basta linuxha1 makinasi ( yani su an loglarini okudugumuz makina) ilk basta log dosyasinin yerini belirtiyor. Sonra seri heartbeat'i calistiriyor. Bu islemden sonra eth1'den udp:649. porttan udp heartbeat mesajlarini gondermeye basliyor. Ve bundan sonra linuxha2 makinasinin down oldugunu goruyor. Gerekli IP'yi alias olarak UP ediyor. Ve gerekli servisleri (ki burada httpd ve smb ) baslatiyor. En son olarak ise aga gratuitous ARP gondererek 192.168.85.3'sinin kendinde oldugunu belirtiyor. Burada dikkat edilirse linuxha2 makinasi ilk basta "dead" olarak anons ediliyor. Bunun sebebi linuxha2'de hearbeat servisinin 10 saniye sonra baslatilmasidir. NOT: Bu makaleyi yazdigim yerde iki tane bilgisayarim olmadigi ve mevcut kurulu sistemlerde degisiklik yapilmamasi gerekliliginden dolayi bu loglari kullanmak zorunda kaldim!.
| ||
| TODO: | ||
|
1)Degisik servislerin heartbeat'te nasil calistigini gostermek 2)Heartbeat yazilimin automake'i kullanan versiyonunu kullanarak bu yazilimi FreeBSD' de calistirmak. 3) Baska HA yazilimlarini anlatmak. Not: Bu yazinin yazilim tarihi itibari ile FreeBSD'de derlenebilen heartbeat yaziliminda bir bug vadir. FreeBSD' deki problem makinalarin gratuitous arp gonderememe sorunudur. Fakat bunun uzerinde calisilmaktadir. Mailing list arsivinden gerekli bilgilere ulasabilirsiniz. | ||
| Linkler | ||
| 1) Alan Robertson tarafindan devam ettirilen linux-ha sayfasi http://www.linux-ha.org 2)Sgi tarafindan Open Source yapilan FailSafe yazilimi. Java ile yazilmis arabirimi mevcuttur. http://www.linux-ha.org/FailSafe 3)IBM tarafindan yazilan Ldap cluster kurulumu: http://www-1.ibm.com/servers/esdd/articles/linux_clust/index.html 4)Offical Linux-HA HOWTO http://sunsite.unc.edu/pub/Linux/ALPHA/linux-ha/High-Availability-HOWTO.html 5) Vrrpd protokolu: rfc2338 Linux Icin: http://w3.arobas.net/~jetienne/vrrpd/ FreeBSD Icin : www.bsdshell.net 6) Linux'te ticari olarak Cluster cozumu sunan Linuxnetworx www.linuxnetworx.com 7) Bircok isletim sisteminde calisabilen cluster yazilimi (FreeBSD versiyonu da mevcut) www.polyserve.com 9) Mission Critical Linux: www.missioncriticallinux.com 10) Va linux firmasinin Cluster yazilimi: VACM | ||
| Son Sozler: |
Lutfen soru sormadan once bu dokumani bir daha okuyun Eger sorunuza cevap bulamazsaniz mail arsivlerini okuyun. Eger hala aradiginizi bulamazsaniz !!! bana mail atin belki bir kac ay icinde cevap verebilirim.
ofsen@EnderUNIX.ORG Omer Faruk Sen Copyright (c) 2001 Omer Faruk Sen. Kaynak gosterilmek sartiyla
kullanilabilir. EnderUNIX Software Development Team
Member
http://www.EnderUNIX.ORG/
http://www.faruk.net