Günümüzün rekabetçi dijital dünyasında, iş uygulamalarının ve servislerinin kesintisiz çalışması, kurumların başarısı için hayati önem taşımaktadır. Donanım arızaları, yazılım hataları veya planlı bakım çalışmaları gibi çeşitli nedenlerle meydana gelebilecek kesintiler, ciddi finansal kayıplara, itibar zedelenmesine ve müşteri memnuniyetsizliğine yol açabilir. Bu riskleri en aza indirmek ve sistem sürekliliğini sağlamak amacıyla Yüksek Erişilebilirlik (High Availability – HA) çözümleri devreye girmektedir.
Red Hat Enterprise Linux (RHEL) gibi kurumsal düzeydeki işletim sistemleri için sunulan HA çözümleri arasında Pacemaker, açık kaynak kodlu ve güçlü bir küme kaynak yöneticisi olarak öne çıkmaktadır. Pacemaker, Corosync küme iletişim katmanıyla birlikte çalışarak, kritik servislerin ve uygulamaların bir sunucuda meydana gelebilecek bir arıza durumunda otomatik olarak başka bir sunucuya devredilmesini sağlar. Bu sayede, son kullanıcılar için kesintisiz bir deneyim sunulurken, sistem yöneticileri için de proaktif bir hata yönetimi ve kurtarma mekanizması oluşturulur.
Bu makalede, Red Hat ortamında Pacemaker tabanlı bir HA cluster mimarisinin temel kavramlarını, bileşenlerini, yapılandırma adımlarını ve yönetim pratiklerini detaylı bir şekilde inceleyeceğiz. Amacımız, okuyuculara Pacemaker’ın sunduğu avantajları ve bu teknolojiyi kendi sistemlerinde nasıl etkin bir şekilde kullanabileceklerini aktarmaktır.
Cluster Nedir ?
En basit tanımıyla cluster (küme), birden fazla bilgisayarın (bunlara genellikle düğüm veya node denir) birbirine bağlanarak tek bir sistem gibi birlikte çalışmasıdır. Bu bilgisayarlar, ortak bir amaca hizmet etmek, performansı artırmak, iş yükünü dağıtmak veya sistemin kesintisiz çalışmasını sağlamak gibi çeşitli nedenlerle bir araya getirilirler.
Cluster’ların Temel Özellikleri ve Amaçları:
- Birlikte Çalışma: Kümedeki bilgisayarlar, belirli görevleri yerine getirmek için koordineli bir şekilde çalışır.
- Kaynak Paylaşımı: İşlem gücü, bellek, depolama alanı gibi kaynaklar küme içerisinde paylaşılabilir veya dağıtılabilir.
- Ağ Bağlantısı: Düğümler genellikle yüksek hızlı bir ağ üzerinden birbirleriyle iletişim kurar.
- Tek Sistem İmajı (Opsiyonel): Bazı küme türlerinde, kullanıcı veya uygulamalar için tüm küme tek bir güçlü bilgisayar gibi görünebilir.
Cluster Türleri ve Kullanım Alanları:
Cluster’lar farklı amaçlara yönelik olarak çeşitli türlerde yapılandırılabilir. En yaygın türlerden bazıları şunlardır:
- Yüksek Erişilebilirlik (High Availability – HA) Cluster’ları:
- Amaç: Sistemlerin ve uygulamaların kesintisiz çalışmasını sağlamak.
- Çalışma Prensibi: Bir düğümde (sunucuda) bir arıza meydana geldiğinde, üzerindeki görevler otomatik olarak kümedeki başka bir sağlıklı düğüme devredilir (bu işleme “failover” denir). Bu sayede kullanıcılar kesintiyi fark etmez veya minimum düzeyde etkilenir. Sizin makalenizin konusu olan Pacemaker da bu tür cluster’ların yönetiminde kilit bir rol oynar.
- Yük Dengeleme (Load Balancing) Cluster’ları:
- Amaç: Gelen istekleri (örneğin bir web sitesine gelen trafiği) birden fazla sunucuya dağıtarak performansı artırmak ve tek bir sunucunun aşırı yüklenmesini önlemek.
- Çalışma Prensibi: Bir yük dengeleyici, istekleri kümedeki sunucular arasında belirli algoritmalara göre paylaştırır.
- Yüksek Performanslı Hesaplama (High-Performance Computing – HPC) Cluster’ları:
- Amaç: Çok büyük hesaplama gücü gerektiren bilimsel araştırmalar, karmaşık simülasyonlar veya veri analizleri gibi görevleri gerçekleştirmek.
- Çalışma Prensibi: Çok sayıda işlemcinin paralel olarak çalışmasıyla devasa hesaplama problemleri çözülür.
- Depolama (Storage) Cluster’ları:
- Amaç: Büyük miktarda veriyi güvenli, yedekli ve yüksek erişilebilirlikte saklamak.
- Çalışma Prensibi: Veriler birden fazla depolama ünitesine dağıtılır ve genellikle yedeklenir.
HA Cluster (Küme) Bileşenleri
Küme Düğümleri (Cluster Nodes):
- Bunlar, kümenin üyesi olan fiziksel veya sanal sunuculardır.
- Her düğüm, kümelenmiş servisleri veya uygulamaları çalıştırabilecek kapasitede olmalıdır.
- Genellikle en az iki düğüm bulunur (aktif-pasif veya aktif-aktif konfigürasyonlar için). Daha fazla düğüm, yedeklilik ve ölçeklenebilirlik sağlayabilir.
Küme İletişim Katmanı (Cluster Communication Layer / Interconnect):
- Düğümlerin birbirleriyle “sağlıklı” (heartbeat) olup olmadıklarını kontrol etmek, küme durumunu senkronize etmek ve mesajlaşmak için kullandıkları özel bir ağ bağlantısıdır.
- Bu iletişim genellikle yedekli ağ arayüzleri üzerinden sağlanır (bonding) ki tek bir ağ kartı veya kablo arızası iletişimi kesmesin.
- Corosync, Red Hat ortamlarında bu katmanda sıklıkla kullanılan bir bileşendir. Düğümler arasında güvenilir mesajlaşma ve üyelik yönetimi sağlar.
Paylaşımlı Depolama (Shared Storage) (Opsiyonel ama Yaygın):
- Birçok HA kümesinde, kümelenmiş uygulamaların ve servislerin verilerinin saklandığı, tüm düğümler tarafından erişilebilen merkezi bir depolama alanıdır.
- Bir düğüm arızalandığında, diğer düğüm bu paylaşımlı depolamadaki verilere erişerek servisi devralabilir.
- Yaygın paylaşımlı depolama teknolojileri arasında SAN (Storage Area Network), NAS (Network Attached Storage) veya iSCSI bulunur.
- Alternatif: Paylaşımlı depolama yerine DRBD (Distributed Replicated Block Device) gibi çözümlerle düğümler arasında veri senkronizasyonu da sağlanabilir. Bu durumda her düğümün kendi yerel diski olur ve veriler ağ üzerinden senkronize edilir.
Kaynaklar (Resources):
- Küme tarafından yönetilen ve yüksek erişilebilirlik sağlanması hedeflenen her türlü servis veya bileşendir.
- Örnekler:
- IP Adresleri (Sanal IP, Yüzen IP)
- Dosya Sistemleri (Paylaşımlı disk üzerindeki veya DRBD ile senkronize edilen)
- Uygulamalar (Apache, Nginx, veritabanları – MySQL, PostgreSQL vb.)
- Servisler (systemd servisleri)
Küme Kaynak Yöneticisi (Cluster Resource Manager – CRM):
- Kaynakların hangi düğümde çalışacağını, ne zaman başlatılıp durdurulacağını, arıza durumunda nasıl davranılacağını yöneten merkezi zekadır.
- Kaynakların durumunu sürekli izler ve tanımlanan politikalara göre hareket eder.
- Pacemaker, bu rolü üstlenen ve Red Hat ortamlarında standart olarak kabul edilen güçlü ve esnek bir CRM yazılımıdır.
Çitleme Mekanizmaları (Fencing / STONITH – Shoot The Other Node In The Head):
- HA kümesinin en kritik bileşenlerinden biridir.
- Bir düğümün “sorunlu” veya “yanıt vermez” duruma geldiği ve küme iletişimini kaybettiği durumlarda, veri bozulmasını (split-brain senaryosu) önlemek için o düğümün kümeden güvenli bir şekilde izole edilmesini (kapatılmasını veya yeniden başlatılmasını) sağlar.
- Fencing cihazları, güç anahtarları (PDU), entegre yönetim kartları (ILO, iDRAC, IPMI) veya sanal makineler için hipervizör komutları olabilir.
Çoğunluk (Quorum):
- Kümenin sağlıklı bir şekilde karar alabilmesi ve “split-brain” (beyin bölünmesi) durumunu önleyebilmesi için gereken minimum aktif ve iletişim kurabilen düğüm sayısıdır.
- Split-brain, ağda bir kesinti olduğunda kümenin iki veya daha fazla bağımsız parçaya ayrılması ve her parçanın kendisini ana küme sanarak kaynakları yönetmeye çalışması durumudur. Bu, veri tutarsızlığına ve bozulmasına yol açabilir.
- Çoğunluk mekanizmaları, kümenin sadece çoğunluğa sahip olan parçasının aktif kalmasını sağlar.
İzleme Araçları (Monitoring Tools):
- Kümenin genel sağlığını, düğümlerin durumunu, kaynakların çalışmasını ve olası sorunları izlemek için kullanılan araçlardır.
- Bu araçlar, sorunları erken tespit etmeye ve müdahale etmeye yardımcı olur. (Örn:
pcs status
,crm_mon
)
Pacemaker Nedir ?
Bilişim teknolojilerinde yüksek erişilebilir (high availability – HA) sistemler oluşturmak için kullanılan bir açık kaynaklı küme yöneticisidir. Bu, sunucuların (düğümlerin) bir araya gelerek tek bir sistem gibi çalışmasını sağlayan ve bir sunucunun arızalanması durumunda hizmet kesintisini en aza indiren bir yazılım çözümüdür.
Basit bir HA Cluster Kurulumu
Bu yazımızda, örnek bir (dummy) küme kurulumu adımlarını ele alacağız.
Öncelikle cluster’ı kurmadan önce aşağıdaki hususları sağlamamız gerekiyor:
- DNS adı çözümlemesi: Tüm küme düğümleri birbirinin hostname’ini DNS üzerinden çözebilmeli.
- Parolasız SSH: Düğümler arasında
ssh-keygen
ile oluşturulmuş anahtarlar kullanılarak şifresiz SSH bağlantısı kurulmuş olmalı. - Saat Senkronizasyonu: Tüm düğümler aynı NTP sunucusuna bağlanarak saatlerini senkronize etmeli.
1. Düğümleri Hazırlama
Ben genellikle bulut tabanlı VPS’leri tercih ediyorum; çünkü:
- Statik genel IP ve diğer ağ yapılandırmaları bulut sağlayıcı tarafından yönetiliyor,
- Yeni kullanıcılar için ücretsiz kredi imkânları sunuluyor (örneğin DigitalOcean’da 200 USD, GCP’de 300 USD, AWS’de bir yıllık ücretsiz kullanım).
Ancak kendi lokal ortamınızda (Linux kullanıyorsanız) veya sanal makineler (Oracle VM VirtualBox, VMware) üzerinden de düğümlerinizi oluşturabilirsiniz. Sanal makinelerin kaynak tüketimine dikkat ediniz 🙂
Bu yazıda Google Cloud Platform (GCP) üzerinde üç adet Red Hat tabanlı düğüm oluşturdum.

