Dalam tutorial ini, saya akan menunjukkan kepada Anda langkah demi langkah cara membuat Server Web Nginx Clustered Ketersediaan Tinggi dengan Pacemaker, Corosync, dan Crmsh. Kami akan membuat server web Nginx Active-Passive Cluster atau Failover-cluster menggunakan Pacemaker di Ubuntu 16.04.
Alat pacu jantung adalah perangkat lunak manajer cluster open source yang mencapai ketersediaan tinggi maksimum layanan Anda. Ini adalah manajer klaster HA tingkat lanjut dan skalabel yang dikembangkan oleh ClusterLabs sejak 2007.
The Corosync Cluster Engine adalah proyek open source yang berasal dari proyek OpenAIS pada tahun 2008 dan dirilis di bawah Lisensi BSD. Ini adalah sistem komunikasi grup dengan fitur tambahan untuk menerapkan Ketersediaan Tinggi dalam aplikasi.
Ada beberapa aplikasi yang tersedia untuk antarmuka Alat Pacu Jantung dan Crmsh adalah salah satunya. Ini adalah antarmuka baris perintah Alat Pacu Jantung untuk mengelola Tumpukan Ketersediaan Tinggi Alat Pacu Jantung. Crmsh ditulis dengan python. Kami dapat membuat, mengonfigurasi, dan memecahkan masalah tumpukan Pacemaker HA dengan alat baris perintah Crmsh.
Prasyarat
- Tiga Server Ubuntu 16.04
- web01 10.0.15.11
- web02 10.0.15.12
- web03 10.0.15.13
- Alamat IP mengambang 10.0.15.15
- Keistimewaan Root
Apa yang akan kita lakukan?
- Memetakan File Host.
- Instal dan Konfigurasi Nginx.
- Instal Alat Pacu Jantung, Corosync, dan Crmsh.
- Konfigurasikan Kunci Corosync.
- Mulai Semua Layanan.
- Membuat dan Mengonfigurasi Cluster.
- Pengujian.
Langkah 1 - Memetakan File Host
Catatan:
Jalankan langkah 1 - 3 pada ketiga server 'web01', 'web02', 'web03'.
Dalam tutorial ini, saya akan menggunakan 3 server Ubuntu 16.04 dan masing-masing memiliki nama host yang unik:'web01', 'web02' dan 'web03'. Setiap server dapat terhubung ke server lain dengan nama host server.
Untuk mencapainya, edit file '/etc/hosts' di semua server dengan vim.
vim /etc/hosts
Rekatkan konfigurasi /etc/hosts di bawah ini.
10.0.15.11 web01
10.0.15.12 web02
10.0.15.13 web03
10.0.15.15 ha-web.co
Simpan file dan keluar dari vim.
Selanjutnya, uji semua server dengan melakukan ping ke server lain melalui setiap nama host.
ping -c 3 web01
ping -c 3 web02
ping -c 3 web03
Langkah 2 - Instal dan Konfigurasi Nginx
Sekarang kita mulai membuat pengaturan Ketersediaan Tinggi dari server web Nginx dengan membuat cluster Failover dengan Pacemaker. Kita perlu menginstal Nginx di setiap node server terlebih dahulu.
Instal Nginx dengan perintah apt di bawah ini.
apt install -y nginx
Setelah penginstalan selesai, ganti halaman default nginx dengan halaman unik di setiap server dengan menjalankan perintah di bawah ini agar nanti kami dapat mengidentifikasi server mana yang mengirimkan halaman.
#Run Command on 'web01'
echo '<h1>web01 - hakase-labs</h1>' > /var/www/html/index.html
#Run Command on 'web02'
echo '<h1>web02 - hakase-labs</h1>' > /var/www/html/index.html
#Run Command on 'web03'
echo '<h1>web03 - hakase-labs</h1>' > /var/www/html/index.html
Sekarang hentikan server web.
systemctl stop nginx
Instalasi dan konfigurasi Nginx telah selesai.
Langkah 3 - Instal Alat Pacu Jantung, Corosync, dan Crmsh
Alat pacu jantung adalah aplikasi manajer cluster open source. Corosync adalah Mesin Cluster untuk Alat Pacu Jantung, dan Crmsh adalah alat berbasis python untuk mengelola cluster Alat Pacu Jantung. Semua aplikasi ini tersedia di repositori Uubuntu.
Instal Pacemaker, Corosync, dan crmsh dengan perintah apt di bawah ini.
apt install -y pacemaker corosync crmsh
Setelah instalasi, semua layanan ini berjalan secara otomatis di sistem. Hentikan mereka dengan perintah systemctl di bawah ini.
systemctl stop corosync
systemctl stop pacemaker
Tumpukan perangkat lunak yang menyediakan ketersediaan tinggi untuk Nginx telah diinstal.
Langkah 4 - Konfigurasikan Corosync
Catatan:
Jalankan langkah 4 hanya di server 'web01'.
Karena kita tidak menggunakan pcsd untuk Ubuntu, kita perlu mengkonfigurasi Corosync secara manual. Kami akan membuat kunci Corosync untuk otentikasi cluster dan membuat file konfigurasi Corosync baru di server 'web01', lalu menyalin kunci dan konfigurasi ke server lain 'web02' dan 'web03'.
Sebelum kita membuat kunci Corosync, kita perlu menginstal paket baru 'haveged'. Ini digunakan untuk mendapatkan nomor acak yang lebih baik untuk pembuatan kunci Corosync.
Instal hasged dari repositori dengan perintah apt.
apt install -y haveged
Sekarang buat kunci Corosync baru dengan perintah di bawah ini.
corosync-keygen
Ketika pembuatan kunci selesai, Anda dapat melihat kunci baru 'authkey' di direktori '/etc/corosync/'.
ls -lah /etc/corosync/
Selanjutnya, masuk ke direktori '/etc/corosync' dan buat cadangan file konfigurasi default 'corosync.conf'.
cd /etc/corosync/
mv corosync.conf corosync.conf.bekup
Kemudian buat file konfigurasi 'corosync.conf' baru dengan vim.
vim corosync.conf
Tempelkan konfigurasi di bawah ini ke dalam file tersebut.
# Totem Protocol Configuration
totem {
version: 2
cluster_name: hakase-cluster
transport: udpu
# Interface configuration for Corosync
interface {
ringnumber: 0
bindnetaddr: 10.0.15.0
broadcast: yes
mcastport: 5407
}
}
# Nodelist - Server List
nodelist {
node {
ring0_addr: web01
}
node {
ring0_addr: web02
}
node {
ring0_addr: web03
}
}
# Quorum configuration
quorum {
provider: corosync_votequorum
}
# Corosync Log configuration
logging {
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
timestamp: on
}
service {
name: pacemaker
ver: 0
}
Simpan file dan keluar dari editor.
Selanjutnya, salin kunci otentikasi dan file konfigurasi dari server 'web01' ke server 'web02' dan 'web03'.
scp /etc/corosync/* [email protected]:/etc/corosync/
scp /etc/corosync/* [email protected]:/etc/corosync/
Setelah semua selesai, masuk ke server 'web02' dan 'web03', lalu periksa file-file tersebut.
ssh [email protected]
cd /etc/corosync/
ls -lah
Konfigurasi Corosync telah selesai.
Langkah 5 - Mulai Semua Layanan Cluster
Catatan:
Jalankan langkah 5 di semua server.
Mulai tumpukan perangkat lunak klaster HA, alat pacu jantung, dan corosync, di semua server. Kemudian aktifkan untuk memulai secara otomatis saat boot.
Mulai Corosync dan tambahkan untuk memulai secara otomatis saat boot.
systemctl start corosync
systemctl enable corosync
Sekarang mulai alat pacu jantung dan aktifkan untuk memulai saat boot.
systemctl start pacemaker
update-rc.d pacemaker defaults 20 01
systemctl enable pacemaker
Semua layanan telah dimulai, periksa semua node dan pastikan status server 'Online' pada semuanya.
crm status
Atau Anda dapat memeriksa status dengan memeriksa anggota Corosync dengan perintah corosync-cmapctl di bawah ini.
corosync-cmapctl | grep members
Anda akan melihat semua Alamat IP server.
Langkah 6 - Buat dan Konfigurasikan Cluster
CATATAN:
Jalankan langkah 6 hanya di server web01
Pada langkah ini, kita akan mengonfigurasi Cluster Nginx Aktif-Pasif menggunakan alat baris perintah crmsh. Karena kami tidak menggunakan perangkat STONITH, kami ingin menonaktifkan STONITH dan mengabaikan kebijakan Kuorum di klaster kami.
Jalankan perintah crm di bawah untuk menonaktifkan 'STONITH' dan Abaikan kebijakan Kuorum.
crm configure property stonith-enabled=false
crm configure property no-quorum-policy=ignore
Sekarang periksa status STONITH dan kebijakan kuorum dengan perintah crm di bawah ini.
crm configure show
Anda akan melihat hasilnya seperti di bawah ini.
Selanjutnya, kita perlu membuat beberapa sumber daya baru untuk cluster. Alat pacu jantung mendukung jenis Resource Agents (RA) berikut.
- LSB (Berbasis Standar Linux) - Disediakan oleh distribusi Linux. mis:skrip '/etc/init.d/service'.
- OCF (Open Cluster Framework) - Kumpulan alat untuk komputasi cluster. Proyek ini adalah bagian dari Linux Foundation.
Untuk server web Nginx HA, kita perlu membuat dua sumber daya OCF:'virtual_ip' untuk IP mengambang dan 'server web' untuk layanan nginx.
Buat sumber daya 'virtual_ip' baru untuk konfigurasi IP mengambang dengan perintah crm di bawah ini.
sudo crm configure primitive virtual_ip \
ocf:heartbeat:IPaddr2 params ip="10.0.15.15" \
cidr_netmask="32" op monitor interval="10s" \
meta migration-threshold="10"
Dan untuk 'server web' nginx, buat sumber daya dengan perintah di bawah ini.
sudo crm configure primitive webserver \
ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf \
op start timeout="40s" interval="0" \
op stop timeout="60s" interval="0" \
op monitor interval="10s" timeout="60s" \
meta migration-threshold="10"
Ketika ini selesai, periksa sumber daya baru 'virtual_ip' dan 'server web' dengan perintah di bawah ini. Pastikan semua resource berstatus 'started'.
crm resource status
Terakhir, kita perlu menambahkan grup untuk konfigurasi baru layanan Failover IP. Kami ingin memigrasikan layanan 'Nginx' pada sumber daya 'server web' dengan IP mengambang pada sumber daya 'virtual_ip'.
Kami sudah membuat Floating IP dan Layanan, sekarang tambahkan sumber daya tersebut ke grup baru bernama 'hakase_balancing' dengan perintah di bawah ini. Anda dapat memilih nama grup Anda sendiri tentu saja di sini, pastikan untuk mengganti nama kemudian di mana pun digunakan.
sudo crm configure group hakase_balancing virtual_ip webserver
Grup sumber daya baru dengan nama 'hakase_balancing' telah ditentukan. Anda dapat memeriksanya dengan perintah di bawah ini.
crm resource show
Anda akan mendapatkan grup bernama hakase_balancing dengan sumber daya anggota 'virtual_ip' dan 'server web'.
Konfigurasi cluster telah selesai.
Langkah 7 - Pengujian
Menguji status node dan status cluster.
crm status
Kami memiliki 3 Node dengan status 'Online'.
Kami memiliki grup sumber daya bernama 'hakase_balancing', dan sekarang berjalan di node 'web01'.
Menguji server web Nginx dari browser web. Kunjungi alamat IP mengambang, nama server pengujian saya adalah - ha-web.co . Gunakan nama yang telah Anda pilih untuk server Anda di sini.
Semua sumber daya ada di simpul 'web01'.
Menguji Cluster Aktif-Pasif atau Failover
Hentikan cluster di server 'web01' dengan menjalankan perintah di bawah ini pada node 'web01'.
crm cluster stop
Anda akan mendapatkan hasil 'INFO:Layanan cluster dihentikan '.
Sekarang login ke node 'web02' dan periksa status cluster.
crm status
Sekarang Anda mendapatkan hasil bahwa simpul 'web01' adalah 'Offline', dan sumber daya virtual_ip dan server web dialihkan ke simpul 'web02'.
Saat Anda mengunjungi lagi IP mengambang 'ha-web.co ', Anda akan mendapatkan halaman web02.
Nginx High Availability dengan Pacemaker, Corosync, dan Crmsh di Ubuntu 16.04 telah berhasil diinstal dan diuji.