Bu makalemizde “Linux İşletim Sistemlerinde Cluster Yapılandırması”nı inceleyeceğiz. Kurulumu “Red Hat Enterprise Linux 6.4” işletim sistemi üzerine yapacağız.
Cluster Nedir ?
Cluster, hizmet ve uygulamaların kullanılabilirliğini artırmak için birlikte çalışan bağımsız bilgisayarların oluşturduğu bir gruptur. Kümelenmiş sunucular (Cluster Servers) fiziksel kablolarla ve yazılımlarla bağlanır. Sunuculardan biri başarısız olursa, başka bir sunucu Failover adı verilen bir işlem sayesinde hizmet sunmaya başlar. Kurulum için sunucularımızda en az 2 adet ağ (ethernet) kartı ve cluster (kümeleme) yapılandırmamızı tutacak bir “Quorum” disk alanına ihtiyacımmız bulunmaktadır. Ağ kartlarımızın biri public dediğimiz ağımıza hizmet etmek için kullanılacak diğer ağ kartımızsa cluster (kümeleme) sunucularımızın bir birleriyle konuşabilmesi için “interconnect” dediğimiz ağ için gereklidir. Önerilen yapıda cluster sunucularımızın konuşacağı “interconnect” bağlantısının sağlanacağı ağ anahtarı (switch) cihazının ayrı bir cihaz olmalıdır. Eğer bu sağlanamıyorsa en azından ağ anahtarı üzerinden “interconnect” kartlarımızın bağlanacağı portların ayrı bir “VLAN” olması sağlıklı olacaktır. Klasik ve basit cluster yapısı iki server dan oluşur, bunlara node (üye) denilir. Üyeler arası iletişim için bir “private (interconnect) network” vardır ve cluster dışı iletişim için bir “public network” mevcuttur. Ayrıca her üyenin erişebileceği bir depolama ünitesi vardır. Depolama ünitesi üzerindeki cluster kullanımı için olan bütün diskleri her her üye görür. Üyelerin hepsi bütün diskleri görse de bir anda bir diske sadece bir üye ulaşabilir. Mesela “Highly Available” bir yazılımınızı çalıştırıyorsunuz. Bu yazılımın kullandığı disk Cluster’ın shared disklerinden biri olur ve o an o yazılım hangi üye üzerinde çalışıyorsa o üye da o diskin sahibidir. Yazılımda çalıştığı üyenin IP Adresini bind eder ve public network üzerinden hizmet verir. Private network üzerinden de üyeler aralarında statü bilgilerini (heartbeat) iletirler. Cluster ortamımızda en çok 16 sunucumuzu kullanabiliriz.
- Kurulum Senaryosu
Kurulum işlemimizi Red Hat Enterprise Linux 6.4 işletim sistemi üzerinde yapacağız. Sunucularımızda 4 adet ethernet kartı olduğunu varsayalım bu kartlardan 3 tanesini “bonding” işlemi ile yapılandıracağız. Kalan 1 kartımızı ise cluster (kümeleme) sunucularımızın birbirleriyle konuşmasını sağlayacak “Interconnect” bağlantısı için yapılandıracağız. Sunucumuzda Cluster (kümeleme) yapılandırmamızın dosyalarını ve ayarlarını tutacağı “Quorum” disk alanımız olacak bu alan depolama ünitesinden tüm sunucularımızın ortak göreceği şekilde atanmalıdır. Quorum disk alanı için 1 GB büyüklüğünde bir alan yeterli olacaktır. Ayrıca Cluster (kümeleme) rolümüzü bir dosya sunucusu hizmeti için yapılandırdığımızı varsayarak yine depolama ünitesinden “data” isimli ortak diskimizin tüm sunucularımıza atanmış olmalıdır. Disklerimizin için “multipath” yapılandırmamızın yapılmış olması gerekmektedir.
1. Öncelikle sunucularımıza işletim sistemimizi “Red Hat Enterprise Linux İşletim Sistemi Kurulumu” makalemizde anlatıldığı gibi kuruyoruz.
2. Yerel isim çözümleme dosyasına gerekli IP Adreslerimizi ve üyelerimizin isimlerini giriyoruz. Aynı zamanda ağ ortamımızda bulunan “DNS” Sunucumuza aşağıdaki adresleri kaydediyoruz. “DNS” kayıt işlemi yapılmazsa “cluster” kurulum işlemimizde sorun yaşayabiliriz.
# vim /etc/hosts -- Dosyamızı açıyoruz ve aşağıdaki gibi düzenliyoruz. -- Aynı adres ve isimlerimizi DNS sunucumuza kaydediyoruz. (forward ve reverse kayıtlarıyla) DNS Sunucumuzda kayıtlı değilse kurulum hata verecektir. # Public 192.168.2.121 koraykey-cl1.localdomain.com koraykey-cl1 192.168.2.122 koraykey-cl2.localdomain.com koraykey-cl2 # Private (Interconnect - Ricci) 192.168.117.141 koraykey-cl1i.localdomin koraykey-cl1i 192.168.117.142 koraykey-cl2i.localdomin koraykey-cl2i # Cluster 192.168.2.120 koraykey-cl.localdomain koraykey-cl -- DNS Kayıtlarımızı kontrol etmek için -- Üye 1 # nslookup koraykey-cl2.localdomain Server: 192.168.2.1 Address: 192.168.2.1#53 Name: koraykey-cl2.localdomain Address: 192.168.2.122 # nslookup koraykey-cl2i.localdomain Server: 192.168.2.1 Address: 192.168.2.1#53 Name: koraykey-cl2i.localdomain Address: 192.168.117.142 -- Üye 2 # nslookup koraykey-cl1.localdomain Server: 192.168.2.1 Address: 192.168.2.1#53 Name: koraykey-cl1.localdomain Address: 192.168.2.121 # nslookup koraykey-cl1i.localdomain Server: 192.168.2.1 Address: 192.168.2.1#53 Name: koraykey-cl1i.localdomain Address: 192.168.117.141
3. Sunucularımızda gerekli işletim sistemi paketlerimizi kuruyoruz.
# yum -y install lvm2-cluster # yum -y install gfs2-utils # yum -y install luci
4. Sunucularımızda “Firewall”, “SELinux” ve “ACPI” servislerimizi durduruyoruz ve sunucularımızın açılışında başlamaması için kapatıyoruz.
-- Servislerimizi durduruyoruz. # service iptables stop # service ip6tables stop # service acpid stop -- Otomatik başlamaması için ayarlıyoruz. # chkconfig iptables off # chkconfig ip6tables off # chkconfig acpid off -- SELinux ayarımızı yapıyoruz. # vim /etc/selinux/config -- dosyasında bulunan SELINUX=disabled parametresini yukarıdaki gibi kapalı duruma getiriyoruz.
5. Sunucularımızda cluster (kümeleme) için çalışması gereken servislerimizi başlatıyoruz ve sunucularımızın açılışında otomatik başlaması için gerekli ayarları yapıyoruz.
-- Servislerimizi başlatıyoruz. # service luci start # service ricci start -- Otomatik başlamasını ayarlıyoruz. # chkconfig luci on # chkconfig ricci on
6. Cluster (Kümeleme) servisimizin kullanacağı “ricci” kullanıcısının parolasını belirliyoruz.
# passwd ricci Changing password for user ricci. New password: Retype new password: passwd: all authentication tokens updated successfully.
7. Sunucularımızda cluster (kümeleme) hizmeti için kullanacağımız “Quorum” ve “Data” disklerimizi kontrol ediyoruz.
# ll /dev/sd* -- İşletim Sistemi Disklerimiz brw-rw---- 1 root disk 8, 0 Apr 22 00:09 /dev/sda brw-rw---- 1 root disk 8, 1 Apr 22 00:09 /dev/sda1 brw-rw---- 1 root disk 8, 2 Apr 22 00:09 /dev/sda2 -- Cluster için Quorum ve Data Disklerimiz brw-rw---- 1 root disk 8, 16 Apr 22 00:09 /dev/sdb brw-rw---- 1 root disk 8, 32 Apr 22 00:09 /dev/sdc
8. Cluster (Kümeleme) ön hazırlığımız tamamlandı. Şimdi aşağıdaki örnek adresten “Cluster” yönetim konsolumuza bağlanarak gerekli ayarlarımızı yapıyoruz.
https://koraykey-cl1.localdomain:8084
9. İnternet tarayıcımızla bağlandığımız yönetim konsolumuzda “root” kullanıcısı ile oturum açıyoruz.
10. Açılan konsolumuzda “Manage Cluster” sekmesine gelerek “Add” düğmesine tıklıyoruz.
11. Karşımıza gelen “Create New Cluster” pencerisine sunucularımızın bilgilerini yazıyoruz. Burada “Ricci Hostname” bölümüne Private (Interconnect) ağımızın isim bilgilerini yazıyoruz. Diğer seçenekleri aşağıdaki gibi yapılandırdıktan sonra “Create Cluster” düğmesine tıklıyoruz.
12. Sunucularımızda cluster (kümeleme) hizmeti yapılandırılırken bekliyoruz.
13. Sunucularımızda cluster (kümeleme) hizmeti kuruldu. Üyelerimizi aşağıdaki ekrandaki gibi görebiliriz.
14. Şimdi kullanacağımız disklerimizi yapılandıralım yazımızın başında kontrol ettiğimiz gibi “/dev/sdb” Quorum diskimiz olacak “/dev/sdc” Data diskimiz olacaktır. Şimdi bu disklerimizi cluster (kümeleme) sistemimize özel yapılandırıyoruz. Bu işlemler sadece bir üye üzerinde yapılacaktır.
-- Sadece bir üye üzerinde yapıyoruz. -- Quorum Diskimizi Yaratıyoruz. # mkqdisk -c /dev/sdb -l qdisk mkqdisk v3.0.12.1 Writing new quorum disk label 'qdisk' to /dev/sdb. WARNING: About to destroy all data on /dev/sdb; proceed [N/y] ? y Initializing status block for node 1... Initializing status block for node 2... Initializing status block for node 3... Initializing status block for node 4... Initializing status block for node 5... Initializing status block for node 6... Initializing status block for node 7... Initializing status block for node 8... Initializing status block for node 9... Initializing status block for node 10... Initializing status block for node 11... Initializing status block for node 12... Initializing status block for node 13... Initializing status block for node 14... Initializing status block for node 15... Initializing status block for node 16... -- Quorum Diskimizi Sorguluyoruz. # mkqdisk -L mkqdisk v3.0.12.1 /dev/block/8:16: /dev/disk/by-id/scsi-36000c29f979ea065721255dcf540440a: /dev/disk/by-id/wwn-0x6000c29f979ea065721255dcf540440a: /dev/disk/by-path/pci-0000:02:05.0-scsi-0:0:0:0: /dev/sdb: Magic: eb7a62c2 Label: qdisk Created: Mon Apr 22 00:35:34 2013 Host: koraykey-cl1.localdomain Kernel Sector Size: 512 Recorded Sector Size: 512
15. Yaratmış olduğumuz Quorum Diskimizi Cluster (Kümeleme) bilgilerimizi tutması amacıyla sistemimize atıyoruz. Konsolumuzun sol tarafındaki cluster ismimizin (koraykey-cl) üzerine tıklıyoruz ve açılan menüden “Configure>QDisk” yolunu izleyerek Quorum disk yapılandırma sayfasına erişiyoruz. Burada “Quorum Disk” için ayırdığımız “dev/sdb” diskimizi aşağıdaki gibi yazıyoruz ve “Apply” düğmesine tıklıyoruz.
16. Yapılandırmamız tamamlandığında cluster (kümeleme) hizmetimizin başarılı olduğu ve başladığı uyarısını alıyoruz.
17. Şimdi sunucularımızda “Cluster” hizmetimizin durumunu sorguluyoruz ve çalıştığından emin oluyoruz.
# clustat Cluster Status for koraykey-cl @ Mon Apr 22 00:40:06 2013 Member Status: Quorate Member Name ID Status ------ ---- ---- ------ koraykey-cl1.localdomain 1 Online, Local koraykey-cl2.localdomain 2 Online /dev/sdb 0 Online, Quorum Disk
18. Bu işlemlerden sonra çalışmakta olan “cluster” servimize kümeleme yapacağı hizmeti belirliyoruz. Biz senaryomuzda bir disk alanı yaratıp burada bilgi depolayacağımızı söylemiştik. Şimdi diskimizi cluster yapıda çalışacak şekilde yapılandırıyoruz.
-- Bu işlemleri sadece bir üye üzerinde yapıyoruz. -- Yazımızın başında "/dev/sdc" isimli diskimizi bu iş için ayarlamıştık. -- Öncelikle Fiziksel bölümü oluşturuyoruz. # pvcreate /dev/sdc Physical volume "/dev/sdc" successfully created -- Yarattığımız fiziksel bölüm üzerinde "vg_clsdisk" isimli "Volume Group" oluşturuyoruz. # vgcreate -c y vg_clsdisk /dev/sdc Clustered volume group "vg_clsdisk" successfully created -- Yarattığımız "vg_clsdisk" volume group üzerinde "lv_clsdisk" isimli Logical Volume oluşturuyoruz. # lvcreate -l 100%FREE -n lv_clsdisk vg_clsdisk Logical volume "lv_clsdisk" created -- Diskimizi "gfs2" cluster dosya sistemi ile formatlıyoruz. # mkfs -t gfs2 -p lock_dlm -t koraykey-cl:gfs2 -j 4 /dev/mapper/vg_clsdisk-lv_clsdisk This will destroy any data on /dev/mapper/vg_clsdisk-lv_clsdisk. It appears to contain: symbolic link to `../dm-2' Are you sure you want to proceed? [y/n] y Device: /dev/mapper/vg_clsdisk-lv_clsdisk Blocksize: 4096 Device Size 5.00 GB (1309696 blocks) Filesystem Size: 5.00 GB (1309694 blocks) Journals: 4 Resource Groups: 20 Locking Protocol: "lock_dlm" Lock Table: "koraykey-cl:gfs2" UUID: 0f6bb1cd-cd65-8cae-1eb9-4987367303c0 -- Bu işlemler her iki üyede yapılacaktır. -- Sunucularımızda "Cluster Volume Manager" hizmetini başlatıyoruz. # service clvmd start Activating VG(s): 1 logical volume(s) in volume group "vg_clsdisk" now active 2 logical volume(s) in volume group "vg_koraykey" now active [ OK ] -- Şimdi 2. üyede diskimizin geldiğini kontrol ediyoruz. # vgdisplay -v Finding all volume groups Finding volume group "vg_clsdisk" --- Volume group --- VG Name vg_clsdisk System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 12 VG Access read/write VG Status resizable Clustered yes Shared no MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 1 Act PV 1 VG Size 5.00 GiB PE Size 4.00 MiB Total PE 1279 Alloc PE / Size 1279 / 5.00 GiB Free PE / Size 0 / 0 VG UUID 3ssGeI-ixU0-3rqA-GrcY-JCsx-ZDYy-Dpp4VP -- Diskimizin sunucu açılışında "mount" duruma gelebilmesi için "/etc/fstab" dosyasına gerekli ayarları giriyoruz. # vim /etc/fstab -- Dosyasını açıp aşağıdaki satırı giriyoruz. /dev/mapper/vg_clsdisk-lv_clsdisk /u01/data gfs2 defaults,noatime,nodiratime 0 0 -- Sunucularımızda diskimizi bağlayabilmek için bir dizin yaratıyoruz. # mkdir -p /u01/cluster/data -- Diskimizi yeniden sunucularımızı yeniden başlatmadan "mount" ediyoruz. # mount /u01/cluster/data -- Şimdi testlerimizi gerçekleştirelim. -- Birinci ve İkinci üyemizde "/u01/cluster/data" dizinimizi sorguluyoruz. [root@koraykey-cl1 data]# ll total 0 [root@koraykey-cl2 data]# ll total 0 -- Görüldüğü gibi hiçbir dosya veya dizin yok. -- Şimdi 1. üyeden bir dizin oluşturup ikinci üyede sorgulayalım. [root@koraykey-cl1 data]# mkdir clusterdeneme -- Sorguluyoruz. [root@koraykey-cl1 data]# ls clusterdeneme -- Dizinimiz oluşmuş durumdadır. -- Şimdi 2. üyemizde aynı dizinin oluşup oluşmadığı sorgulayalım [root@koraykey-cl2 data]# ls clusterdeneme -- Görüldüğü gibi 1. üyede oluşturduğumuz dizinimiz 2. üyede görünüyor. Her iki sunucumuzda aynı diski kullabilir durumdadır.
19. Diskimizi yapılandırdıktan sonra “Homebase” sekmesinden “koraykey-cl” üzerinde tıklayarak “Failover Domains” menüsüne geçiyoruz.
20. Karşımıza çıkan ekranda bir “FailOver Domain” ismi belirliyoruz. Aşağıdaki gibi yapılandırmamızı tamamladıktan sonra “Create” düğmesine tıklayarak “Failover Domain” yapılandırmamızı tamamlıyoruz.
21. Sunucumuzda “Failover Domain” yaratma işlemimiz tamamlandı. Sunucu önceliği ve yapacağımız diğer ayarları bu ekranımızdan yapabiliriz.
22. Aynı konsolumuzda bulunan “Resources” menüsünden “Add” düğmesine tıklıyoruz ve data diskimizi atama işlemine başlıyoruz.
23. Kaynak olarak diskimizin bilgileri yazıyoruz aşağıdaki gibi yapılandırmamız tamamlandığında “Submit” düğmesine tıklıyoruz.
24. Kaynak ayarlama işlemimiz tamamlandı. Aşağıdaki ekranı gördükten sonra yapacağımız başka bir ayar yoksa bir sonraki adıma geçebiliriz.
25. Bu aşamamızda “Service Groups” tanımlamamızı yapıyoruz. Konsolumuzda “Service Groups” menüsüne tıklıyoruz.
26. Açılan yönetim konsolunda “Service Name” vb. ayarlarımızı aşağıdaki gibi yapılandırıyoruz.
27. Sunucumuzda başarılı bir şekilde “Service Groups” yaratıldı. “Add” düğmesine tıklayarak “Global Resources” seçeneklerinden oluşturduğumuz “FileServer” kaynağını seçiyoruz.
28. Karşımıza gelen ekranda disk bilgilerimiz vb. yapılandırmamızı kontrol ettikten sonra “Apply” düğmesine tıklıyoruz.
Sunucularımızda Cluster (Kümeleme) Servisimiz hazır ve çalışır durumda. Şimdi uygulamamızın veya dosya sunucusu olarak kullanılacak cluster alanımızı servis edebiliriz. Eğer sunucularımız Dosya sunucusu olarak kullanılacaksa “Linux İşletim Sistemlerinde Samba/Cifs Sunucu Yapılandırması” makalemizden yararlanabilirsiniz. Eğer bir uygulama kullanacaksa bu alanı gösterebiliriz. Tabiki kullanacağımız uygulamaların cluster desteği olması gerekmektedir. Bu makalemizdeki adımlar “Red Hat Enterprise Linux 6.4” işletim sisteminde denenmiştir. Diğer Red Hat türevi (Oracle Enterprise Linux, CentOS vb.) işletim sistemleriyle uyumludur.
Başka bir makalede görüşmek üzere…
Yorum yazabilmek için oturum açmalısınız.