GNU/Linux >> Belajar Linux >  >> Linux

Cara Mengatur NGINX yang Sangat Tersedia dengan KeepAlived di Linux

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.


Linux
  1. Cara Menginstal Server Web Nginx di Linux

  2. Cara Mengatur Hak Istimewa Sudo untuk Pengguna di Linux

  3. Cara Instal ModSecurity dengan Nginx di Rocky Linux 8

  1. Cara Mengatur Login SSH Tanpa Kata Sandi di Linux dengan Kunci

  2. Cara mengatur aplikasi nodejs sederhana dengan nginx dan pm2 di server ubuntu

  3. Cara Menginstal dan Mengatur Stack MERN dengan Nginx di Ubuntu 20.04

  1. Cara Mengatur NGINX yang Sangat Tersedia dengan KeepAlived di CentOS 8

  2. Cara Mengatur Pengakhiran SSL Varnish dengan server Web Nginx di Rocky Linux 8

  3. Cara Install phpMyAdmin dengan Nginx di Linux Mint 19 / Linux Mint 18