2. Control-Host Üzerinden İşlemler
Tüm işlemleri control-host
adlı ana düğüm üzerinden gerçekleştireceğiz. Birden fazla düğüm olduğunda, manuel kurulum yerine otomosyon (otomasyon) için Ansible kullanmayı tercih ederim. Böylece tek bir node üzerinden tüm işlemleri komut bazlı çalıştırabiliriz.
2.1. SSH ve DNS Yapılandırması
- SSH Sunucusunu Etkinleştirme
Tüm düğümlerde/etc/ssh/sshd_config
dosyasını açın ve aşağıdaki ayarları yapın:vim /etc/ssh/sshd_config # Aşağıdaki satırları ekleyin veya düzenleyin: PermitRootLogin yes PasswordAuthentication yes systemctl restart sshd
- DNS Adı Çözümlemesi
control-host
üzerinde/etc/hosts
dosyasına diğer düğümlerin IP ve host bilgilerini ekleyin:vim /etc/hosts 10.0.0.10 node1.example.com node1 10.0.0.11 node2.example.com node2
- Test
DNS çözümlemesini kontrol etmek için:ping -c3 node1 ping -c3 node2
2.2. Parolasız SSH Kurulumu
control-host
üzerinde SSH anahtar çifti oluşturun ve diğer node’lara dağıtın:
ssh-keygen -t rsa -b 4096
for host in node1 node2 do
ssh-copy-id "$host"
done
2.3. Ansible Kurulumu ve Konfigürasyonu
- Ansible Yükleme
En güncel versiyon için pip kullanabilirsiniz veya dağıtımın paket yöneticisinden yükleyin:dnf install -y python3-pip pip3 install ansible
- Ansible Proje Dizini
mkdir -p ~/ansible && cd ~/ansible
- Inventory Dosyası
inventory
adlı dosya oluşturun:[linux] node1 node2
Not:localhost
kaydını eklemeyin; ihtiyaç duyarsanız playbook seviyesinde ekleyebilirsiniz. - ansible.cfg
Aşağıdaki içeriği kullanarak yapılandırma dosyasını oluşturun:[defaults] inventory = ./inventory remote_user = root host_key_checking = False log_path = /var/log/ansible.log interpreter_python = /usr/bin/python3
2.4. Ansible Bağlantı Testi
ansible linux -m ping -o
Beklenen çıktı:
node1 | SUCCESS => {"changed": false, "ping": "pong"}
node2 | SUCCESS => {"changed": false, "ping": "pong"}
2.5 Ansible Playbook Dosyaları Oluşturmak
İş yükümüzün yaklaşık %70’ini otomatikleştirecek bir playbook hazırlıyoruz. Bu playbook’u çalıştırmadan önce bir Red Hat abonelik hesabınızın olması gerekiyor; hesabınızı ücretsiz olarak kolayca oluşturmak için şu adımı izleyebilirsiniz:
- Red Hat aboneliği kaydı: https://access.redhat.com/register
vim ansible/setupnode.yml
---
- hosts: linux,localhost # Bu playbook hem uzak düğümlere, hem de localhost'a uygulanacak
become: true # Tüm görevler root (sudo) yetkisiyle çalışacak
tasks:
- name: Add all hosts to files to make it resolve on hosts
blockinfile:
path: /etc/hosts
block: |
10.0.0.0 control.example.com control
10.0.0.1 node1.example.com node1
10.0.0.2 node2.example.com node2
marker: "# {mark} ANSIBLE MANAGED BLOCK - Custom hosts"
state: present
# /etc/hosts dosyasını, iç blok (block) içinde tanımlı satırlarla günceller.
# Eğer zaten ekli değilse, ANSIBLE MANAGED BLOCK işaretlerinden yararlanarak ekler.
- name: Install subscription-manager package
yum:
name: subscription-manager
state: present
# Red Hat abonelik yönetimi için gerekli paketi yükler.
- name: Configure Red Hat subscription
redhat_subscription:
username: redhat kullanıcı adınız
password: red hat parolanız
auto_attach: true
# RHSM'e kullanıcı bilgilerinizle login olur ve uygun paket aboneliklerini otomatik ekler.
- name: Enable HighAvailability repository
rhsm_repository:
name: rhel-9-for-x86_64-highavailability-rpms
state: enabled
# HA (High Availability) paketlerini içeren Red Hat deposunu etkinleştirir.
- name: Install HA-related packages
yum:
name:
- pacemaker
- pcs
- psmisc
- policycoreutils-python3
- fence-agents-gce
enablerepo: rhel-9-for-x86_64-highavailability-rpms
state: present
# Pacemaker, pcs vb. HA araçlarını tek seferde yükler. repo tanımını burada tekrar vermek güvenlidir.
- name: Configure the firewall for cluster communication
firewalld:
zone: trusted
port: "{{ item }}"
permanent: yes
state: enabled
immediate: true
loop:
- 2224/tcp # pcsd yönetim portu
- 2223/tcp # corosync portu
- 3121/tcp # pacemaker portu
# İhtiyaç duyulan TCP portlarını firewalld üzerinde açar.
- name: Enable and start pcsd service
service:
name: pcsd
state: started
enabled: yes
# pcs komutları için arka planda çalışan daemon'u aktif eder ve her reboot'ta başlatır.
- name: Ensure hacluster user exists with a secure password
user:
name: hacluster
password: "{{ 'password' | password_hash('sha512') }}"
state: present
# “hacluster” kullanıcısını oluşturur veya günceller; parola SHA512 ile hash’lenir.
- name: Allow cluster daemons network connections (SELinux)
seboolean:
name: cluster_can_network_connect
state: yes
persistent: yes
# SELinux policy’sine, cluster servislerinin ağ bağlantısı kurmasına izin verir.
- name: Allow cluster daemons full file-system access (SELinux)
seboolean:
name: cluster_manage_all_files
state: yes
persistent: yes
# SELinux policy’sine, cluster servislerine dosya sistemi üzerinde tam yetki tanır.
Playbook’umuzu çalıştırıyoruz
ansible-playbook ansible/setupnode.yml
Playbook çalıştıktan sonra her bir node üzerinde aşağıdaki değişiklikler ve konfigürasyonlar otomatik olarak uygulanmış olacak:
- /etc/hosts Güncellemesi
- Her node’un
/etc/hosts
dosyası içine, kontrol sunucusu ve diğer cluster düğümlerinin IP-hostname eşlemeleri eklenir. - Böylece DNS’e ihtiyaç kalmadan
control.example.com
,node1
,node2
gibi isimler doğrudan çözümlenir.
- Her node’un
- Red Hat Abonelik Yönetimi
subscription-manager
paketi yüklenir.- Verdiğiniz RHSM (Red Hat Subscription Manager) kullanıcı adı/şifresiyle oturum açılır ve uygun abonelikler otomatik olarak atanır.
- Ardından, “High Availability” (Yüksek Erişilebilirlik) deposu (
rhel-9-for-x86_64-highavailability-rpms
) etkinleştirilir.
- Pacemaker/PCS ve İlgili Paketlerin Kurulumu
pacemaker
,pcs
,psmisc
,policycoreutils-python3
gibi HA küme yazılımlarını içeren paketler yüklenir.- Böylece Corosync/Pacemaker yapı taşları ve küme yönetim komutları her nodeda hazır olur.
- Firewall Ayarları (firewalld)
- Cluster iletişimi için gerekli TCP portları (2223, 2224, 3121) “trusted” zoneda açılır ve kalıcı olarak etkinleştirilir.
- Anında (immediate) uygulanır, yani firewall yeniden başlatılmadan portlar açılmış olur.
- PCSD Servis Yönetimi
pcsd
(Pacemaker/Corosync yönetim daemon’u) servisi devreye alınır: hem başlatılır (started
), hem de sistem açılışında otomatik başlaması sağlanır (enabled
).
hacluster
Kullanıcısı- Kümeyi yönetmek için gereken
hacluster
kullanıcısı oluşturulur veya güncellenir. - Parolası SHA-512 ile hash’lenerek güvenli şekilde atanır.
- Kümeyi yönetmek için gereken
- SELinux Politikası Düzenlemeleri
cluster_can_network_connect
boolean’ı “yes” olarak işaretlenir: Klasör hizasında çalışan cluster servislerinin ağ üzerinden diğer düğümle konuşmasına izin verir.cluster_manage_all_files
boolean’ı “yes” olarak işaretlenir: Cluster servislerinin dosya sistemi üzerinde tam yetkiyle işlemler yapabilmesini sağlar.
Cluster Bileşenleri
şimdi cluster bileşenlerini yapılandırma aşamasına geçiyoruz. Bu bölümde:
- Corosync ring konfigürasyonu
- Fencing (STONITH) mekanizması kurulumu
- GCP servis hesabı oluşturma ve yapılandırma
- Pacemaker üzerinden fencing kaynağının eklenmesi
1. Corosync Nedir?
Corosync, cluster düğümleri arasında iletişimi sağlayan mesajlaşma katmanıdır. Pacemaker’ın düzgün çalışması için düğümler arasında senkronizasyon ve node health takibi sağlar. Yani “kim ayakta, kim düştü, lider kim olacak” gibi bilgileri Corosync ile çözümleriz.
Corosync, ring0
adlı ana iletişim kanalıyla çalışır ve multicast
veya unicast
(GCP için genelde unicast) kullanılabilir.
pcs cluster auth control-host node1 node2 -u hacluster -p 'password'
pcs cluster setup --name mycluster node1 node2
pcs cluster start --all
pcs cluster enable --all
2. Fencing (STONITH) Nedir?
Fencing, cluster’daki bir düğüm düzgün çalışmadığında onu güvenli şekilde sistem dışı bırakmak için kullanılır. STONITH (Shoot The Other Node In The Head) bu işlemin teknik adıdır.
Örnek senaryo: node1
bozuldu ama hala çalışıyor gibi davranıyor → Bu durumda node2
, node1
‘i GCP API aracılığıyla yeniden başlatabilir (fence işlemi).
Google Cloud Platform (GCP) üzerinde çalışan Pacemaker cluster’ında STONITH için fence_gce
kullanmalıyız. Bu ajan, GCP API’si üzerinden bir node’u yeniden başlatabilir (reboot) ya da güç kapatabilir (off). Bu şekilde cluster, bozuk node’u izole edebilir.
3. GCP’de Servis Hesabı Oluşturma
- GCP Console → IAM & Admin → Service Accounts
- “Create Service Account” → Ad ver
- Role: Compute Admin (minimum)
- “Create key” → JSON biçiminde indir
Bu JSON anahtar dosyasını her node’a /root/gcp-key.json
olarak kopyalayın.
4. STONITH Kaynağını Eklemek (playbook + pcs komutu)
Her node’da çalışacak bir playbook veya ad-hoc komutla bu işlemi otomatikleştirebilirsiniz. ya da her node’de ayrı ayrı çalıştıralım.
---
- hosts: control-host
become: true
vars:
project_id: "cluster-project"
zone: "us-central1-a"
nodes:
- name: control-host
keyfile: /root/gcp-key.json
- name: node1
keyfile: /root/gcp-key.json
- name: node2
keyfile: /root/gcp-key.json
tasks:
- name: Create STONITH (fence_gce) resource for each node
shell: |
pcs stonith create fence-{{ item.name }} fence_gce \
method=reboot \
zone="{{ zone }}" \
project="{{ project_id }}" \
plug="{{ item.name }}" \
serviceaccount="$(< {{ item.keyfile }})" \
pcmk_host_list="{{ item.name }}"
args:
executable: /bin/bash
loop: "{{ nodes }}"
when: item.name is defined
Playbook’umuzu çalıştırıyoruz
ansible-playbook stonith.yml
4. Cluster Resource (Kaynak) Oluşturma
Bu adımda, web servisi (Apache HTTPD) gibi bir kaynağı cluster üzerinde çalışacak şekilde tanımlamak için basit bir playbook kullanacağız. Aşağıdaki playbook, linux
grubundaki tüm düğümlerde HTTPD kurulumu, firewall ayarları, servis yönetimi ve temel bir index.html
dosyası oluşturulmasını sağlar.
---
- hosts: linux,localhost # Uzak düğümler ve gerekirse lokal üzerinde uygulanır
become: true # Root yetkisiyle çalışır
tasks:
- name: Install Httpd # Apache web sunucusunu yükler
yum:
name: httpd
state: latest
- name: Configure firewall # HTTP servis portunu açar
firewalld:
service: http
permanent: yes
immediate: true
state: enabled
- name: Enable http service # Apache'yi sistem açılışında aktif eder
service:
name: httpd
enabled: yes
- name: Create an index file # Ana sayfa dosyasını oluşturur
blockinfile:
path: /var/www/html/index.html
create: true
block: |
<html>
<body> My Test Site - $(hostname)</body>
</html>
- name: Enable Apache Status URL # Server-status erişimini düzenler
blockinfile:
create: yes
path: /etc/httpd/conf.d/status.conf
block: |
ExtendedStatus On
<Location /server-status>
SetHandler server-status
Require ip 127.0.0.1 ::1
Require all granted
</Location>
- name: Restart Httpd # Yapılandırma sonrası servisi yeniden başlatır
service:
name: httpd
state: restarted
Playbook’umuzu bu komut ile ansible-playbook resource.yml bu sonuçları elde edebiliriz.
- Install Httpd: Apache HTTPD en son sürümü ile kurulur ve güncel tutulur.
- Firewall:
http
servisifirewalld
üzerinde açılarak dış erişime izin verir. - Service: Sistem açılışında
httpd
servisi otomatik başlar. - Index File: Basit bir HTML şablonu oluşturularak her düğümün hostname bilgisi sayfada gösterilir.
- Server Status:
/server-status
endpoint’i için izin verilen IP aralıkları tanımlanır. - Restart Httpd: Yapılandırma değişiklikleri aktif olması için servis yeniden başlatılır.
Bu playbook, cluster içinde web servisi örneği olarak kullanılabilir. Oluşturulan HTTPD servisini Pacemaker kaynak nesnesi olarak tanımlamak için aşağıdaki adımları izleyebilirsiniz:
# Apache servisini cluster kaynağı olarak ekleyin
pcs resource create WebSite ocf:heartbeat:apache \
configfile=/etc/httpd/conf/httpd.conf \
statusurl="http://$(hostname -f)/server-status" \
op monitor interval=30s
Bu komut ile WebSite
adlı bir kaynak oluşturulur, Apache konfigürasyon dosyası kullanılır ve server-status
endpoint’i üzerinden sağlık kontrolü yapılır.
Cluster’i Test Etme
Tüm adımları tamamladıktan sonra, her bir düğümün IP adresini tarayıcınıza yazarak cluster’ınızın çalışır durumda olduğunu doğrulayabilirsiniz:
http://<control-host-ip>/server-status
http://<node1-ip>/server-status
http://<node2-ip>/server-status
Tarayıcıda Apache Server Status sayfasını görebiliyor olmalısınız; örneğin şu şekilde bir çıktı beklersiniz:



