Nginx adalah gratis, sumber terbuka dan salah satu server web paling populer di seluruh dunia. Itu juga dapat digunakan sebagai proxy terbalik, penyeimbang beban, dan cache HTTP. Ketersediaan tinggi memungkinkan aplikasi untuk merutekan ulang pekerjaan ke sistem lain jika terjadi kegagalan. Ada berbagai teknologi yang tersedia untuk menyiapkan sistem yang sangat tersedia.
Keepalive adalah daemon sistem yang memantau layanan atau sistem secara terus-menerus dan mencapai ketersediaan tinggi jika terjadi kegagalan. Jika satu node mati maka node kedua melayani sumber daya.
Dalam tutorial ini, saya akan menunjukkan cara menyiapkan server web Nginx yang sangat tersedia dengan KeepAlived di CentOS 8.
Prasyarat
- Dua server yang menjalankan CentOS 8, satu untuk node master dan satu untuk node cadangan.
- Kata sandi root dikonfigurasi di server Anda.
Instal Nginx di Kedua Node
Pertama, Anda perlu menginstal paket Nginx di kedua node. Anda dapat menginstalnya menggunakan perintah berikut:
dnf install nginx -y
Setelah Nginx terinstal di kedua node, mulai layanan Nginx dan aktifkan untuk memulai saat reboot sistem:
systemctl start nginx
systemctl enable nginx
Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.
Buat File di Kedua Node
Selanjutnya, Anda perlu membuat file index.html khusus di kedua node untuk mengidentifikasi setiap node.
Pada node pertama, buat file index.html dengan perintah berikut:
echo "<h1>This is My First NGINX Web Server Node</h1>" | tee /usr/share/nginx/html/index.html
Pada node kedua, buat file index.html dengan perintah berikut:
echo "<h1>This is My Second NGINX Web Server Node</h1>" | tee /usr/share/nginx/html/index.html
Simpan dan tutup file setelah Anda selesai.
Instal dan Konfigurasi Keepalive
Selanjutnya, Anda perlu menginstal Keepalive di kedua node. Secara default, paket Keepalive tersedia di repositori default CentOS 8. Anda dapat menginstalnya dengan menjalankan perintah berikut:
dnf install keepalived -y
Setelah paket keepalive diinstal pada kedua node, Anda perlu mengedit file konfigurasi default keepalive di kedua node.
Pada node pertama, edit file keepalived.conf:
nano /etc/keepalived/keepalived.conf
Hapus konten default dan tambahkan 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 eth0 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.10/24 } track_script { check_nginx } authentication { auth_type AH auth_pass secret } }
Simpan dan tutup file setelah Anda selesai.
Pada node kedua, edit file keepalived.conf:
nano /etc/keepalived/keepalived.conf
Hapus konten default dan tambahkan 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 BACKUP interface eth0 virtual_router_id 151 priority 100 # The virtual ip address shared between the two NGINX Web Server which will float virtual_ipaddress { 192.168.1.10/24 } track_script { check_nginx } authentication { auth_type AH auth_pass secret } }
Simpan dan tutup file kemudian Anda perlu membuat skrip untuk memeriksa apakah layanan Nginx berjalan atau tidak. Anda dapat membuatnya menggunakan perintah berikut:
Catatan :Baru saja mengganti MASTER dengan CADANGAN dan 110 dengan 100 pada file konfigurasi di atas.
nano /bin/check_nginx.sh
Tambahkan baris berikut:
#!/bin/sh if [ -z "`pidof nginx`" ]; then exit 1 fi
Simpan dan tutup file kemudian atur izin yang tepat dengan perintah berikut:
chmod 755 /bin/check_nginx.sh
Terakhir, mulai layanan keepalive dan aktifkan untuk memulai pada sistem reboot menggunakan perintah berikut:
systemctl start keepalived
systemctl enable keepalived
Anda juga dapat memeriksa status layanan keepalive menggunakan perintah berikut:
systemctl status keepalived
Anda akan mendapatkan output berikut:
? keepalived.service - LVS and VRRP High Availability Monitor Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2021-04-08 04:24:22 EDT; 5s ago Process: 3141 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS) Main PID: 3142 (keepalived) Tasks: 2 (limit: 12524) Memory: 2.1M CGroup: /system.slice/keepalived.service ??3142 /usr/sbin/keepalived -D ??3143 /usr/sbin/keepalived -D Apr 08 04:24:22 node1 Keepalived_vrrp[3143]: (VI_01) Changing effective priority from 110 to 160 Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) Receive advertisement timeout Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) Entering MASTER STATE Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) setting VIPs. Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Sending gratuitous ARP on eth0 for 192.168.1.10 Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) Sending/queueing gratuitous ARPs on eth0 for 192.168.1.10 Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Sending gratuitous ARP on eth0 for 192.168.1.10 Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Sending gratuitous ARP on eth0 for 192.168.1.10 Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Sending gratuitous ARP on eth0 for 192.168.1.10 Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Sending gratuitous ARP on eth0 for 192.168.1.10
Anda juga dapat memverifikasi status alamat ip virtual pada node Master menggunakan perintah berikut:
ip add show
Anda akan melihat alamat IP virtual 192.168.1.10 pada output berikut:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:00:2d:3a:20:9b brd ff:ff:ff:ff:ff:ff inet 45.58.32.155/24 brd 45.58.32.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet 192.168.1.10/24 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::200:2dff:fe3a:209b/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:00:0a:3a:20:9b brd ff:ff:ff:ff:ff:ff inet6 fe80::200:aff:fe3a:209b/64 scope link valid_lft forever preferred_lft forever
Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.
Konfigurasikan Firewall di Kedua Node
Selanjutnya, Anda harus mengizinkan port 80 dan mengizinkan VRRP di kedua node. Anda dapat melakukannya dengan menggunakan perintah berikut:
firewall-cmd --permanent --add-service=http
firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
Selanjutnya, muat ulang firewalld untuk menerapkan perubahan:
firewall-cmd –reload
Verifikasi Keepalive
Pada titik ini, Nginx dan Keepalive telah diinstal dan dikonfigurasi. Saatnya menguji apakah ketersediaan tinggi Nginx berfungsi atau tidak.
Buka browser web Anda dan akses URL http://your-virtual-ip . Anda akan melihat halaman berikut:
Sekarang, hentikan layanan Nginx pada node Master dan uji apakah IP virtual dialihkan dari Node 1 ke Node 2.
Pada node Master, hentikan layanan Nginx menggunakan perintah berikut:
systemctl stop nginx
Selanjutnya, login ke Node2 dan verifikasi IP virtual menggunakan perintah berikut:
ip add show
Anda akan melihat IP Virtual Anda di output berikut:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:00:2d:3a:26:37 brd ff:ff:ff:ff:ff:ff inet 45.58.38.55/24 brd 45.58.38.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet 192.168.1.10/24 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::200:2dff:fe3a:2637/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:00:0a:3a:26:37 brd ff:ff:ff:ff:ff:ff inet6 fe80::200:aff:fe3a:2637/64 scope link valid_lft forever preferred_lft forever
Sekarang, akses server web Nginx Anda menggunakan URL http://your-virtual-ip . Anda akan melihat halaman Node2:
Kesimpulan
Selamat! Anda telah berhasil menyiapkan server Nginx yang sangat tersedia dengan Keepalive. Saya harap Anda sekarang memiliki pengetahuan yang cukup untuk menyiapkan server Nginx yang sangat tersedia di lingkungan produksi.