HAProxy adalah singkatan dari High Availability Proxy. Ditulis dalam C, ini adalah TCP/HTTP Load Balancer dan solusi proxy gratis dan open-source untuk aplikasi berbasis TCP dan HTTP. HAProxy digunakan untuk meningkatkan kinerja lingkungan server dengan mendistribusikan beban kerja di beberapa server.
HAProxy memungkinkan aplikasi untuk memulai ulang secara otomatis atau mengalihkan pekerjaan ke server lain jika terjadi kegagalan. Penyeimbang beban yang kuat, berkinerja tinggi, andal, dan aman ini adalah yang paling banyak digunakan dan dirancang khusus untuk situs web dengan lalu lintas sangat tinggi.
Dalam tutorial ini, kami akan menunjukkan cara menyiapkan penyeimbang beban ketersediaan tinggi dengan HAProxy di CentOS 8.
Prasyarat
- Tiga VPS CentOS 8 baru di Platform Cloud Atlantic.Net
- Kata sandi root yang dikonfigurasi pada setiap VPS
Untuk tutorial ini, kita akan menggunakan pengaturan berikut:
Server Proksi HA: – nama host :haproxy IP:192.168.0.10
Server Web 1:- nama host :web1 IP:192.168.0.11
Server Web 2:- nama host :web2 IP:192.168.0.12
Langkah 1 – Buat Server Cloud Atlantic.Net
Pertama, masuk ke Server Cloud Atlantic.Net Anda. Buat server baru, pilih CentOS 8 sebagai sistem operasi dengan setidaknya 1GB RAM. Hubungkan ke Server Cloud Anda melalui SSH dan masuk menggunakan kredensial yang disorot di bagian atas halaman.
Setelah Anda masuk ke server CentOS 8 Anda, jalankan perintah berikut untuk memperbarui sistem dasar Anda dengan paket terbaru yang tersedia.
dnf update -y
Langkah 2 – Instal dan Konfigurasi Nginx
Catatan:Selesaikan langkah ini di WebServer 1 dan WebServer2
Pertama, Anda perlu menginstal server web Nginx pada instance web1 dan web2.
Anda dapat menginstal Nginx dengan menjalankan perintah berikut:
dnf install nginx -y
Setelah Nginx diinstal, mulai layanan Nginx dan aktifkan untuk memulai saat boot pada kedua instance:
systemctl start nginx systemctl enable nginx
Selanjutnya, ubah index.html file pada setiap instance.
Ubah index.html file di web1 contoh dengan perintah berikut:
echo "This is My First Nginx Web Server" > /usr/share/nginx/html/index.html
Ubah index.html file di web2 contoh dengan perintah berikut:
echo "This is My Second Nginx Web Server" > /usr/share/nginx/html/index.html
Simpan dan tutup file setelah Anda selesai.
Langkah 3 – Instal dan Konfigurasi HAProxy
Catatan:Selesaikan langkah ini di HAProxy Server
Pertama, instal HAProxy pada instance server haproxy dengan perintah berikut:
dnf install haproxy -y
Setelah instalasi selesai, buat cadangan file konfigurasi default haproxy:
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg-bak
File konfigurasi dibagi menjadi empat bagian utama.
- setelan global: Digunakan untuk menyetel parameter seluruh proses.
- default: Digunakan untuk menyetel parameter default untuk semua bagian lainnya.
- depan depan: Digunakan untuk menentukan bagaimana HAProxy diakses secara eksternal untuk mengaktifkan akses ke backend.
- bagian belakang: Digunakan untuk menentukan sekumpulan server yang akan disambungkan oleh proxy untuk meneruskan koneksi masuk.
Selanjutnya, buat file konfigurasi haproxy baru menggunakan perintah berikut:
nano /etc/haproxy/haproxy.cfg
Tambahkan baris berikut yang sesuai dengan infrastruktur Anda:
#————————————————————————
global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon
# nyalakan stats unix socket
stats socket /var/lib/haproxy/stats
# memanfaatkan kebijakan kripto di seluruh sistem
ssl-default-bind-ciphers PROFILE=SYSTEM ssl-default-server-ciphers PROFILE=SYSTEM
#————————————————————————
defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000
#————————————————————————
# frontend utama yang diproksi ke backend
#————————————————————————
frontend haproxy_balancer # define the name of the frontend. bind 192.168.0.10:80 # IP address of HAProxy server option http-server-close option forwardfor stats uri /haproxy?stats # Specify the HAProxy status page. default_backend webservers
#————————————————————————
# penyeimbangan round robin antara berbagai backend
#————————————————————————
backend webservers # Tentukan nama untuk mengidentifikasi aplikasi
mode http balance roundrobin # defines the roundrobin load balancer scheduling algorithm option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost server nginx-web1 192.168.0.11:80 check # IP address of the first backend server server nginx-web2 192.168.0.12:80 check # IP address of the second backend server
Catatan:Pastikan Anda mengubah alamat IP di atas dengan IP yang relevan dengan penyiapan server Anda
Simpan dan tutup file setelah Anda selesai. Kemudian, periksa file konfigurasi haproxy apakah ada kesalahan dengan perintah berikut:
haproxy -c -f /etc/haproxy/haproxy.cfg
Anda akan mendapatkan output berikut:
Configuration file is valid
Terakhir, mulai layanan haproxy dan aktifkan untuk memulai saat boot dengan perintah berikut:
systemctl start haproxy systemctl enable haproxy
Anda juga dapat memverifikasi haproxy dengan perintah berikut:
systemctl status haproxy
Anda akan mendapatkan output berikut:
haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2020-04-24 02:14:55 EDT; 5min ago Process: 1371 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q (code=exited, status=0/SUCCESS) Main PID: 1373 (haproxy) Tasks: 2 (limit: 6087) Memory: 2.8M CGroup: /system.slice/haproxy.service ├─1373 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid └─1374 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid Apr 24 02:14:55 haproxy systemd[1]: Starting HAProxy Load Balancer... Apr 24 02:14:55 haproxy systemd[1]: Started HAProxy Load Balancer.
Langkah 4 – Konfigurasi HAProxy Logging
Logging HAProxy memungkinkan Anda melihat statistik setiap koneksi ke server web backend Anda.
Anda dapat mengkonfigurasi rsyslog dengan mengedit file /etc/rsyslog.conf:
nano /etc/rsyslog.conf
Batalkan komentar pada baris berikut:
module(load="imudp") input(type="imudp" port="514")
Simpan dan tutup file setelah Anda selesai. Selanjutnya, Anda perlu mengkonfigurasi server rsyslog untuk menerima dan memproses pesan log HAProxy.
Untuk melakukannya, buat file konfigurasi haproxy.conf baru:
nano /etc/rsyslog.d/haproxy.conf
Tambahkan baris berikut:
local2.=info /var/log/haproxy-access.log local2.notice /var/log/haproxy-info.log
Simpan dan tutup file setelah Anda selesai. Kemudian, restart layanan rsyslog dan aktifkan untuk memulai saat boot dengan perintah berikut:
systemctl restart rsyslog systemctl enable rsyslog
Langkah 5 – Uji HAProxy Load Balancing
Pada titik ini, HAProxy diinstal dan dikonfigurasi. Saatnya menguji apakah load balancing berfungsi atau tidak.
Buka browser web Anda dan ketikkan HAProxy IP Anda http://192.168.0.10. Anda akan melihat konten server web Nginx pertama Anda di layar berikut:
Selanjutnya, segarkan halaman web. Anda akan melihat konten server web Nginx kedua Anda di layar berikut:
Anda dapat melihat status haproxy menggunakan URL http://192.168.0.10/haproxy?stats. Anda akan melihat kondisi server Anda, tingkat permintaan saat ini, waktu respons, dan metrik lainnya di layar berikut:
Kesimpulan
Dalam panduan di atas, kami mempelajari cara menyiapkan penyeimbang beban ketersediaan tinggi dengan HAProxy di CentOS 8. Kini Anda dapat dengan mudah merancang dan mengonfigurasi penyeimbangan beban agar sesuai dengan infrastruktur TI dan kebutuhan aplikasi Anda; cobalah di VPS Hosting dari Atlantic.Net.