Cara Konfigurasi dan Membuat High Availability/Clustering pada OS Linux

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

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

Cluster terbagi dalam empat tipe utama:

  • Storage: memungkinkan server untuk secara bersamaan membaca dan menulis ke sistem file bersama.
  • High Availability: menghilangkan titik kegagalan tunggal dan dengan gagal layanan dari satu node cluster ke yang lain dalam kasus node menjadi tidak beroperasi.
  • Load Balancing: mengirimkan permintaan layanan jaringan ke beberapa node cluster untuk menyeimbangkan beban permintaan di antara node cluster.
  • High Performance: 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 basis data (sekunder) dapat tetap disinkronkan dengan satu basis data utama (atau master).

Untuk mengatur sebuah cluster, kita membutuhkan 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 menunjukkan dasar-dasar cara menggunakan, mengkonfigurasi dan mempertahankan ketersediaan tinggi / clustering di Ubuntu 16.04 / 18.04 dan CentOS 7. Kami akan menunjukkan cara menambahkan layanan HTTP Nginx ke cluster.

Configuring Local DNS Settings on Each 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 aktual dari server Anda.

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

Simpan perubahan dan tutup file.

Installing Nginx Web Server

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, mulailah layanan Nginx untuk saat ini dan aktifkan untuk memulai secara otomatis saat boot, kemudian periksa apakah sudah menyala dan berjalan menggunakan perintah systemctl.

Baca Juga:  Menghubung ke Linux dari Windows menggunakan PuTTY

Di Ubuntu, layanan harus dimulai secara otomatis segera setelah paket pra-konfigurasi 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 pada 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

Installing and Configuring Corosync and Pacemaker

Selanjutnya, kita harus menginstal 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 pcs daemon berjalan di kedua server.

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

Creating the Cluster

Selama instalasi, pengguna sistem yang disebut “hacluster” dibuat. Jadi kita perlu mengatur 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

Create Cluster User Password

Create Cluster User Password

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

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

Setup Authentication for PCS

Setup Authentication for PCS

Now create a cluster and populate it with some nodes (the cluster name cannot exceed 15 characters, in this example, we have used examplecluster) on Node1 server.

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

Create Cluster on Node1

Create Cluster on Node1

Sekarang aktifkan cluster saat boot dan mulai layanan.

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

Enable and Start the Cluster

Enable and Start the Cluster

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

$ sudo pcs status
OR
$ sudo crm_mon -1

Check Cluster Status

Check Cluster Status

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

Baca Juga:  3 Cara untuk seting Static IP Address di RHEL 8

Configuring Cluster Options

Opsi pertama adalah menonaktifkan STONITH (atau Tembak Node Lainnya di Kepala), implementasi pagar pada alat pacu jantung.

Komponen ini membantu melindungi data Anda dari kerusakan oleh akses bersamaan. Untuk tujuan panduan ini, kami akan menonaktifkannya karena kami belum mengkonfigurasi 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 memastikan bahwa opsi di atas, stonith dan kebijakan kuorum dinonaktifkan.

$ sudo pcs property list

View Cluster Properties

View Cluster Properties

Adding a Resource/Cluster Service

Di bagian ini, kita akan melihat bagaimana cara menambahkan sumber daya klaster. Kami akan mengonfigurasi IP mengambang yang merupakan alamat IP yang dapat dipindahkan secara instan 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 cluster ketersediaan tinggi. Perlu diingat bahwa IP mengambang bukan hanya untuk situasi failover, mereka memiliki beberapa kasus penggunaan lainnya. Kita perlu mengkonfigurasi cluster sedemikian rupa sehingga hanya anggota aktif dari cluster yang “memiliki” atau merespons IP mengambang pada waktu tertentu.

Kami 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 mulailah 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

dimana:

  • floating_ip: adalah nama layanan.
  • “ocf:heartbeat:IPaddr2”: memberitahu Pacemaker script mana yang harus digunakan, IPaddr2 dalam kasus ini, namespace yang mana di dalamnya (pacemaker) dan standar apa yang sesuai dengan ocf.
  • op monitor interval=60s”: menginstruksikan Alat Pacu Jantung untuk memeriksa kesehatan layanan ini setiap satu menit dengan menelepon tindakan monitor agen.

Kemudian tambahkan sumber daya kedua, bernama 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, keluarkan perintah berikut untuk memeriksa status sumber daya.

$ sudo pcs status resources

Check Cluster Resources

Check Cluster Resources

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

Baca Juga:  Optimize MySQL

Jika Anda mengaktifkan firewall di sistem Anda, 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 

Testing High Availability/Clustering

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.

Test Cluster Before Failure

Test Cluster Before Failure

Untuk mensimulasikan 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 harus mengakses halaman web Nginx default dari node1.example.com.

Test Cluster After Failure

Test Cluster After Failure

Sebagai alternatif, Anda dapat mensimulasikan kesalahan dengan memberi tahu layanan untuk berhenti secara langsung, tanpa menghentikan gugus pada sembarang simpul, menggunakan perintah berikut di salah satu simpul:

$ sudo crm_resource --resource http_server --force-stop 

Kemudian Anda perlu menjalankan crm_mon dalam mode interaktif (default), dalam interval monitor 2 menit, Anda harus dapat melihat pemberitahuan kluster bahwa http_server gagal dan memindahkannya ke node lain.

Agar layanan cluster Anda berjalan dengan efisien, Anda mungkin perlu menetapkan beberapa kendala. Anda dapat melihat halaman manual pcs (pcs pcs) untuk daftar semua perintah penggunaan.

Untuk informasi lebih lanjut tentang Corosync dan Alat Pacu Jantung, periksa: https://clusterlabs.org/

Dalam panduan ini, kami telah menunjukkan dasar-dasar cara menggunakan, mengkonfigurasi dan mempertahankan ketersediaan tinggi / clustering / replikasi di Ubuntu 16.04 / 18.04 dan CentOS 7. Kami mendemonstrasikan cara menambahkan layanan Nginx HTTP ke sebuah cluster.


Di tulis oleh: