Merhaba,

Daha önce High Availability HAProxy-Keepalived Kurulumu ve Yapılandırması başlığı adı altında HAProxy yedekliliği ile iki veri merkezi üzerinde isteğe göre aktif-aktif veya aktif-pasif bir yapı kurulumundan bahsetmiştim. Bu anlatımda da High Availability bir ortamın iki node üzerine kurulumundan bahsedeceğim ve bu anlatım Corosync-Pacemaker kurulumu ve DRBD kurulumu olmak üzere iki kısımdan oluşuyor. İşlemlere başlamadan önce aşağıdaki makalede geçen işlemleri gerçekleştirmelisiniz. DRBD (disk replikesine) ihtiyacım yok derseniz bu anlatımı direkt uygulayabilirsiniz.

DRBD ile Disk Replikasyon Yapılandırması ve Kurulumu

Makalede geçen işlemleri tamamladıktan sonra şimdi Corosync-Pacemaker ve Nginx kurulumuna geçebiliriz.

Bu anlatımda “Web Sunucu HA” kurmaktan bahsettim. Aynı senaryoyu veritabanı veya başka servisler için de kullanabilirsiniz.

DRBD anlatımında olduğu gibi sunucuların hosts dosyalarını ve hostnamelerini düzenlemeyi, Selinux’u disable etmeyi ve sunucuların birbirleriyle ALL konuşmalarını sağlamayı unutmayın.

192.168.0.69 nginx1.vahap.net nginx1
192.168.0.72 nginx2.vahap.net nginx2
192.168.0.63 Floating IP

Nginx’in son sürümünü yükleyebilmek için aşağıdaki işlemi uygulayın.

Nginx kurulumu için /yum.repos.d/ altına nginx.repo adına dosya oluşturun:
nano /etc/yum.repos.d/nginx.repo

Aşağıdaki repo tanımını kopyalayın ve bu dosya içine yapıştırın.

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

yum -y update
yum -y install nginx
systemctl start nginx
systemctl enable nginx

Kurulumu tamamladıktan sonra ilk makinada ilk komutu, ikinci makinada da ikinci komutu kullanın.

echo 'web01 - voc-labs' > /usr/share/nginx/html/index.html
echo 'web02 - voc-labs' > /usr/share/nginx/html/index.html

Bu işlemden sonra corosync, pacemaker ve pcsd kurun. Sırasıyla uygulayın.

yum -y install corosync pacemaker pcs

systemctl enable corosync
systemctl enable pacemaker
systemctl enable pcsd
systemctl start pcsd
passwd hacluster

İşlemi iki sunucuda gerçekleştirin ve hacluster’a şifre verin.

Bu adımdan sonraki işlemleri sadece primary makinada uygulayın.

pcs cluster auth nginx1 nginx2
pcs cluster setup --name vahap-cluster nginx1 nginx2
pcs cluster start --all
pcs cluster enable --all
pcs status cluster

Bu işlem sonunda STONITH disable etmelisiniz.

pcs property set stonith-enabled=false
pcs property set no-quorum-policy=ignore
pcs property list

Bu işlem sonunda floating IP eklemeniz gerekecek. Bunun içinde bir public IP belirleyin. Bu IP’yi Load Balancer IP’si gibi düşünebilirsiniz. Arka tarafta heartbeat paket gönderip, hangi sunucu IP’si aktifse trafiği onun üzerinden sunuyor. Sırasıyla ve uygun yerleri düzelterek komutu uygulayın.

pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.0.63 cidr_netmask=32 op monitor interval=30s
pcs resource create web ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf op monitor timeout="5s" interval="5s"
pcs status resources
pcs constraint colocation add web virtual_ip INFINITY
pcs constraint order virtual_ip then web
pcs cluster stop --all
pcs cluster start --all
pcs status resources

Bu adımdan sonra süreç tamamlanmıştır. Şimdi testleri gerçekleştirelim.

pcs status nodes
corosync-cmapctl | grep members
pcs status corosync
Test sonucunuz bu şekildeyse işlemler başarılıdır. Şimdi diğer testlere bakalım.

Tarayıcıya sunucuların IPlerini yazdığım Nginx’in cevap verdiğinden emin olduktan sonra floating IP’yi yazıyorum. Nginx 1’in cevap verdiğini görüyorum.

Şimdi web01 makinasını cluster üzerinde down hale getiriyorum. Eğer floating IP ikinci web makinasından cevap vermeye başlarsa işlem tamamdır.

Şu an node 1 pasif ve node 2 aktif durumda.

Süreç başarıyla tamamlanmıştır. İşlem sonunda node1 aktif etmek için de aşağıdaki komutu node1 makinasında uygulamalısınız.

pcs cluster start nginx1

Umarım zamandan kazanmanızı sağlar.