Konfigurasikan HAProxy yang Sangat Tersedia dengan Keepalive di Ubuntu 20.04

Dalam panduan ini, kita akan mempelajari cara mengonfigurasi HAProxy yang sangat tersedia dengan Keepalive di Ubuntu 20.04. Keepalive dapat bekerja dengan HAProxy untuk menyediakan service failover ke rute cadangan jika rute tertentu tidak tersedia. Ini memastikan lingkungan ketersediaan tinggi yang lebih kuat dan skalabel. 

Sementara Keepalive menggunakan  Linux virtual server (LVS) untuk melakukan load balancing dan tugas failover pada router aktif dan pasif, HAProxy melakukan load balancing dan service ketersediaan tinggi untuk aplikasi TCP dan HTTP.

Keepalive menggunakan Protokol Redundansi Router Virtual untuk mengirim iklan berkala antara master (active) dan cadangan ( passive) router LVS (yang dalam kasus kami adalah server HAProxy karena merupakan aplikasi web penyeimbang beban) untuk menentukan status satu sama lain. Jika server master gagal mengiklankan dirinya sendiri dalam jangka waktu yang telah ditentukan, Keepalive memulai failover dan server cadangan menjadi master.

Semua server virtual diberi Virtual IP, juga dikenal sebagai floating IP. Ini adalah IP/alamat yang dapat dirutekan secara publik. Itu ditugaskan secara dinamis ke server aktif pada waktu tertentu.

Konfigurasikan HAProxy yang Sangat Tersedia dengan Keepalive di Ubuntu 20.04

Pengaturan ini mengharuskan Anda telah memiliki dan menjalankan server HAProxy. Kami telah membahas pemasangan dan penyiapan penyeimbang beban HAProxy pada berbagai sistem dalam panduan kami sebelumnya;

Instal dan Atur HAProxy di Ubuntu 20.04

Instal dan Setup HAProxy di CentOS 8

Setup HAProxy Load Balancer di Fedora 30/Fedora 29

Konfigurasikan HAProxy Load Balancer dengan SSL di Ubuntu 18.04/Debian 10/9

Dalam tutorial ini, kita akan menggunakan dua server HAProxy dengan Keepalive untuk ketersediaan tinggi. Di bawah ini adalah arsitektur penerapan kami.

Dengan asumsi bahwa Anda sudah memiliki pengaturan HAProxy, lanjutkan dengan instalasi dan konfigurasi Keepalive di Ubuntu 20.04.

Instal dan Konfigurasi Keepalive di Ubuntu 20.04

Instal Keepalive di Server HAProxy

Di lingkungan demo kami, kami menjalankan server HAProxy di Ubuntu 20.04. Oleh karena itu, dengan asumsi cache paket sistem Anda mutakhir, jalankan perintah di bawah ini instal Keepalive di Ubuntu 20.04

[email protected]:~# apt install keepalived

Demikian pula, instal Keepalive di server HAProxy kedua.

[email protected]:~# apt install keepalived

Konfigurasikan penerusan IP dan pengikatan non-lokal

Untuk mengaktifkan service Keepalive untuk meneruskan paket jaringan ke server backend, Anda harus mengaktifkan penerusan IP. Jalankan perintah ini di kedua server HAProxy;

sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf

Demikian pula, Anda perlu mengaktifkan HAProxy dan Keepalive untuk mengikat ke alamat IP non-lokal, yaitu untuk mengikat ke alamat IP failover (IP Terapung).

echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf

Reload pengaturan sysctl;

sysctl -p

Konfigurasi Keepalive

File konfigurasi default untuk Keepalive harus /etc/keepalived/keepalived.conf. Namun, konfigurasi ini tidak dibuat secara default. Buat konfigurasi dengan konten di bawah ini;

vim /etc/keepalived/keepalived.conf

Keepalived Configuration for Master Node (lb01)

