Cara Mengonfigurasi dan Mempertahankan Ketersediaan/Pengelompokan Tinggi di Linux


Ketersediaan Tinggi (HA) mengacu pada kualitas sistem untuk beroperasi terus menerus tanpa kegagalan dalam jangka waktu yang lama. Solusi HA dapat diimplementasikan menggunakan perangkat keras dan/atau perangkat lunak, dan salah satu solusi umum untuk mengimplementasikan HA adalah clustering.

Dalam komputasi, cluster terdiri dari dua atau lebih komputer (umumnya dikenal sebagai node atau anggota) yang bekerja sama untuk melakukan suatu tugas. Dalam pengaturan seperti itu, hanya satu node yang menyediakan layanan dan node sekunder akan mengambil alih jika gagal.

Cluster terbagi dalam empat tipe utama:

  • Penyimpanan: menyediakan gambar sistem file yang konsisten di seluruh server dalam sebuah cluster, memungkinkan server membaca dan menulis secara bersamaan ke satu sistem file bersama.
  • Ketersediaan Tinggi: menghilangkan satu titik kegagalan dan dengan melakukan failover layanan dari satu node cluster ke node cluster lainnya jika node menjadi tidak beroperasi.
  • Penyeimbangan Beban: mengirimkan permintaan layanan jaringan ke beberapa node cluster untuk menyeimbangkan beban permintaan di antara node cluster.
  • Performa Tinggi: melakukan pemrosesan paralel atau bersamaan, sehingga membantu meningkatkan kinerja aplikasi.

Solusi lain yang banyak digunakan untuk menyediakan HA adalah replikasi (khususnya replikasi data). Replikasi adalah proses dimana satu atau lebih database (sekunder) dapat tetap sinkron dengan satu database primer (atau master).

Untuk menyiapkan sebuah cluster, kita memerlukan setidaknya dua server. Untuk tujuan panduan ini, kami akan menggunakan dua server Linux:

  • Node1: 192.168.10.10
  • Node2: 192.168.10.11

Pada artikel ini, kami akan mendemonstrasikan dasar-dasar cara menerapkan, mengonfigurasi, dan memelihara ketersediaan/pengelompokan tinggi di Ubuntu 16.04/18.04 dan CentOS 7. Kami akan mendemonstrasikan cara menambahkan layanan HTTP Nginx ke cluster.

Mengkonfigurasi Pengaturan DNS Lokal di Setiap Server

Agar kedua server dapat berkomunikasi satu sama lain, kita perlu mengonfigurasi pengaturan DNS lokal yang sesuai di file /etc/hosts di kedua server.

Buka dan edit file menggunakan editor baris perintah favorit Anda.

sudo vim /etc/hosts  

Tambahkan entri berikut dengan alamat IP sebenarnya dari server Anda.

192.168.10.10	node1.example.com
192.168.10.11 	node2.example.com

Simpan perubahan dan tutup file.

Menginstal Server Web Nginx

Sekarang instal server web Nginx menggunakan perintah berikut.

sudo apt install nginx  [On Ubuntu]
sudo yum install epel-release && sudo yum install nginx [On CentOS 7]

Setelah instalasi selesai, jalankan layanan Nginx sekarang dan aktifkan layanan tersebut untuk memulai secara otomatis saat boot, lalu periksa apakah sudah aktif dan berjalan menggunakan perintah systemctl.
Di Ubuntu, layanan akan dimulai secara otomatis segera setelah pra-konfigurasi paket selesai, Anda cukup mengaktifkannya.

sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl status nginx

Setelah memulai layanan Nginx, kita perlu membuat halaman web khusus untuk mengidentifikasi dan menguji operasi di kedua server. Kami akan mengubah konten halaman indeks Nginx default seperti yang ditunjukkan.

echo "This is the default page for node1.example.com" | sudo tee /usr/share/nginx/html/index.html 	#VPS1
echo "This is the default page for node2.example.com" | sudo tee /usr/share/nginx/html/index.html 	#VPS2

