GNU/Linux >> Belajar Linux >  >> Cent OS

Cara Mengatur NGINX yang Sangat Tersedia dengan KeepAlived di CentOS 8

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.


Cent OS
  1. Cara Memasang dan Mengatur Varnish Cache 6 dengan Nginx di CentOS 8

  2. Cara Instal phpMyAdmin dengan Nginx di CentOS 7 / RHEL 7

  3. Cara Setup Pure-FTPD dengan MySQL di CentOS &RedHat

  1. Cara Menginstal WordPress dengan Nginx di CentOS 7

  2. Cara Setup Server FTP dengan VSFTPD di CentOS 7

  3. Cara Instal phpMyAdmin dengan Nginx di CentOS 7

  1. Cara Setup Server FTP dengan VSFTPD di CentOS 8

  2. Cara Mengatur NGINX yang Sangat Tersedia dengan KeepAlived di Linux

  3. Cara Menginstal SuiteCRM dengan Nginx di CentOS 7