Seperti yang kita ketahui NGINX adalah server web berperingkat tinggi yang juga dapat digunakan sebagai proxy terbalik, penyeimbang beban, dan cache HTTP. Pada artikel ini, kami akan mendemonstrasikan cara mengatur server web NGINX yang sangat tersedia (HA) dengan keepalive di Linux. Keepalive bekerja pada VRRP (Virtual Router Redundancy Protocol) yang memungkinkan satu IP statis menjadi fail-over antara dua sistem Linux.
Berikut adalah detail lab saya untuk NGINX HA:
- Node 1 – 192.168.1.130 – nginx1.example.com – minimal CentOS 8 / RHEL 8
- Node 2 – 192.168.1.140 – nginx2.example.com – minimal CentOS 8 / RHEL 8
- IP Virtual (VIP) – 192.168.1.150
- sudo pengguna pkumar
- Firewall diaktifkan
- SELinux Berjalan
Mari masuk ke langkah Instalasi dan konfigurasi,
Langkah 1) Instal Server Web NGINX dari baris perintah
Paket NGINX tersedia di repositori default CentOS 8 / RHEL 8, jadi jalankan perintah dnf di bawah ini pada kedua node untuk menginstal server web nginx
$ sudo dnf install -y nginx
Untuk CentOS 7 / RHEL 7
Paket NGINX tidak tersedia di repositori default CentOS 7 / RHEL 7, jadi untuk menginstalnya terlebih dahulu kita harus mengaktifkan repositori epel. Jalankan perintah berikut pada kedua node
$ sudo yum install epel-release -y $ sudo yum install -y nginx
Untuk Ubuntu / Debian
Untuk distribusi Linux berbasis Debian, paket server web nginx tersedia di repositori paket default, jadi untuk menginstal nginx, jalankan
$ sudo apt update $ sudo apt install -y nginx
Langkah 2) Konfigurasikan file custom index.html untuk kedua node
Mari kita buat file index.html khusus untuk kedua node sehingga kita dapat dengan mudah mengidentifikasi server mana yang melayani situs web saat mengakses melalui ip virtual.
Untuk node 1, jalankan perintah echo berikut,
[[email protected] ~]$ echo "<h1>This is NGINX Web Server from Node 1</h1>" | sudo tee /usr/share/nginx/html/index.html
Untuk simpul 2, jalankan
[[email protected] ~]$ echo "<h1>This is NGINX Web Server from Node 2</h1>" | sudo tee /usr/share/nginx/html/index.html
Langkah 3) Izinkan port NGINX di firewall dan mulai layanannya
Jika firewall diaktifkan dan berjalan di kedua node, izinkan port 80 dengan menjalankan perintah berikut,
Untuk Sistem CentOS / RHEL
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd –reload
Untuk Sistem Ubuntu / Debian
$ sudo ufw allow 'Nginx HTTP'
Mulai dan aktifkan layanan nginx dengan menjalankan perintah perintah di bawah pada kedua node,
$ sudo systemctl start nginx $ sudo systemctl enable nginx
Uji server Web NGINX dari kedua node dengan menjalankan perintah curl berikut dari luar,
$ curl http://192.168.1.130 <h1>This is NGINX Web Server from Node 1</h1> $ curl http://192.168.1.140 <h1>This is NGINX Web Server from Node 2</h1>
Sempurna, output perintah di atas mengonfirmasi bahwa nginx sedang berjalan dan dapat diakses dari luar dengan alamat ip sistem.
Langkah 4) Instal dan Konfigurasi Keepalive
Untuk sistem CentOS / RHEL, paket keepalive dan dependensinya tersedia di repositori paket default, jadi pemasangannya mudah, jalankan saja perintah di bawah ini pada kedua node.
$ sudo dnf install -y keepalived // CentOS 8/ RHEL 8 $ sudo yum install -y keepalived // CentOS 7 / RHEL 7
Untuk Sistem Ubuntu / Debian,
$ apt install -y keepalived
Setelah keepalived terinstal, konfigurasikan dengan mengedit file konfigurasinya ‘/etc/keepalived/keepalived.conf’. Kami akan menyimpan node 1 sebagai node master dan node 2 sebagai node cadangan.
Ambil cadangan file konfigurasi,
[[email protected] ~]$ sudo cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf-org
Ganti konten keepalived.conf dengan di bawah ini:
[[email protected] ~]$ echo -n | sudo tee /etc/keepalived/keepalived.conf [[email protected] ~]$ sudo vi /etc/keepalived/keepalived.conf
Rekatkan konten berikut
global_defs { # Keepalived process identifier router_id nginx } # Script to check whether Nginx is running or not vrrp_script check_nginx { script "/bin/check_nginx.sh" interval 2 weight 50 } # Virtual interface - The priority specifies the order in which the assigned interface to take over in a failover vrrp_instance VI_01 { state MASTER interface enp0s3 virtual_router_id 151 priority 110 # The virtual ip address shared between the two NGINX Web Server which will float virtual_ipaddress { 192.168.1.150/24 } track_script { check_nginx } authentication { auth_type AH auth_pass secret } }
Sekarang buat skrip dengan konten berikut yang akan memeriksa apakah layanan nginx berjalan atau tidak. Keepalived akan selalu memeriksa output dari script check_nginx.sh, jika ditemukan bahwa layanan nginx berhenti atau tidak merespon maka akan memindahkan alamat ip virtual pada node cadangan.
[[email protected] ~]$ sudo vi /bin/check_nginx.sh #!/bin/sh if [ -z "`pidof nginx`" ]; then exit 1 fi
simpan &tutup file dan atur izin yang diperlukan dengan perintah chmod,
[[email protected] ~]$ sudo chmod 755 /bin/check_nginx.sh
Sekarang salin file keepalived.conf dan check_nginx.sh dari node 1 ke node 2 menggunakan perintah scp berikut.
[[email protected] ~]$ scp /etc/keepalived/keepalived.conf [email protected]:/etc/keepalived/ [[email protected] ~]$ scp /bin/check_nginx.sh [email protected]0:/bin/
Setelah file disalin, login ke Node 2 dan buat beberapa perubahan pada file keepalived.conf. Ubah Status dari MASTER ke CADANGAN dan turunkan prioritas dengan menetapkannya sebagai 100. Setelah melakukan perubahan, keepalived.conf pada Node 2 akan terlihat seperti di bawah ini,
Jika firewall OS sedang berjalan maka izinkan VRRP dengan menjalankan perintah berikut,
Catatan – Jalankan perintah ini pada kedua node
Untuk Sistem CentOS / RHEL
$ sudo firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent $ sudo firewall-cmd --reload
Untuk Sistem Ubuntu / Debian
Izinkan VRRP dengan menjalankan yang berikut, dari master node (Node 1), jalankan
$ sudo ufw allow to 224.0.0.18 comment 'VRRP Broadcast' $ sudo ufw allow from 192.168.1.140 comment 'VRRP Router'
Dari Node Cadangan / Budak (Node 2)
$ sudo ufw allow to 224.0.0.18 comment 'VRRP Broadcast' $ sudo ufw allow from 192.168.1.130 comment 'VRRP Router'
Sekarang akhirnya mulai layanan keepalive dengan menjalankan di bawah perintah systemctl dari kedua node,
$ sudo systemctl start keepalived $ sudo systemctl enable keepalived
Verifikasi layanan keepalived dengan menjalankan di bawah ini:
$ sudo systemctl status keepalived
Sempurna, sekarang verifikasi status VIP (alamat ip virtual) pada node master, dalam kasus kami VIP adalah 192.168.1.130
$ ip add show
Output di atas mengonfirmasi bahwa VIP dikonfigurasi pada master node pada antarmuka enp0s3-nya. Jadi, mari lakukan pengujian keepalived dan nginx di langkah selanjutnya.
Langkah 5) Keepalive dan Pengujian NGINX
Untuk melakukan pengujian, coba akses server web nginx dengan IP virtual (192.168.1.150), saat ini akan muncul halaman nginx node 1.
Buka browser wen dan ketik 'http://192.168.1.150' dan tekan enter,
Sekarang coba hentikan layanan NGINX pada node 1 dan lihat apakah IP virtual dialihkan dari Node 1 ke Node 2 dan kemudian coba akses halaman web nginx dengan VIP (192.168.1.150) dan kali ini seharusnya menunjukkan kepada kita halaman nginx dari node 2 .
[[email protected] ~]$ sudo systemctl stop nginx [[email protected] ~]$ ip add show
Login ke node 2 dan jalankan perintah ip untuk melihat verifikasi alamat IP virtual,
[[email protected] ~]$ ip add show
Sekarang, mari kita coba mengakses halaman web menggunakan ip virtual,
Hebat, di atas mengonfirmasi bahwa kami telah berhasil menyiapkan server Web NGINX yang sangat tersedia dengan keepalive. Itu saja dari artikel ini, silakan bagikan umpan balik, komentar, dan saran Anda.