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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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.
1 2 |
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.
1 2 3 4 5 6 7 |
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 ve bu adımdan sonraki işlemleri sadece primary makinada uygulayın.
1 2 3 4 5 |
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.
1 2 3 |
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.
1 2 3 4 5 6 7 8 |
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.
1 2 3 |
pcs status nodes corosync-cmapctl | grep members pcs status corosync |
Tarayıcıya sunucuların IPlerini yazdığımda Nginx’in cevap verdiğinden emin olduktan sonra floating IP’yi yazıyorum. Nginx 1’in cevap verdiğini görüyorum.
Test amacıyla web01 makinasını cluster üzerinde down hale getirin. Eğer floating IP ikinci web makinasından cevap vermeye başlarsa işlem tamamdır.
İşlem sonunda node1 aktif etmek için de aşağıdaki komutu node1 makinasında uygulamalısınız.
1 |
<strong>pcs cluster start nginx1</strong> |
Umarım zamandan kazanmanızı sağlar.