High Availability merupakan sebuah sistem yang dirancang untuk meningkatkan suatu layanan agar tetap tersedia "available". Secara garis besar, teknologi high availability ini dapat meminimalisir terjadinya downtime pada suatu node. (Single Point of Failure).
Pada kesempatan kali ini akan menjelaskan bagaimana cara melakukan konfigurasi high availability cluster pada service http (apache) menggunakan pacemaker.
Pacemaker adalah sebuah cluster resource manager.
Oke, sebelum kita mulai perhatikan gambar topologi kali ini.
Dalam keadaan normal web server akan di respon oleh node 1, jika node 1 mengalami crash maka webserver pada node 2 akan active. Nah, skenario seperti ini disebut active - passive.
Node 1
192.168.56.254
dmz1.local-zone.net
Node 2
192.168.56.253
dmz2.local-zone.net
Konfigurasi Apache High Availability Cluster
Step 1 - InstallasiTambahkan hostname dibawah ini pada masing-masing node ( node 1 dan node 2 ) pada file /etc/hosts.
192.168.56.254 dmz1.local-zone.net dmz1Install pacemaker di kedua node.
192.168.56.253 dmz2.local-zone.net dmz2
# yum install pacemaker pcsDisabled selinux di kedua node.
# nano /etc/sysconfig/selinuxStart service pcsd di kedua node dan jalankan sebagai startup.
[...]
SELINUX=disabled
[...]
# systemctl start pcsdSetelah service pcsd dijalankan, pcs akan secara default membuat sebuah user hacluster. Set password hacluster di kedua node.
# systemctl enable pcs
# passwd haclusterStep 2 - Firewall
Changing password for user hacluster.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
Open port untuk komunikasi ha cluster dan http pada semua node.
# systemctl restart firewalldJika anda sudah menjalankan perintah diatas, maka anda Tidak Perlu lagi menambahkan perintah di bawah ini. Rule iptables ini hanya alternatif jika anda tidak menggunakan firewalld.
# firewall-cmd --permanent --add-service=high-availability
# firewall-cmd --permanent --add-service=http
# firewall-cmd --reload
# firewall-cmd --list-service
[...]
dhcpv6-client high-availability http ssh
[...]
Open UDP Port 5404 dan 5405 disemua node untuk Corosync.
iptables -I INPUT -m state --state NEW -p udp -m multiport --dports 5404,5405 -j ACCEPTOpen TCP Port 2224 disemua node untuk PCS.
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 2224 -j ACCEPTAllow igmp dan multicast traffic.
iptables -I INPUT -p igmp -j ACCEPTAllow Http Port
iptables -I INPUT -m addrtype --dst-type MULTICAST -j ACCEPT
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPTSimpan konfigurasi iptablesnya.
service iptables save
Step 3 - Konfigurasi (hanya di Node1)
Otorisasikan masing-masing node.
# pcs cluster auth dmz1.local-zone.net dmz2.local-zone.net -u haclusterSelanjutnya buat clusternya dari masing-masing node. Sebagai contoh saya menggunakan nama HaCluster.
Password:
dmz1.local-zone.net: Authorized
dmz2.local-zone.net: Authorized
# pcs cluster setup --name HaCluster dmz1.local-zone.net dmz2.local-zone.net --forceJalankan dan enable service clusternya.
[...]
Shutting down pacemaker/corosync services...
Redirecting to /bin/systemctl stop pacemaker.service
Redirecting to /bin/systemctl stop corosync.service
Killing any remaining services...
Removing all cluster configuration files...
dmz1.local-zone.net: Succeeded
dmz2.local-zone.net: Succeeded
[...]
# pcs cluster start --allSekarang cek apakah status clusternya sudah aktif.
# pcs cluster enable --all
# pcs status cluster
[...]
Cluster Status:
Last updated: Thu Nov 5 21:33:32 2015
Last change: Sat Oct 31 14:54:39 2015 by root via cibadmin on dmz1.local-zone.net
Stack: corosync
Current DC: dmz1.local-zone.net (version 1.1.13-a14efad) - partition with quorum
2 nodes and 0 resources configured
Online: [ dmz1.local-zone.net dmz2.local-zone.net ]
[...]
Step 4 - Install dan Konfigurasi Apache
Setelah membuat clusternya sekarang install apache dan tambahkan sedikit konfigurasinya di masing-masing node. (node1 dan node 2).
yum install httpdBuat file /etc/httpd/conf.d/server-status.conf dan isikan perintah di bawah ini.
Buat file /var/www/html/index.php pada masing-masing node dan isikan perintah berikut pada index.php.
SetHandler server-status
Order Deny,Allow
Allow from All
Node 1
dmz1.local-zone.net"; ?> Node 2
dmz2.local-zone.net"; ?>
Step 5 - Property
Pada langkah kali ini anda akan menentukan property / fitur yang akan digunakan. Untuk lebih jelasnya anda dapat mendapatkan penjelasan lengkap mengenai istilah - istilah dalam clustering.
Baca disini :
Konsep Cluster ServerSet property pada pcs hanya pada node 1.
# pcs property set stonith-enabled=false
# pcs property set no-quorum-policy=ignore
# pcs property set default-resource-stickiness="INFINITY"
# pcs property listStep 6 - Resource dan Colocation
[...]
Cluster Properties:
cluster-infrastructure: corosync
cluster-name: HaCluster
dc-version: 1.1.13-a14efad
default-resource-stickiness: INFINITY
have-watchdog: false
last-lrm-refresh: 1446276258
no-quorum-policy: ignore
stonith-enabled: false
[...]
Buat virtual ip dan service http untuk clusternya hanya pada node 1. Note : ens192 adalah interfacenya, anda bisa merubahnya sesuai dengan nic anda misalnya eth0 dsb.
# pcs resource create VirtIP IPaddr2 ip=192.168.56.100 cidr_netmask=24 nic=ens192 op monitor interval=30sSelanjutnya arahkan virtual ip tersebut ke service web servernya.
# pcs resource create Httpd apache configfile="/etc/httpd/conf/httpd.conf" statusurl="http://127.0.0.1/server-status" op monitor interval=30s
# pcs constraint colocation add Httpd with VirtIP INFINITYSetelah resource dibuat ketikan perintah di bawah ini untuk memastikan resource sudah berjalan.
# pcs constraint order VirtIP then Httpd
# pcs statusRestart clusternya.
[...]
Cluster name: HaCluster
Last updated: Fri Nov 6 04:54:36 2015
Last change: Thu Nov 5 20:25:10 2015 by root via cibadmin on dmz1.local-zone.net
Stack: corosync
Current DC: dmz1.local-zone.net (version 1.1.13-a14efad) - partition with quorum
2 nodes and 2 resources configured
Online: [ dmz1.local-zone.net dmz2.local-zone.net ]
Full list of resources:
VirtIP (ocf::heartbeat:IPaddr2): Started dmz1.local-zone.net
Httpd (ocf::heartbeat:apache): Started dmz1.local-zone.net
PCSD Status:
dmz1.local-zone.net: Online
dmz2.local-zone.net: Online
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled
[...]
pcs cluster stop --allStep 7 - Testing
pcs cluster start --all
Sekarang akses virtual ip pada browser.
Web server akan secara default berjalan pada node1. Sekarang kita coba matikan node 1.
# pcs cluster stop dmz1.local-zone.netSekarang coba akses kembali virtual ip nya, maka node2 yang akan menjawab service httpnya.
[...]
dmz1.local-zone.net: Stopping Cluster (pacemaker)...
dmz1.local-zone.net: Stopping Cluster (corosync)...
[...]
Demikian tutorial linux server kali ini mengenai konfigurasi apache high availability cluster menggunakan pacemaker pada centos 7 / rhel 7. Semoga bermanfaat bagi kita semua dan selamat mencoba..!!!
Video
Sumber : www.dimasrio.com