Memasang dan Mengonfigurasi Corosync dan Alat Pacu Jantung

Selanjutnya, kita harus memasang Pacemaker, Corosync, dan PCS pada setiap node sebagai berikut.

sudo apt install corosync pacemaker pcs	#Ubuntu 
sudo yum install corosync pacemaker pcs	#CentOS 

Setelah instalasi selesai, pastikan daemon pcs berjalan di kedua server.

sudo systemctl enable pcsd
sudo systemctl start pcsd
sudo systemctl status pcsd

Membuat Klaster

Selama instalasi, pengguna sistem bernama “hacluster ” dibuat. Jadi kita perlu menyiapkan otentikasi yang diperlukan untuk pcs. Mari kita mulai dengan membuat kata sandi baru untuk pengguna “hacluster ”, kita perlu menggunakan kata sandi yang sama di semua server:

sudo passwd hacluster

Selanjutnya, di salah satu server (Node1), jalankan perintah berikut untuk menyiapkan otentikasi yang diperlukan untuk pcs.

sudo pcs cluster auth node1.example.com node2.example.com -u hacluster -p password_here --force

Sekarang buat sebuah cluster dan isi dengan beberapa node (nama cluster tidak boleh melebihi 15 karakter, dalam contoh ini, kami menggunakan examplecluster) di server Node1.

sudo pcs cluster setup --name examplecluster node1.example.com node2.example.com 

Sekarang aktifkan cluster saat boot dan mulai layanan.

sudo pcs cluster enable --all
sudo pcs cluster start --all

Sekarang periksa apakah layanan cluster sudah aktif dan berjalan menggunakan perintah berikut.

sudo pcs status
OR
sudo crm_mon -1

Dari output perintah di atas, Anda dapat melihat bahwa ada peringatan tentang tidak ada perangkat STONITH namun STONITH masih diaktifkan di cluster. Selain itu, tidak ada sumber daya/layanan cluster yang dikonfigurasi.

Mengonfigurasi Opsi Klaster

Opsi pertama adalah menonaktifkan STONITH (atau Tembak Node Lain Di Kepala), implementasi anggar pada Pacemaker.

Komponen ini membantu melindungi data Anda agar tidak rusak karena akses bersamaan. Untuk tujuan panduan ini, kami akan menonaktifkannya karena kami belum mengonfigurasi perangkat apa pun.

Untuk mematikan STONITH, jalankan perintah berikut:

sudo pcs property set stonith-enabled=false

Selanjutnya, abaikan juga kebijakan Kuorum dengan menjalankan perintah berikut:

sudo pcs property set no-quorum-policy=ignore

Setelah mengatur opsi di atas, jalankan perintah berikut untuk melihat daftar properti dan pastikan opsi di atas, stonith dan kebijakan kuorum dinonaktifkan.

sudo pcs property list

Menambahkan Layanan Sumber Daya/Kluster

Di bagian ini, kita akan melihat cara menambahkan sumber daya cluster. Kami akan mengkonfigurasi IP mengambang yang merupakan alamat IP yang dapat langsung dipindahkan dari satu server ke server lain dalam jaringan atau pusat data yang sama. Singkatnya, IP mengambang adalah istilah umum teknis yang digunakan untuk IP yang tidak terikat secara ketat pada satu antarmuka tunggal.

Dalam hal ini, ini akan digunakan untuk mendukung failover di klaster ketersediaan tinggi. Perlu diingat bahwa IP mengambang tidak hanya untuk situasi failover, tetapi juga memiliki beberapa kasus penggunaan lainnya. Kita perlu mengkonfigurasi cluster sedemikian rupa sehingga hanya anggota aktif cluster yang “memiliki” atau merespons IP mengambang pada waktu tertentu.

Kita akan menambahkan dua sumber daya klaster: sumber daya alamat IP mengambang yang disebut “floating_ip ” dan sumber daya untuk server web Nginx yang disebut “http_server ”.

