Ketersediaan Tinggi (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 mengimplementasikan HA adalah pengelompokan.
Dalam komputasi, sebuah cluster terdiri dari dua atau lebih komputer (umumnya dikenal sebagai simpul atau anggota) yang bekerja sama untuk melakukan suatu tugas. Dalam pengaturan seperti itu, hanya satu node yang menyediakan layanan dengan node sekunder mengambil alih jika gagal.
Cluster terbagi menjadi empat jenis utama:
Solusi lain yang banyak digunakan untuk menyediakan HA adalah replikasi (khususnya replikasi data). Replikasi adalah proses di mana satu atau lebih database (sekunder) dapat disinkronkan dengan satu database utama (atau master).
Untuk menyiapkan sebuah cluster, kita membutuhkan setidaknya dua server. Untuk tujuan panduan ini, kami akan menggunakan dua server Linux:
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.
Agar kedua server dapat berkomunikasi satu sama lain, kita perlu mengonfigurasi pengaturan DNS lokal yang sesuai di /etc/hosts file di kedua server.
Buka dan edit file menggunakan editor baris perintah favorit.
$ 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.
Sekarang instal server web Nginx menggunakan perintah berikut.
$ sudo apt install nginx [Di Ubuntu] $ sudo yum install epel-release && sudo yum install nginx [Pada CentOS 7]
Setelah instalasi selesai, mulai layanan Nginx untuk saat ini dan aktifkan untuk memulai otomatis saat boot, lalu periksa apakah sudah aktif dan berjalan menggunakan perintah systemctl.
Di Ubuntu, layanan harus dimulai secara otomatis segera setelah pra-konfigurasi paket selesai, Anda cukup mengaktifkannya.
$ sudo systemctl aktifkan nginx. $ sudo systemctl mulai 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 "Ini adalah halaman default untuk node1.example.com" | sudo tee /usr/share/nginx/html/index.html #VPS1. $ echo "Ini adalah halaman default untuk node2.example.com" | sudo tee /usr/share/nginx/html/index.html #VPS2.
Selanjutnya, kita harus menginstal Alat pacu jantung, Korosinkron, dan buah pada setiap simpul sebagai berikut.
$ sudo apt install corosync alat pacu jantung pcs #Ubuntu $ sudo yum install corosync alat pacu jantung pcs #CentOS
Setelah instalasi selesai, pastikan bahwa buah daemon berjalan di kedua server.
$ sudo systemctl aktifkan pcsd. $ sudo systemctl start pcsd. $ sudo systemctl status pcsd.
Selama instalasi, pengguna sistem yang disebut "hacluster" dibuat. Jadi kita perlu mengatur otentikasi yang diperlukan untuk buah. Mari kita mulai dengan membuat kata sandi baru untuk "hacluster" pengguna, kita perlu menggunakan kata sandi yang sama di semua server:
$ sudo passwd hacluster.
Selanjutnya, di salah satu server (Node1), jalankan perintah berikut untuk mengatur otentikasi yang diperlukan untuk buah.
$ sudo pcs cluster auth node1.example.com node2.example.com -u hacluster -p password_here --force.
Sekarang buat cluster dan isi dengan beberapa node (nama cluster tidak boleh melebihi 15 karakter, dalam contoh ini, kami telah menggunakan contohcluster) di server Node1.
$ sudo pcs penyiapan cluster --name examplecluster node1.example.com node2.example.com
Sekarang aktifkan cluster saat boot dan mulai layanan.
$ sudo pcs cluster aktifkan --all. $ sudo pcs cluster start --all.
Sekarang periksa apakah layanan cluster aktif dan berjalan menggunakan perintah berikut.
$ status buah sudo. ATAU. $ sudo crm_mon -1.
Dari output perintah di atas, Anda dapat melihat bahwa ada peringatan tentang no STONITH perangkat belum STONITH masih diaktifkan di cluster. Selain itu, tidak ada sumber daya/layanan cluster yang dikonfigurasi.
Opsi pertama adalah menonaktifkan STONITH (atau Tembak Node Lain Di Kepala), pelaksanaan pagar pada Alat pacu jantung.
Komponen ini membantu melindungi data Anda agar tidak rusak oleh akses bersamaan. Untuk tujuan panduan ini, kami akan menonaktifkannya karena kami belum mengonfigurasi perangkat apa pun.
Mematikan STONITH, jalankan perintah berikut:
$ sudo pcs property set stonith-enabled=false.
Selanjutnya, abaikan juga Jumlah anggota minimum kebijakan 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 daftar properti.
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, 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. Ingatlah bahwa IP mengambang tidak hanya untuk situasi failover, mereka memiliki beberapa kasus penggunaan lainnya. Kita perlu mengonfigurasi cluster sedemikian rupa sehingga hanya anggota aktif cluster yang "memiliki" atau merespons IP mengambang pada waktu tertentu.
Kami akan menambahkan dua sumber daya cluster: 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: detak jantung: IPaddr2 ip=192.168.10.20 cidr_netmask=24 interval monitor op=60 detik.
di mana:
Kemudian tambahkan sumber daya kedua, bernama http_server. Di sini, agen sumber daya layanan adalah ocf: detak jantung: nginx.
$ sudo pcs resource buat http_server ocf: detak jantung: 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 sumber daya status.
Melihat output dari perintah, dua sumber daya ditambahkan: “mengambang_ip” dan “http_server” telah terdaftar. Layanan floating_ip tidak aktif karena node utama sedang beroperasi.
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 tepat 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
Langkah terakhir dan penting adalah menguji apakah penyiapan ketersediaan tinggi kami berfungsi. Buka browser web dan navigasikan ke alamat 192.168.10.20 Anda akan melihat halaman Nginx default dari simpul2.contoh.com seperti yang ditunjukkan pada tangkapan layar.
Untuk mensimulasikan kegagalan, jalankan perintah berikut untuk menghentikan cluster di simpul2.contoh.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.
Atau, Anda dapat mensimulasikan kesalahan dengan memberi tahu layanan untuk berhenti secara langsung, tanpa menghentikan kluster di node mana pun, menggunakan perintah berikut di salah satu node:
$ sudo crm_resource --resource http_server --force-stop
Maka Anda harus lari cm_mon dalam mode interaktif (default), dalam interval monitor 2 menit, Anda harus dapat melihat pemberitahuan cluster bahwa http_server gagal dan pindahkan ke node lain.
Agar layanan cluster Anda berjalan secara efisien, Anda mungkin perlu menetapkan beberapa batasan. Kamu dapat melihat buah halaman manual (man pcs) untuk daftar semua perintah penggunaan.
Untuk informasi lebih lanjut tentang Corosync dan Alat Pacu Jantung, lihat: https://clusterlabs.org/
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 ini.