Konfigurasi Online Failover/Failback pada Debian 9

Posted by

Tulisan ini merupakan tugas kuliah dari dosen Sistem Administrator tempat saya kuliah. Tugasnya berkelompok dengan anggota 3 orang. Masing-masing anggota sudah pasti mendapatkan giliran. Ada yang menjelaskan perihal materi yang dibuat, ada yang melakukan konfigurasi dan ada yang standby untuk menjawab apabila nanti ada pertanyaan.

Tugasnya sendiri sebenarnya bebas. Bisa pilih materi yang menarik namun tidak terlalu sulit dari segi konfigurasi. Niat awal, kelompok saya hendak mengambil materi tentang pembuatan chat server, alternatif server pengganti Dropbox atau pembuatan server berbasis LTSP/Diskless. Setelah dilihat contoh instalasi dan konfigurasinya yang cukup rumit, akhirnya diambil judul materi lain. Yaitu “Konfigurasi Online Failover”.

Pengambilan materi tersebut memiliki beberapa alasan. Yang pertama, dari segi instalasi dan konfigurasi tidak terlalu sulit. Namun dari segi pemahaman, memang materi tersebut relatif cukup berat. Yang kedua, materi dari kelompok lain dapat dikolaborasikan dan dijadikan satu kesatuan project. Contoh materi dari kelompok lain adalah replikasi/sinkronisasi data menggunakan GlusterFS. Instalasi dan konfigurasi WordPress beserta pemasangan SSL nya. Yang saya tangkap, jika masing-masing materi digabungkan, maka bisa dijadikan satu materi menarik. Yaitu “Membangun WordPress High Availability Server”. Heartbeat untuk online failover, GlusterFS untuk sinkronisasi datanya dan WordPress merupakan aplikasi contoh yang dijadikan HA.

Untuk aplikasi online failover, saya menggunakan Heartbeat. Selain Heartbeat ada juga Pacemaker, Keepalived dan aplikasi sejenis. Dari segi instalasi dan konfigurasi, Heartbeat relatif cukup mudah.

Untuk membuat server online failover, dibutuhkan 2 buah server (minimal). Untuk memudahkan pemahaman, berikut adalah informasi sistem yang akan dibangun

# Server 1
Hostname   : node1
Domain     : imanudin.com
IP Address : 192.168.1.10

# Server 2
Hostname   : node2
Domain     : imanudin.com
IP Address : 192.168.1.11

# Alias IP untuk testing online failover
IP Address : 192.168.1.5

Untuk IP pada masing-masing server diasumsikan sudah terkonfigurasi dengan baik. Sudah bisa saling komunikasi satu sama lain. Ada akses internet. Sudah terpasang SSH dan dalam keadaan running.

# Konfigurasi /etc/hosts

Konfigurasi /etc/hosts pada masing-masing server seperti berikut :

nano /etc/hosts

127.0.0.1     localhost
192.168.1.10 node1.imanudin.com node1
192.168.1.11 node2.imanudin.com node2

# Konfigurasi Hostname

– Pada node1

hostnamectl set-hostname node1.imanudin.com

– Pada node2

hostnamectl set-hostname node2.imanudin.com

# Instalasi Heartbeat

Install aplikasi Heartbeat pada masing-masing server

apt-get update -y
apt-get upgrade -y
apt-get install heartbeat -y

Konfigurasi Heartbeat

# Buat file ha.cf
Buat file ha.cf dan isi dengan baris berikut :

nano /etc/ha.d/ha.cf

keepalive 2
warntime 5
deadtime 15
initdead 90
udpport 694
auto_failback off
ucast eth0 192.168.1.11
logfile /var/log/ha-log
node node1.imanudin.com node2.imanudin.com

Harap sesuaikan :

  • eth0 merupakan nama interfaces network yang dikenali pada server
  • 192.168.1.11 adalah IP dari server lawan. Untuk node1, IP dari server lawan adalah node2. Begitu juga sebaliknya
  • Pada node2, ganti IP 192.168.1.11 dengan IP dari node1. Yaitu 192.168.1.10

# Buat file authkeys

nano /etc/ha.d/authkeys

Isi dengan baris berikut :

auth 2
2 crc

Ubah permission-nya

chmod 0600 /etc/ha.d/authkeys

# Buat file haresources

Isian pada file haresources ini yang menentukan resources mana saja yang akan di handle oleh Heartbeat. Seperti IP alias, services httpd/apache dan resources yang lainnya.

nano /etc/ha.d/haresources

Isi dengan baris berikut :

node1.imanudin.com IPaddr::192.168.1.5/24/eth0:0 apache2

Catatan :

  • node1.imanudin.com merupakan node master yang akan menghandle resource/services
  • eth0 adalah nama interfaces network yang dikenali pada server. Sesuaikan jika nama interfacesnya berbeda. Misalnya enp0s3
  • 192.168.1.5 merupakan IP alias yang akan diakses oleh user. IP ini akan otomatis berpindah dari node1 ke node2. Atau sebaliknya.

Install Apache Web Server untuk Testing

apt-get install apache2 -y

– Pada node1
Buat index.html pada DocumentRoot node1.

echo "Ini tampilan dari node1.imanudin.com" > /var/www/html/index.html

– Pada node2
Buat index.html pada DocumentRoot node2.

echo "Ini tampilan dari node2.imanudin.com" > /var/www/html/index.html

# Restart service Apache
Restart service Apache pada semua node

systemctl restart apache2

# Testing akses Web Server
Lakukan testing akses pada masing-masing server via browser. Ketika akses IP node1, seharusnya muncul tampilan “Ini tampilan dari node1.imanudin.com”. Begitu juga sebaliknya. Ketika akses IP node2, muncul tampilan “Ini tampilan dari node2.imanudin.com”. Jika sudah bisa diakses dan tampilan yang muncul sudah sesuai, stop service Apache

systemctl stop apache2
systemctl disable apache2

# Start Heartbeat
Start service heartbeat pada kedua node. Dengan dijalankannya service heartbeat, maka resources yang telah didefinisikan akan dihandle oleh heartbeat. Seperti IP alias dan service Apache.

systemctl start heartbeat
systemctl enable heartbeat

# Testing Online failover

  • Silakan testing akses IP alias dari browser. Yang muncul seharusnya tampilan dari node1
  • Stop service heartbeat pada node1. Maka node2 akan mengambil alih resources yang sebelumnya dihandle oleh node1
  • Silakan testing akses IP alias dari browser. Yang muncul seharusnya tampilan dari node2
  • Jika resources hendak diambil alih oleh node1, start kembali service heartbeat pada node1
  • Pada node2, stop service heartbeat. Maka resources akan diambil alih oleh node1

Catatan : Kunci utama dari online failover menggunakan Heartbeat adalah pada services-nya. Jika service Heartbeat distop, maka resources yang sedang dihandle akan diambil alih oleh node yang lain.

Silakan dicoba dan semoga bermanfaat 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.