Ditulis dalam C oleh Willy Tarreau, HAProxy, juga dikenal sebagai High Availability Proxy adalah penyeimbang beban HTTP dan server proxy yang cepat dan ringan. Ini memiliki penggunaan CPU yang rendah dan disebabkan oleh jejak memori yang kecil. Penyeimbang beban digunakan oleh situs web populer seperti StackOverflow, Twitter, Github, dan Tumblr untuk menyebutkan beberapa saja.
Dalam panduan ini, kami akan menunjukkan cara menyiapkan HAProxy sebagai penyeimbang beban untuk server web Nginx di CentOS 7. Penyeimbang beban akan berada di depan 2 server web Nginx dan mendistribusikan permintaan HTTP ke server secara merata.
Algoritma Saldo Proksi HA
Ini adalah algoritme yang digunakan oleh penyeimbang beban untuk pemilihan server web saat mendistribusikan beban kerja.
1. Roundrobin
Ini adalah yang paling sederhana dari algoritma. Pada dasarnya, setiap koneksi baru akan ditangani oleh server web berikutnya. Misalnya, jika Anda memiliki 4 server back-end, Masing-masing akan menangani permintaan secara berurutan. Ketika server web terakhir dalam daftar tercapai, penyeimbang beban akan mulai dari atas lagi dengan server web pertama.
2. Sambungan Terakhir
Di sini permintaan baru akan ditangani oleh server dengan jumlah koneksi paling sedikit. Ini sangat berguna ketika beban dan waktu permintaan berbeda dengan variasi yang besar.
Memulai
Untuk memulai, lakukan daftar periksa pra-penerbangan dan pastikan Anda memiliki yang berikut ini.
1. Server CentOS 7
2. Akses SSH ke semua server
Di bawah ini adalah representasi grafis dari penyiapan.
Langkah 1:Konfigurasi file /etc/hosts di load balancer
Masuk ke penyeimbang beban menggunakan SSH dan tambahkan alamat IP server web Nginx dan nama host seperti yang ditunjukkan.
vim /etc/hosts
173.82.2.236 web-server-1
173.82.94.57 web-server-2
Simpan dan keluar dari editor teks vim.
Selanjutnya, login ke masing-masing server Web (web-server-1 dan web-server-2) dan edit /etc/hosts
file untuk menunjuk ke penyeimbang beban.
173.82.168.96 load-balancer
Simpan dan keluar dari editor teks.
Langkah 2:Instal dan konfigurasikan HAProxy di server penyeimbang beban
Repositori HAProxy sudah tersedia di repositori CentOS. Untuk menginstal dan menyiapkan HAProxy, pertama, masuk dan perbarui repositori sistem.
yum update -y
Selanjutnya, instal HAProxy menggunakan perintah:
yum -y install haproxy
Contoh Keluaran
Setelah instalasi berhasil dan selesai, pergilah ke direktori haproxy.
cd /etc/haproxy
Cadangkan haproxy.cfg
file dengan mengganti namanya menjadi haproxy.cfg.bak
mv haproxy.cfg haproxy.cfg.bak
Selanjutnya, buat file konfigurasi HAproxy baru.
vim haproxy.cfg
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
log 127.0.0.1 local2 #Log configuration
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy #Haproxy running under user and group "haproxy"
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
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
#---------------------------------------------------------------------
#HAProxy Monitoring Config
#---------------------------------------------------------------------
listen haproxy3-monitoring *:8080 #Haproxy Monitoring run on port 8080
mode http
option forwardfor
option httpclose
stats enable
stats show-legends
stats refresh 5s
stats uri /stats #URL for HAProxy monitoring
stats realm Haproxy\ Statistics
stats auth Password123: Password123 #User and Password for login to the monitoring dashboard
stats admin if TRUE
default_backend app-main #This is optionally for monitoring backend
#---------------------------------------------------------------------
# FrontEnd Configuration
#---------------------------------------------------------------------
frontend main
bind *:80
option http-server-close
option forwardfor
default_backend app-main
#---------------------------------------------------------------------
# BackEnd round robin as balance algorithm
#---------------------------------------------------------------------
backend app-main
balance roundrobin #Balance algorithm
option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost #Check the server application is up and healty - 200 status code
server web-server-1 173.82.2.236:80 check #Nginx1
server web-server-2 173.82.94.57:80 check #Nginx2
Perhatikan server web yang telah ditentukan pada 2 baris terakhir seperti yang ditunjukkan pada output.
Simpan dan keluar dari editor teks.
Selanjutnya, Kita akan mengonfigurasi rsyslog daemon untuk mencatat statistik HAProxy.
Edit rsyslog.conf
file untuk mengaktifkan port UDP 514 untuk digunakan oleh rsyslog.
vim /etc/rsyslog.conf
Untuk mengizinkan koneksi UDP melalui port 154, batalkan komentar pada baris berikut.
$ModLoad imudp
$UDPServerRun 514
Simpan dan keluar dari editor teks.
Selanjutnya, buat file konfigurasi HAProxy baru untuk syslog.
vim /etc/rsyslog.d/haproxy.conf
Tempelkan konfigurasi berikut
local2.=info /var/log/haproxy-access.log #For Access Log
local2.notice /var/log/haproxy-info.log #For Service Info - Backend, loadbalancer
Simpan dan keluar dari editor teks.
Lanjutkan dan mulai ulang rsyslog.
systemctl restart rsyslog
Selanjutnya, mulai dan aktifkan Haproxy untuk memulai saat boot.
systemctl start haproxy
systemctl enable haproxy
Untuk mengonfirmasi bahwa HaProxy aktif dan berjalan, jalankan:
systemctl status haproxy
Pada langkah selanjutnya, kita akan menginstal Nginx ke server web kita.
Langkah 3:Menginstal dan mengonfigurasi Nginx
Satu-satunya langkah penting yang tersisa adalah pemasangan Nginx di setiap server web kami.
Tapi pertama-tama, instal repositori EPEL seperti yang ditunjukkan
yum install epel-release
Selanjutnya, instal Nginx
yum install nginx -y
Contoh keluaran
Dengan Nginx terinstal di kedua server, kita akan memodifikasi index.html
file di setiap server web Nginx untuk membuat perbedaan antara setiap server saat melakukan simulasi dengan penyeimbang beban HAproxy.
Pindah ke direktori html seperti yang ditunjukkan:
cd /usr/share/nginx/html/
Cadangkan file index.html
mv index.html index.html.bak
Selanjutnya, buat file index.html baru dan tempel beberapa konten sampel.
Untuk Server Web 1
echo "web-server-1. Hey ! This is your first web server" > index.html
Untuk Server Web 2
echo "web-server-2. Hey ! This is your second web server" > index.html
Selanjutnya, mulai Nginx di kedua server web dan konfirmasi apakah layanan berjalan
systemctl start nginx
systemctl status nginx
Menguji Penyeimbangan beban
Untuk memverifikasi bahwa semuanya berjalan dengan baik, jalankan perintah berikut berulang kali.
curl 173.82.168.96
Output Anda harus mirip dengan ini.
Seperti yang dapat Anda amati dengan cermat, dengan setiap menjalankan berikutnya pada perintah curl, output bergantian antara konten server web pertama dan kedua Sempurna!
Sekarang, mari kita coba menguji menggunakan browser web.
https://load-balancer-IP-address
Ini akan menampilkan konten di salah satu server web, Dalam hal ini, web-server-2.
Sekarang, coba segarkan sekali atau dua kali dan output akan mengarah ke server web lain, dalam hal ini, web-server-1.
Luar biasa! Ini menegaskan bahwa penyeimbang beban kami dapat mendistribusikan permintaan HTTP secara merata di antara server web kami.
UNTUK mengumpulkan lebih banyak statistik dari browser penyeimbang beban, URL berikut
https://load-balancer-IP:8080/stats
Gunakan Password123 sebagai username dan Password seperti yang kita definisikan di haproxy.cfg
file konfigurasi.
Ini meringkas tutorial tentang cara mengatur penyeimbang beban HAProxy untuk Nginx di CentOS 7. Jangan ragu untuk mencobanya dan bagikan panduan ini di jejaring sosial Anda. Seperti biasa, masukan Anda akan kami hargai.