Bu makalede, temel bir HA (High Availability) cluster kurulumundan başlayarak:
- Düğümlerin hazırlığı ve DNS/SSH yapılandırması,
- Ansible ile otomasyon adımları,
- Corosync ve fencing (STONITH) mekanizmaları,
- Web hizmeti (HTTPD) kaynağının Pacemaker ile cluster’a tanıtılmasını
adım adım ele aldık. Artık:
- Cluster düğümleriniz birbirini sorunsuz tanıyor,
- GCP üzerinde fencing ile güvenli yeniden başlatma,
- Pacemaker ile kaynak yönetimi,
- Web servisi için sağlık kontrolleri (monitoring) hazır durumda.
Sonraki adımlar: İhtiyacınıza göre farklı kaynak türlerini (IP, NFS, sanal IP gibi) ekleyebilir; daha karmaşık uygulamalar için custom OCF ajanları geliştirebilirsiniz. Üretim ortamı için STONITH ve quorum politikalarını mutlaka etkinleştirmeyi unutmayın.
Cluster’ınızın yüksek erişilebilirlik ve kararlılık seviyesini artırmak için devamlı olarak izleme (monitoring) ve yedekleme (backup) stratejilerini de planlamanızı öneririm. Başarılar dilerim!
Kaynaklar
- Pacemaker Resmi Dokümantasyonu: https://clusterlabs.org/projects/pacemaker/doc/index.php
Leave a Reply