Pertama mulai dengan menambahkan floating_ip sebagai berikut. Dalam contoh ini, alamat IP mengambang kami adalah 192.168.10.20.

sudo pcs resource create floating_ip ocf:heartbeat:IPaddr2 ip=192.168.10.20 cidr_netmask=24 op monitor interval=60s

Di mana :

  • floating_ip: adalah nama layanan.
  • “ocf:heartbeat:IPaddr2 ”: memberi tahu Pacemaker skrip mana yang akan digunakan, dalam hal ini IPaddr2, di namespace mana (alat pacu jantung) dan standar apa yang sesuai dengan ocf.
  • op monitor interval=60s ”: memerintahkan Alat Pacu Jantung untuk memeriksa kesehatan layanan ini setiap satu menit dengan memanggil tindakan monitor agen.

Kemudian tambahkan resource kedua yang diberi nama http_server. Di sini, agen sumber daya layanan adalah ocf:heartbeat:nginx.

sudo pcs resource create http_server ocf:heartbeat:nginx configfile="/etc/nginx/nginx.conf" op monitor timeout="20s" interval="60s"

Setelah Anda menambahkan layanan cluster, jalankan perintah berikut untuk memeriksa status sumber daya.

sudo pcs status resources

Melihat output dari perintah, dua sumber daya tambahan: “floating_ip ” dan “http_server ” telah terdaftar. Layanan floating_ip tidak aktif karena node utama sedang beroperasi.

Jika firewall di sistem Anda diaktifkan, Anda harus mengizinkan semua lalu lintas ke Nginx dan semua layanan ketersediaan tinggi melalui firewall untuk komunikasi yang baik antar node:

-------------- CentOS 7 -------------- 
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=high-availability		
sudo firewall-cmd --reload

-------------- Ubuntu -------------- 
sudo ufw allow http	
sudo ufw allow high-availability						
sudo ufw reload 

Menguji Ketersediaan/Pengelompokan Tinggi

Langkah terakhir dan penting adalah menguji apakah pengaturan ketersediaan tinggi kami berfungsi. Buka browser web dan navigasikan ke alamat 192.168.10.20 Anda akan melihat halaman Nginx default dari node2.example.com seperti yang ditunjukkan pada tangkapan layar.

Untuk menyimulasikan kegagalan, jalankan perintah berikut untuk menghentikan cluster di node2.example.com.

sudo pcs cluster stop http_server

Kemudian muat ulang halaman di 192.168.10.20, Anda sekarang dapat mengakses halaman web Nginx default dari node1.example.com.

Alternatifnya, Anda dapat menyimulasikan kesalahan dengan memberi tahu layanan untuk berhenti secara langsung, tanpa menghentikan klaster di node mana pun, menggunakan perintah berikut di salah satu node:

 
sudo crm_resource --resource http_server --force-stop 

Kemudian Anda perlu menjalankan crm_mon dalam mode interaktif (default), dalam interval monitor 2 menit, Anda akan dapat melihat pemberitahuan cluster bahwa http_server gagal dan dipindahkan itu ke node lain.

Agar layanan klaster Anda dapat berjalan secara efisien, Anda mungkin perlu menetapkan beberapa batasan. Anda dapat melihat halaman manual pcs (man pcs) untuk daftar semua perintah penggunaan.

Untuk informasi lebih lanjut tentang Corosync dan Pacemaker, lihat: https://clusterlabs.org/

Ringkasan

Dalam panduan ini, kami telah menunjukkan dasar-dasar cara menerapkan, mengonfigurasi, dan memelihara ketersediaan/pengelompokan/replikasi tinggi di Ubuntu 16.04/18.04 dan CentOS 7. Kami mendemonstrasikan cara menambahkan layanan HTTP Nginx ke sebuah cluster. Jika Anda memiliki pemikiran untuk dibagikan atau pertanyaan, gunakan formulir umpan balik di bawah.