# Global Settings for notifications global_defs { notification_email { [email protected] # Email address for notifications } notification_email_from [email protected]	# from address for the notifications smtp_server 127.0.0.1 			# SMTP server address smtp_connect_timeout 15 } # Define the script used to check if haproxy is still working vrrp_script chk_haproxy { script "/usr/bin/killall -0 haproxy" interval 2 weight 2 } # Configuration for Virtual Interface vrrp_instance LB_VIP { interface enp0s8 state MASTER # set to BACKUP on the peer machine priority 101 # set to 99 on the peer machine virtual_router_id 51 smtp_alert # Enable Notifications Via Email authentication { auth_type AH auth_pass [email protected]	# Password for accessing vrrpd. Same on all devices } unicast_src_ip 192.168.57.7 # Private IP address of master unicast_peer { 192.168.58.4		# Private IP address of the backup haproxy } # virtual ip address shared between the two loadbalancers virtual_ipaddress { 192.168.100.200 } # Use the Defined Script to Check whether to initiate a fail over track_script { chk_haproxy } }

Keepalived Configuration for Backup Node (lb02)

global_defs { notification_email { [email protected] } notification_email_from [email protected] smtp_server 127.0.0.1 smtp_connect_timeout 15 } vrrp_script chk_haproxy { script "/usr/bin/killall -0 haproxy" interval 2 weight 2 } vrrp_instance LB_VIP { interface enp0s8 state BACKUP priority 100 virtual_router_id 51 smtp_alert authentication { auth_type AH auth_pass [email protected] } unicast_src_ip 192.168.58.4 # Private IP address of the backup haproxy unicast_peer { 192.168.57.7	# Private IP address of the master haproxy } virtual_ipaddress { 192.168.100.200 } track_script { chk_haproxy } }

Perhatikan bahwa bagian notifikasi bersifat opsional. Namun Anda dapat mengikuti tautan di bawah ini untuk menginstal dan mengonfigurasi Postfix untuk menggunakan SMTP Gmail sebagai relai;

Konfigurasikan Postfix untuk Menggunakan SMTP Gmail di Ubuntu 20.04

Baca lebih lanjut tentang parameter konfigurasi yang digunakan di atas pada halaman manual Keepalive dan sinopsis Konfigurasi Keepalive.

Menjalankan Keepalive di Ubuntu 20.04

Anda sekarang dapat memulai dan mengaktifkan Keepalive untuk berjalan pada boot sistem di semua node;

systemctl enable --now keepalived

Periksa status di Master Node;

systemctl status keepalived
● keepalived.service - Keepalive Daemon (LVS and VRRP) Loaded: loaded (/lib/systemd/system/keepalived.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-06-06 18:24:20 UTC; 6s ago Main PID: 7097 (keepalived) Tasks: 2 (limit: 2282) Memory: 2.1M CGroup: /system.slice/keepalived.service ├─7097 /usr/sbin/keepalived --dont-fork └─7107 /usr/sbin/keepalived --dont-fork Jun 06 18:24:20 lb01.kifarunix-demo.com Keepalived_vrrp[7107]: (LB_VIP) Initial state master is incompatible with AH authentication - clearing Jun 06 18:24:20 lb01.kifarunix-demo.com Keepalived_vrrp[7107]: Registering gratuitous ARP shared channel Jun 06 18:24:20 lb01.kifarunix-demo.com Keepalived_vrrp[7107]: (LB_VIP) Entering BACKUP STATE (init) Jun 06 18:24:20 lb01.kifarunix-demo.com Keepalived_vrrp[7107]: Remote SMTP server [127.0.0.1]:25 connected. Jun 06 18:24:20 lb01.kifarunix-demo.com Keepalived_vrrp[7107]: VRRP_Script(chk_haproxy) succeeded Jun 06 18:24:20 lb01.kifarunix-demo.com Keepalived_vrrp[7107]: (LB_VIP) Changing effective priority from 100 to 102 Jun 06 18:24:20 lb01.kifarunix-demo.com Keepalived_vrrp[7107]: SMTP alert successfully sent. Jun 06 18:24:23 lb01.kifarunix-demo.com Keepalived_vrrp[7107]: (LB_VIP) Entering MASTER STATE Jun 06 18:24:23 lb01.kifarunix-demo.com Keepalived_vrrp[7107]: Remote SMTP server [127.0.0.1]:25 connected. Jun 06 18:24:23 lb01.kifarunix-demo.com Keepalived_vrrp[71
07]: SMTP alert successfully sent

Anda juga dapat memeriksa status pada node budak.

Periksa penetapan alamat IP;

Di simpul utama;

ip --brief add
lo UNKNOWN 127.0.0.1/8 ::1/128 enp0s3 UP 10.0.2.15/24 fe80::a00:27ff:fe9d:888e/64 enp0s8 UP 192.168.100.81/24 192.168.100.200/32 fe80::a00:27ff:feba:9e8c/64 enp0s9 UP 192.168.57.7/24 fe80::a00:27ff:fe31:b7db/64

Lihat baris yang disorot, itu diberi IP mengambang, 192.168.100.200/32.

Pada budak;

lo UNKNOWN 127.0.0.1/8 ::1/128 enp0s3 UP 10.0.2.15/24 fe80::a00:27ff:fefe:fc06/64 enp0s8 UP 192.168.100.80/24 fe80::a00:27ff:fe75:9eae/64 enp0s9 UP 192.168.58.4/24 fe80::a00:27ff:fef4:41/64

Sekarang, mari kita hapus interface enp0s8, pada master node. Be sure to login from the console before you can take the interface down.

ip link set enp0s8 down

Periksa status Keepalive di node cadangan;

systemctl status keepalived
● keepalived.service - Keepalive Daemon (LVS and VRRP) Loaded: loaded (/lib/systemd/system/keepalived.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-06-06 19:24:27 UTC; 26min ago Main PID: 9948 (keepalived) Tasks: 2 (limit: 2282) Memory: 2.3M CGroup: /system.slice/keepalived.service ├─9948 /usr/sbin/keepalived --dont-fork └─9949 /usr/sbin/keepalived --dont-fork Jun 06 19:24:27 lb02.kifarunix-demo.com Keepalived_vrrp[9949]: SECURITY VIOLATION - scripts are being executed but script_security not enabled. Jun 06 19:24:27 lb02.kifarunix-demo.com Keepalived_vrrp[9949]: Registering gratuitous ARP shared channel Jun 06 19:24:27 lb02.kifarunix-demo.com Keepalived_vrrp[9949]: (LB_VIP) Entering BACKUP STATE (init) Jun 06 19:24:27 lb02.kifarunix-demo.com Keepalived_vrrp[9949]: Remote SMTP server [127.0.0.1]:25 connected. Jun 06 19:24:27 lb02.kifarunix-demo.com Keepalived_vrrp[9949]: VRRP_Script(chk_haproxy) succeeded Jun 06 19:24:27 lb02.kifarunix-demo.com Keepalived_vrrp[9949]: (LB_VIP) Changing effective priority from 99 to 101 Jun 06 19:24:27 lb02.kifarunix-demo.com Keepalived_vrrp[9949]: SMTP alert successfully sent. Jun 06 19:50:39 lb02.kifarunix-demo.com Keepalived_vrrp[9949]: (LB_VIP) Entering MASTER STATE Jun 06 19:50:39 lb02.kifarunix-demo.com Keepalived_vrrp[9949]: Remote SMTP server [127.0.0.1]:25 connected. Jun 06 19:50:40 lb02.kifarunix-demo.com Keepalived_vrrp[9949]: SMTP alert successfully sent.

Konfigurasikan HAProxy dengan Keepalive Virtual IP

Satu-satunya perubahan yang kita akan membuat pada kami HAProxy konfigurasi fil e adalah untuk menyesuaikan frontend mengikat IP dan statistik alamat IP untuk VIP atau mengambang IP, yang dalam kasus kita adalah 192.168.100.200

vim /etc/haproxy/haproxy.cfg
... frontend kifarunixlb bind 192.168.100.200:443 ssl crt /etc/ssl/certs/haproxy.pem default_backend webapps option forwardfor... listen stats bind 192.168.100.200:8443 ssl crt /etc/ssl/certs/haproxy.pem stats enable...

Simpan dan keluar dari file konfigurasi.

Mulai ulang HAProxy.

systemctl restart haproxy

Anda sekarang harus dapat mengakses aplikasi web Anda bahkan ketika salah satu server HAProxy turun melalui IP mengambang. Contoh tangkapan layar untuk pengaturan kami ada di bawah;

Itu menandai akhir dari panduan kami tentang cara mengonfigurasi HAProxy yang sangat tersedia dengan Keepalive di Ubuntu 20.04

Bacaan lebih lanjut

Dokumentasi Keepalive

Panduan Pengguna Keepalive

tutorial lainnya

Cara Memasang dan Mengonfigurasi Pound sebagai penyeimbang Beban HTTP Apache di Ubuntu 16.04