Yüksek Erişilebilirliğe Sahip HAProxy Kurulumu: Corosync, Pacemaker ve Ayrılmış IP ile Ubuntu 14.04 Üzerinde
Giriş
Günümüzün rekabetçi dijital dünyasında, uygulamaların ve hizmetlerin kesintisiz çalışması kritik öneme sahiptir. Herhangi bir kesinti, gelir kaybına, müşteri memnuniyetsizliğine ve marka itibarının zedelenmesine yol açabilir. Bu nedenle, yüksek erişilebilirlik (High Availability – HA) çözümleri, modern altyapıların vazgeçilmez bir parçası haline gelmiştir. Bu teknik makale, Ubuntu 14.04 işletim sistemi üzerinde, HAProxy yük dengeleyiciyi Corosync ve Pacemaker kümeleme araçları ile birleştirerek yüksek erişilebilirlikli bir mimari oluşturmayı ayrıntılı olarak ele alacaktır. Ayrıca, hizmetin kesintisiz olarak başka bir düğüme taşınabilmesini sağlayan “Ayrılmış IP” (Reserved IP veya Floating IP) kavramının nasıl yapılandırılacağını da açıklayacağız.
Ubuntu 14.04, bu makalenin yazıldığı tarihte destek süresi dolmuş eski bir sürüm olsa da, belirtilen gereksinimler doğrultusunda bu platform üzerindeki kurulum adımları detaylandırılacaktır. Temel prensipler ve bileşenlerin çalışma mantığı, daha yeni Linux dağıtımlarında da benzerlik gösterecektir.
Yüksek Erişilebilirlik Bileşenlerine Genel Bakış
Yüksek erişilebilirlik çözümü, genellikle birden fazla sunucunun (düğümün) bir araya gelerek tek bir hizmeti yedekli olarak sunması prensibine dayanır. Bu kurulumda kullanacağımız ana bileşenler şunlardır:
* HAProxy: Yüksek performanslı bir TCP/HTTP yük dengeleyici ve ters proxy sunucusudur. Gelen trafiği birden fazla arka uç sunucusu arasında dağıtarak performansı artırır ve tek bir hata noktasını (Single Point of Failure – SPoF) ortadan kaldırmaya yardımcı olur.
* Corosync: Küme düğümleri arasında güvenilir mesajlaşma ve küme durumu senkronizasyonu sağlayan temel bir küme iletişim katmanıdır. Düğümlerin birbirlerinin durumunu izlemesini ve küme içindeki değişiklikleri hızlıca algılamasını sağlar.
* Pacemaker: Corosync üzerinde çalışan, küme kaynak yöneticisidir. Hangi kaynağın (IP adresi, hizmet, dosya sistemi vb.) hangi düğümde çalışacağını belirler, kaynakların izlenmesini sağlar ve bir düğüm arızalandığında kaynakları otomatik olarak başka bir sağlıklı düğüme taşır (failover).
* Ayrılmış IP (Reserved IP / Floating IP / Virtual IP): Küme içindeki aktif düğüm üzerinde bulunan ve düğüm arızalandığında otomatik olarak yedek düğüme geçen bir IP adresidir. Kullanıcılar bu IP adresi üzerinden hizmete erişir, böylece arka plandaki düğüm değişikliklerinden etkilenmezler.
Ön Gereksinimler
Bu kurulum için aşağıdaki ön gereksinimlerin karşılandığından emin olun:
* İki Adet Ubuntu 14.04 Sunucusu: En az iki adet sunucuya ihtiyacımız olacak. Bunlara haproxy-node1 ve haproxy-node2 gibi isimler verelim.
* Statik IP Adresleri: Her sunucunun statik bir IP adresine sahip olması gerekmektedir. Örneğin:
* haproxy-node1: 192.168.1.101
* haproxy-node2: 192.168.1.102
* Ayrılmış IP: 192.168.1.100 (Bu IP, aktif düğüm üzerinde bulunacaktır.)
* SSH Erişimi ve Sudo Yetkileri: Her iki sunucuya da SSH üzerinden erişim ve sudo komutunu kullanma yetkisi olmalıdır.
* Ağ Bağlantısı: Sunucular arasında sorunsuz ağ bağlantısı ve Corosync’in kullanacağı portların (varsayılan 5405/UDP) açık olması gerekmektedir.
* Zaman Senkronizasyonu (NTP): Küme düğümleri arasında zaman senkronizasyonunun doğru çalışması kritik öneme sahiptir. NTP (Network Time Protocol) kurulması şiddetle tavsiye edilir.
Adım Adım Kurulum ve Konfigürasyon
1. Sistem Hazırlığı
Her iki düğümde de aşağıdaki adımları uygulayın:
1.1. Sistem Güncellemesi ve Temel Ayarlar
Sistem paket listesini güncelleyin ve yüklü paketleri yükseltin:
sudo apt-get update
sudo apt-get upgrade -y
1.2. Hostname Ayarı
Her düğüme benzersiz bir hostname atayın. Örneğin:
haproxy-node1 üzerinde:
sudo hostname haproxy-node1
echo "haproxy-node1" | sudo tee /etc/hostname
haproxy-node2 üzerinde:
sudo hostname haproxy-node2
echo "haproxy-node2" | sudo tee /etc/hostname
Değişikliklerin etkili olması için sunucuları yeniden başlatmanız gerekebilir veya sudo service hostname start komutunu kullanabilirsiniz.
1.3. /etc/hosts Dosyası Ayarı
Her iki düğümde de /etc/hosts dosyasını düzenleyerek düğümlerin IP adreslerini ve hostname’lerini ekleyin. Bu, küme iletişimi için kolaylık sağlar.
sudo nano /etc/hosts
Dosyaya aşağıdaki satırları ekleyin (kendi IP adreslerinize göre düzenleyin):
127.0.0.1 localhost
192.168.1.101 haproxy-node1
192.168.1.102 haproxy-node2
1.4. Firewall (Güvenlik Duvarı) Ayarları
Eğer bir güvenlik duvarı (ufw gibi) kullanıyorsanız, Corosync ve Pacemaker’ın ihtiyaç duyduğu portları açmanız gerekmektedir. Corosync varsayılan olarak 5405/UDP portunu kullanır. Ayrıca, HAProxy’nin dinleyeceği portları (örneğin 80/TCP ve 443/TCP) da açmalısınız.
Basitlik adına, test ortamında güvenlik duvarını geçici olarak devre dışı bırakabilirsiniz (ancak üretim ortamında bu önerilmez):
sudo ufw disable
Üretim ortamı için gerekli portları açın:
sudo ufw allow 5405/udp
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HAProxy HTTP
sudo ufw allow 443/tcp # HAProxy HTTPS
sudo ufw enable
1.5. NTP Kurulumu
Zaman senkronizasyonu için NTP istemcisini kurun ve yapılandırın:
sudo apt-get install ntp -y
sudo service ntp restart
Her iki düğümde de zamanın senkronize olduğundan emin olun.
2. Corosync ve Pacemaker Kurulumu
Her iki düğümde de Corosync ve Pacemaker paketlerini kurun:
sudo apt-get install corosync pacemaker resource-agents -y
resource-agents paketi, Pacemaker’ın IP adresleri, dosya sistemleri ve hizmetler gibi çeşitli kaynakları yönetmek için kullandığı betikleri içerir.
3. Corosync Konfigürasyonu
Corosync’in ana yapılandırma dosyası /etc/corosync/corosync.conf‘tur. Bu dosya her iki düğümde de tamamen aynı olmalıdır.
3.1. Corosync Yapılandırma Dosyasını Oluşturma/Düzenleme
İlk olarak, örnek yapılandırma dosyasını kopyalayabilir veya mevcut dosyayı düzenleyebilirsiniz. Ubuntu 14.04’te genellikle /etc/corosync/corosync.conf dosyası varsayılan olarak boş veya minimaldir.
sudo nano /etc/corosync/corosync.conf
Aşağıdaki içeriği dosyaya yapıştırın. bindnetaddr kısmını kendi ağ aralığınıza göre ayarlayın (örneğin 192.168.1.0).
totem {
version: 2
secauth: on
cluster_name: haproxy_cluster
transport: udpu
interface {
ringnumber: 0
bindnetaddr: 192.168.1.0 # Kendi ağ aralığınızı yazın
mcastaddr: 226.94.1.1
mcastport: 5405
}
# İki düğümlü bir kümede quorum sorunlarını önlemek için
# consensus timeout değerlerini artırmak faydalı olabilir.
# Bu değerler, düğümlerin birbirlerini ne kadar süreyle görmezse
# kümeden ayrılmış sayılacağını belirler.
# Bu değerler varsayılan olarak yeterli olabilir, ancak ağ gecikmesi
# olan ortamlarda ayarlanması gerekebilir.
# knet_transport: sctp # Eğer udpu yerine sctp kullanmak isterseniz
}
nodelist {
node {
ring0_addr: 192.168.1.101 # haproxy-node1 IP adresi
nodeid: 1
}
node {
ring0_addr: 192.168.1.102 # haproxy-node2 IP adresi
nodeid: 2
}
}
quorum {
# İki düğümlü bir kümede, split-brain senaryolarını önlemek için
# quorum'un nasıl davranacağını belirlemek önemlidir.
# Varsayılan olarak, kümenin yarısından fazlası çalışmıyorsa
# küme kaynakları durdurulur. İki düğümlü bir kümede bu, bir düğüm
# çöktüğünde diğerinin de kaynakları durdurmasına neden olabilir.
# Bu nedenle, iki düğümlü kümelerde no-quorum-policy=ignore ayarı
# sıklıkla kullanılır, ancak bunun riskleri vardır (split-brain).
# Pacemaker yapılandırmasında bunu daha detaylı ele alacağız.
provider: corosync_votequorum
# expected_votes: 2 # Kümedeki beklenen düğüm sayısı
# two_node: 1 # İki düğümlü küme için özel ayar
}
logging {
fileline: off
to_stderr: no
to_syslog: yes
syslog_facility: daemon
debug: off
timestamp: on
}
3.2. Corosync Servisini Başlatma
Yapılandırma dosyasını kaydettikten sonra, Corosync servisini her iki düğümde de başlatın:
sudo service corosync start
3.3. Corosync Durumunu Kontrol Etme
Corosync’in doğru çalışıp çalışmadığını ve düğümlerin birbirini görüp görmediğini kontrol edin:
sudo corosync-cfgtool -s
Çıktıda config_version ve members gibi bilgileri görmelisiniz.
sudo corosync-cmapctl | grep members
Bu komut, kümedeki üye düğümleri listelemelidir.
4. Pacemaker Konfigürasyonu
Pacemaker, Corosync üzerinde çalışır ve küme kaynaklarını yönetir. Pacemaker yapılandırması genellikle tek bir düğümden yapılır ve değişiklikler otomatik olarak diğer düğümlere yayılır.
4.1. Pacemaker Başlangıç Ayarları
Pacemaker’ı başlatmadan önce, Corosync’in çalıştığından emin olun. Pacemaker, Corosync’e bağımlıdır.
Pacemaker’ın ilk başlangıç ayarlarını yapalım. Genellikle crm configure komutu ile yapılır.
Pacemaker’ı Başlatma:
sudo service pacemaker start
Küme Durumunu Kontrol Etme:
sudo crm status
Veya daha detaylı izleme için
sudo crm_mon -1
Her iki düğümün de çevrimiçi (online) olduğunu görmelisiniz.
4.2. STONITH ve Quorum Ayarları
* STONITH (Shoot The Other Node In The Head): Split-brain senaryolarını (iki düğümün de aktif olduğunu sanarak aynı kaynakları yönetmeye çalışması) önlemek için hayati öneme sahiptir. Üretim ortamlarında STONITH mutlaka etkinleştirilmelidir. Ancak kurulum ve test aşamasında karmaşıklığı azaltmak için geçici olarak devre dışı bırakılabilir.
sudo crm configure property stonith-enabled=false
UYARI: Bu ayarı üretim ortamında ASLA kullanmayın! Bir STONITH cihazı (genellikle bir güç anahtarı veya sanal makine API’si entegrasyonu) yapılandırmadan stonith-enabled=true yaparsanız, bir düğüm arızalandığında Pacemaker kaynakları taşıyamaz.
* Quorum (Çoğunluk): İki düğümlü bir kümede, bir düğümün arızalanması durumunda küme çoğunluğunu kaybeder (çünkü 2 düğümden 1’i %50’dir, %50’den fazlası değil). Bu durumda Pacemaker varsayılan olarak tüm kaynakları durdurur. Bunu önlemek için no-quorum-policy=ignore ayarını kullanabiliriz. Ancak bu da split-brain riskini artırır. Üç veya daha fazla düğümlü kümeler daha güvenlidir.
sudo crm configure property no-quorum-policy=ignore
UYARI: Bu ayar, iki düğümlü kümelerde tek bir düğümün küme çoğunluğunu kaybetmesine rağmen çalışmaya devam etmesini sağlar. Bu, dikkatli kullanılmadığında split-brain senaryolarına yol açabilir. Bu makale bir kurulum rehberi olduğu için bu ayarı kullanıyoruz, ancak üretimde dikkatli olunmalıdır.
5. HAProxy Kurulumu ve Konfigürasyonu
HAProxy’yi her iki düğümde de kurun:
sudo apt-get install haproxy -y
5.1. HAProxy Yapılandırma Dosyası
HAProxy’nin yapılandırma dosyası /etc/haproxy/haproxy.cfg‘dir. Bu dosya her iki düğümde de aynı olmalıdır.
sudo nano /etc/haproxy/haproxy.cfg
Aşağıdaki örnek yapılandırmayı kullanabilirsiniz. Bu örnekte, ayrılmış IP adresi olan 192.168.1.100 üzerinde dinleyen ve backend_servers adlı bir arka uç havuzuna trafiği yönlendiren basit bir HTTP yük dengeleyici oluşturulmuştur. Arka uç sunucuları olarak 192.168.1.201 ve 192.168.1.202 IP adresleri kullanılmıştır. Bunları kendi gerçek arka uç sunucularınızla değiştirin.
global
log /dev/log daemon
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend http_front
bind 192.168.1.100:80 # Ayrılmış IP adresi
mode http
default_backend backend_servers
backend backend_servers
mode http
balance roundrobin
option httpchk GET /
server web1 192.168.1.201:80 check
server web2 192.168.1.202:80 check
listen stats
bind *:8080 # HAProxy istatistikleri için ayrı bir port
mode http
stats enable
stats uri /haproxy?stats
stats realm HAProxy\ Statistics
stats auth admin:password # İstatistik sayfasına erişim için kullanıcı adı ve şifre
stats refresh 10s
HAProxy’nin sistem başlangıcında otomatik olarak başlamasını sağlayın (Ubuntu 14.04’te /etc/default/haproxy dosyasını düzenleyerek):
sudo nano /etc/default/haproxy
ENABLED=0 satırını ENABLED=1 olarak değiştirin.
HAProxy yapılandırmasını kontrol edin ve servisi başlatın:
sudo haproxy -c -f /etc/haproxy/haproxy.cfg
sudo service haproxy restart
6. Ayrılmış IP ve HAProxy Servisini Pacemaker ile Yönetme
Şimdi Pacemaker’a, ayrılmış IP adresini ve HAProxy servisini bir kaynak olarak tanıtacağız ve bunların yüksek erişilebilirlik sağlamak için nasıl davranacağını yapılandıracağız. Bu adımlar, küme düğümlerinden sadece birinde yapılmalıdır (Pacemaker otomatik olarak diğerine senkronize edecektir).
6.1. IP Adresi Kaynağını Tanımlama
Ayrılmış IP adresini Pacemaker’a bir kaynak olarak tanıtın. ip parametresini kendi ayrılmış IP adresinizle değiştirin.
sudo crm configure primitive p_ip_haproxy ocf:heartbeat:IPaddr2 \
params ip=192.168.1.100 cidr_netmask=24 op monitor interval=10s
* p_ip_haproxy: Kaynağın adı.
* ocf:heartbeat:IPaddr2: Kaynağın tipi. IPaddr2 IP adreslerini yönetmek için kullanılan bir OCF (Open Cluster Framework) betiğidir.
* params ip=192.168.1.100: Ayrılmış IP adresimiz.
* cidr_netmask=24: IP adresinin netmask’i.
* op monitor interval=10s: Kaynağın her 10 saniyede bir durumunun kontrol edilmesini sağlar.
6.2. HAProxy Servis Kaynağını Tanımlama
HAProxy servisini Pacemaker’a bir kaynak olarak tanıtın. Ubuntu’da lsb:haproxy kaynağı genellikle /etc/init.d/haproxy betiğini kullanarak HAProxy’yi başlatıp durdurabilir.
sudo crm configure primitive p_haproxy lsb:haproxy \
op monitor interval=10s
* p_haproxy: Kaynağın adı.
* lsb:haproxy: HAProxy’yi yönetmek için kullanılan LSB (Linux Standard Base) init betiği.
6.3. Kaynakları Bir Grup Altında Toplama
IP adresi ve HAProxy servisi her zaman aynı düğümde çalışmalıdır. Bu nedenle, bu iki kaynağı bir grup altında toplamak en iyi uygulamadır. Pacemaker, bir gruptaki tüm kaynakları aynı düğümde tutmaya çalışır ve grup içindeki kaynakları tanımlandıkları sıraya göre başlatır/durdurur.
sudo crm configure group g_haproxy p_ip_haproxy p_haproxy
Bu komut, g_haproxy adında bir grup oluşturur ve p_ip_haproxy ile p_haproxy kaynaklarını bu gruba ekler. Pacemaker, grubu başlatırken önce p_ip_haproxy‘yi, sonra p_haproxy‘yi başlatacaktır. Durdururken ise ters sırayla durduracaktır.
6.4. Yapılandırmayı Kaydetme ve Kontrol Etme
Yapılandırma değişikliklerini kaydedin:
sudo crm configure commit
Küme durumunu kontrol edin:
sudo crm status
Veya sürekli izlemek için:
sudo crm_mon
crm status çıktısında, g_haproxy grubunun ve içindeki p_ip_haproxy ile p_haproxy kaynaklarının bir düğümde “Started” (Başlatıldı) durumda olduğunu görmelisiniz. Ayrılmış IP adresinin (192.168.1.100) o düğümde aktif olduğunu da ip addr show komutu ile kontrol edebilirsiniz.
7. Test Etme ve Yüksek Erişilebilirlik Doğrulama
Kurulumun başarılı olduğunu doğrulamak için çeşitli testler yapmalıyız.
7.1. Servise Erişim
Web tarayıcınızdan veya curl komutuyla ayrılmış IP adresine (örneğin http://192.168.1.100) erişmeye çalışın. HAProxy’nin arkasındaki arka uç sunucularından birinden yanıt almalısınız.
7.2. Manuel Kaynak Taşıma (Failover Testi)
Pacemaker’ın kaynakları bir düğümden diğerine taşıma yeteneğini test edin.
Önce aktif düğümü belirleyin (crm status çıktısında kaynakların çalıştığı düğüm). Diyelim ki haproxy-node1 üzerinde çalışıyor.
Kaynağı haproxy-node2‘ye taşımak için:
sudo crm resource move g_haproxy haproxy-node2
crm_mon komutuyla veya crm status komutuyla kaynakların haproxy-node2‘ye taşındığını gözlemleyin. Bu sırada web hizmetine erişmeye devam edin; kısa bir kesinti yaşanabilir ancak hizmetin tamamen durmaması gerekir. Taşıma işlemi tamamlandığında, ayrılmış IP’nin haproxy-node2 üzerinde aktif olduğunu doğrulayın.
Taşıma işlemini geri almak için:
sudo crm resource unmanage g_haproxy
sudo crm resource manage g_haproxy
Bu komutlar, kaynağın kısıtlamalarını kaldırıp yeniden yönetilmesini sağlar, böylece Pacemaker kaynağı otomatik olarak tercih edilen düğüme geri taşıyabilir veya mevcut düğümde bırakabilir. Otomatik olarak ilk düğüme geri dönmesini istiyorsanız, bir “location constraint” eklemeniz gerekebilir.
7.3. Düğüm Arızası Simülasyonu
En kritik test, aktif düğümün tamamen çökmesini simüle etmektir.
1. crm status komutuyla kaynakların hangi düğümde çalıştığını belirleyin (örneğin haproxy-node1).
2. Aktif düğümde (haproxy-node1) Corosync ve Pacemaker servislerini durdurun:
sudo service pacemaker stop
sudo service corosync stop
Veya daha gerçekçi bir senaryo için düğümü tamamen kapatın:
sudo shutdown -h now
3. Diğer düğüme (haproxy-node2) geçin ve crm status komutuyla küme durumunu kontrol edin. Birkaç saniye içinde Pacemaker’ın haproxy-node1‘in çevrimdışı olduğunu algılaması ve g_haproxy grubunu haproxy-node2 üzerine taşıması gerekir.
4. Ayrılmış IP adresi üzerinden hizmete erişmeye devam edin. Hizmetin haproxy-node2 üzerinden sunulduğunu doğrulayın.
Bu testler, yüksek erişilebilirlik kurulumunuzun beklendiği gibi çalıştığını doğrulamaya yardımcı olacaktır.
Önemli Hususlar ve En İyi Uygulamalar
1. STONITH (Shoot The Other Node In The Head)
Daha önce de belirtildiği gibi, STONITH üretim ortamlarında kesinlikle etkinleştirilmelidir. STONITH, bir düğümün kümeden ayrılması ancak hala kaynakları üzerinde tutuyor olması durumunda (örneğin ağ bağlantısı kesildiğinde) ortaya çıkan “split-brain” senaryolarını önler. STONITH, arızalı düğümü zorla kapatarak veya yeniden başlatarak kaynakların tek bir yerde kalmasını sağlar. Sanal makineler için genellikle hypervisor API’leri (libvirt, fence_vcenter vb.) kullanılırken, fiziksel sunucular için IPMI veya güç anahtarları (fence_apc, fence_drac vb.) kullanılır.
2. Quorum Yönetimi
İki düğümlü kümelerde no-quorum-policy=ignore kullanmak, tek bir düğümün kalması durumunda hizmetin devam etmesini sağlar ancak split-brain riskini artırır. Üç veya daha fazla düğümlü kümeler, çoğunluk ilkesini (quorum) daha güvenli bir şekilde uygulamak için daha uygundur. Eğer iki düğümlü bir kümede kalmanız gerekiyorsa, STONITH’in doğru yapılandırılması hayati öneme sahiptir.
3. Ağ Yapılandırması
Corosync trafiği için ayrı bir ağ arayüzü kullanmak, küme iletişiminin diğer trafikten etkilenmemesini ve daha güvenilir olmasını sağlayabilir. Bu, “redundant ring” (yedekli halka) olarak bilinir.
4. İzleme ve Uyarılar
Küme durumunu sürekli izlemek ve herhangi bir sorun durumunda uyarı almak kritik öneme sahiptir. crm_mon komutu temel bir izleme aracıdır, ancak Prometheus, Grafana, Nagios, Zabbix gibi araçlarla entegrasyon daha kapsamlı bir izleme ve uyarı sistemi sağlayacaktır.
5. Log Yönetimi
Corosync, Pacemaker ve HAProxy loglarını düzenli olarak kontrol edin. Merkezi bir log yönetim sistemi (ELK Stack, Graylog vb.) kullanmak, sorun gidermeyi kolaylaştırır. Loglar genellikle /var/log/syslog veya /var/log/messages altında bulunur.
6. Güvenlik
* Güvenlik duvarı kurallarını sıkı tutun ve sadece gerekli portlara izin verin.
* SSH erişimini güvenli hale getirin (anahtar tabanlı kimlik doğrulama, parola ile erişimi kapatma).
* HAProxy istatistikleri sayfasını parola ile koruyun ve varsayılan portu değiştirin.
7. HAProxy Yapılandırması
* Sağlık kontrolleri (check parametresi) ile arka uç sunucularının durumunu doğru bir şekilde izleyin.
* HTTPS trafiği için SSL/TLS sonlandırması veya passthrough yapılandırmasını ekleyin.
* HAProxy’nin performansını ve loglarını düzenli olarak analiz edin.
8. Bakım ve Güncellemeler
Küme düğümlerinde bakım veya güncelleme yaparken, kaynakları manuel olarak diğer düğüme taşıyarak kesintisiz bir deneyim sağlayın. Bakım bittikten sonra kaynakları geri taşıyabilirsiniz.
9. Ubuntu 14.04’ün Destek Sonu
Bu makale Ubuntu 14.04 üzerinde kurulumu detaylandırsa da, bu işletim sisteminin artık resmi desteğinin sona erdiğini unutmayın. Üretim ortamlarında daha güncel ve desteklenen bir işletim sistemi (örneğin Ubuntu 20.04 LTS veya 22.04 LTS) kullanmanız şiddetle tavsiye edilir. Temel prensipler ve komutların çoğu yeni sürümlerde de benzer olacaktır, ancak paket isimleri veya yapılandırma yollarında küçük farklılıklar olabilir.
Sorun Giderme
* Küme Düğümleri Birbirini Görmüyor:
* corosync.conf dosyasını kontrol edin (özellikle bindnetaddr, mcastaddr). Her iki düğümde de aynı olmalı.
* Güvenlik duvarını kontrol edin (5405/UDP açık mı?).
* /etc/hosts dosyasını kontrol edin.
* Ağ bağlantısını kontrol edin (ping).
* Corosync loglarını kontrol edin (/var/log/syslog).
* Pacemaker Kaynakları Başlamıyor/Taşınmıyor:
* crm status veya crm_mon çıktısını dikkatlice inceleyin. Hata mesajları genellikle sorunun kökenini gösterir.
* Kaynak betiklerinin doğru çalıştığından emin olun (örneğin lsb:haproxy için /etc/init.d/haproxy start/stop komutlarını manuel olarak test edin).
* Pacemaker loglarını kontrol edin (/var/log/syslog).
* STONITH’in devre dışı bırakıldığından emin olun (test ortamı için).
* Quorum ayarlarını kontrol edin.
* HAProxy Çalışmıyor:
* sudo service haproxy status komutuyla durumunu kontrol edin.
* sudo haproxy -c -f /etc/haproxy/haproxy.cfg ile yapılandırma dosyasını doğrulayın.
* HAProxy loglarını kontrol edin (/var/log/haproxy.log veya /var/log/syslog).
* Dinlediği IP adresinin (ayrılmış IP) o anda aktif düğümde olup olmadığını kontrol edin (ip addr show).
Sonuç
Bu makalede, Ubuntu 14.04 üzerinde HAProxy, Corosync ve Pacemaker kullanarak yüksek erişilebilirlikli bir yük dengeleyici kurulumunun nasıl yapılacağını adım adım ele aldık. Ayrılmış IP adresinin kullanımı sayesinde, HAProxy hizmeti herhangi bir düğüm arızasında otomatik olarak sağlıklı bir düğüme taşınarak kesintisiz hizmet sunulması sağlanmıştır.
Bu tür bir kurulum, tek bir hata noktasını ortadan kaldırarak uygulamalarınızın ve hizmetlerinizin dayanıklılığını önemli ölçüde artırır. Ancak, üretim ortamlarında STONITH’in doğru yapılandırılması, kapsamlı izleme ve düzenli bakım gibi en iyi uygulamaların titizlikle takip edilmesi gerektiğini unutmamak önemlidir. Bu çözüm, kritik iş yükleri için sağlam ve güvenilir bir temel oluşturmaktadır.