HAProxy atau High Availability Proxy adalah open source TCP dan HTTP load balancer dan perangkat lunak server proxy. HAProxy telah ditulis oleh Willy Tarreau dalam C, mendukung SSL, kompresi, keep-alive, format log kustom dan penulisan ulang header. HAProxy adalah server proxy dan penyeimbang beban yang cepat dan ringan dengan jejak memori yang kecil dan penggunaan CPU yang rendah. Ini digunakan oleh situs besar seperti Github, StackOverflow, Reddit, Tumblr, Twitter, dan lainnya. Ini telah menjadi penyeimbang beban perangkat lunak dan server proxy paling populer dalam beberapa tahun terakhir.
Dalam tutorial ini, saya akan memandu Anda melalui instalasi dan konfigurasi HAProxy untuk 3 server, satu load balancer, dan dua server web Nginx. Kami akan menginstal HAProxy di satu server dan kemudian menginstal server web Nginx di server lain. HAProxy bertindak sebagai penyeimbang beban untuk server web Nginx.
Konsep Dasar dengan HAProxy
Lapisan 4 dan Lapisan 7
HAProxy dapat berjalan dalam dua mode:mode TCP Layer 4 dan Mode HTTP Layer 7. Dalam mode Layer 4 TCP, HAProxy meneruskan paket RAW TCP dari klien ke server aplikasi. Dalam mode HTTP Layer 7, HAProxy menguraikan header HTTP sebelum meneruskannya ke server aplikasi. Dalam tutorial ini, kita akan menggunakan Nginx sebagai server web yang hanya mendukung mode HTTP Layer 7.
Algoritme Saldo
Ini adalah algoritma yang digunakan oleh HAProxy untuk memilih server saat melakukan load balancing. Mode berikut tersedia:
Roundrobin
Ini adalah algoritma keseimbangan yang paling sederhana. Untuk setiap koneksi baru, itu akan ditangani oleh server backend berikutnya. Jika server backend terakhir dalam daftar tercapai, server akan mulai lagi dari atas daftar backend.
Koneksi Terakhir
Koneksi baru akan ditangani oleh server backend dengan jumlah koneksi paling sedikit. Ini berguna ketika waktu dan beban permintaan sangat bervariasi.
Sumber
Ini untuk sesi lengket, IP klien akan di-hash untuk menentukan server backend yang menerima permintaan terakhir dari IP ini. Jadi IP A akan selalu ditangani oleh backend1, dan IP B akan selalu ditangani oleh banckend2 agar tidak mengganggu sesi
Ada algoritme lain - periksa situs resmi HAProxy untuk mengetahui detailnya.
Prasyarat
- 3 CentOS 7
penyeimbang beban
192.168.1.102
nginx1
192.168.1.104
nginx2
192.168.1.105
- Hak istimewa root di ketiga server.
Langkah 1 - Konfigurasi file /etc/hosts
Masuk ke server penyeimbang beban dan edit file /etc/hosts.
ssh [dilindungi email]
sudo su
vi /etc/hosts
Tambahkan nama host nginx1 dan nginx2:
192.168.1.104 nginx1.loadbalancer.me nginx1
192.168.1.105 nginx2.loadbalancer.me nginx2
Simpan file dan keluar dari editor.
Selanjutnya, edit file host di server Nginx (nginx1 dan nginx2):
ssh [dilindungi email]
ssh [dilindungi email]
Edit dan tambahkan baris baru untuk penyeimbang beban di file host:
vi /etc/host
Tambahkan nama host loadbalancer di setiap server nginx:
192.168.1.102 loadbalancer
lakukan ini di server nginx1 dan nginx2.
Langkah 2 - Instal dan Konfigurasi HAProxy
HAProxy tersedia di repositori CentOS 7, masuk ke server loadbalancer dan perbarui daftar paket:
ssh [dilindungi email]
yum -y update
Sekarang instal HAProxy dengan perintah yum ini:
yum -y install haproxy
Ketika instalasi selesai, buka direktori "/etc/haproxy/" dan buat cadangan file konfigurasi asli:
cd /etc/haproxy/
mv haproxy.cfg haproxy.cfg.orig
Selanjutnya, tambahkan file konfigurasi HAProxy baru file "haproxy.cfg" dengan editor vi:
vi haproxy.cfg
Rekatkan konfigurasi di bawah ini:
#------------------------------------------------------------ -----------------------
# Setelan global
#--------------- -------------------------------------------------- ----
global
log 127.0.0.1 local2 #Konfigurasi log
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
pengguna haproxy #Haproxy berjalan di bawah pengguna dan grup "haproxy"
grup haproxy
stats socket /var/lib/haproxy/stats
#------------------------------- ---------------------------------------
# default umum yang semua 'mendengarkan Bagian ' dan 'backend' akan
# digunakan jika tidak ditunjuk dalam bloknya
#-------------------------- -------------------------------------------------------
default
mode http
log global
opsi 10 httplog
option dontlognull
option http-server-close
option forwardfor kecuali 127.0.0.0/8
option
antrian timeout 1m
timeout connect 10s
klien timeout 1m
server timeout 1m
timeout http-keep maxconn 3000
#--------------------------------------- ------------------------------
#HAProxy Monitoring Config
#------- -------------------------------------------------- ------------
dengarkan haproxy3-monitoring *:8080 #Haproxy Monitoring dijalankan pada port 8080
mode http
opsi teruskan untuk
opsi httpclose
stats enable
stats show-legends
stats refresh 5s
stats uri /stats #UR L for HAProxy monitoring
stats realm Haproxy\ Statistics
stats auth howtoforge:howtoforge #User and Password untuk login ke monitoring dashboard
stats admin if TRUE
default_ -main adalah opsional untuk memantau backend
#------------------------------------ ----------------------------------
# Konfigurasi FrontEnd
#----- -------------------------------------------------- --------------
frontend main
bind *:80
opsi http-server-close
opsi forwardfor
default_backend app -utama
#-------------------------------------------------- ------------------------------
# BackEnd roundrobin sebagai algoritma keseimbangan
#----- -------------------------------------------------- --------------
backend app-main
balance roundrobin #Algoritme keseimbangan
opsi httpchk HEAD / HTTP/1.1\r\nHost:\ localhost # Chu eck aplikasi server aktif dan sehat - 200 kode status
server nginx1 192.168.1.104:80 check #Nginx1
server nginx2 192.168.1.105:80 check #NginxSimpan file konfigurasi dan keluar.
Selanjutnya, konfigurasikan rsyslog untuk HAProxy.
Kami akan mengkonfigurasi daemon rsyslog untuk mencatat statistik HAProxy. Edit file rsyslog.conf untuk mengaktifkan port UDP 514 agar dapat digunakan oleh rsyslog.
vi /etc/rsyslog.confBatalkan komentar pada baris ini untuk mengaktifkan koneksi UDP:
$ModLoad imudp
$UDPServerRun 514Jika Anda ingin menggunakan IP tertentu, Anda dapat menambahkan baris baru seperti di bawah ini:
$UDPServerAddress 127.0.0.1Simpan file dan keluar.
Kemudian buat file konfigurasi haproxy baru untuk rsyslog:
cd /etc/rsyslog.d/
vi haproxy.confTempelkan konfigurasi di bawah ini:
local2.=info /var/log/haproxy-access.log #Untuk Log Akses
local2.notice /var/log/haproxy-info.log #Untuk Info Layanan - Backend, loadbalancerSimpan dan keluar.
Sekarang restart rsyslog dan kemudian mulai haproxy:
systemctl restart rsyslog
systemctl start haproxyTambahkan haproxy untuk memulai saat boot:
systemctl aktifkan haproxy
Langkah 3 - Instal dan Konfigurasi Nginx
Pada bagian ini, kita akan menginstal Nginx dari repositori epel di server nginx1 dan nginx2.
Masuk ke server:
ssh [dilindungi email]
ssh [dilindungi email]Instal repositori epel dengan perintah yum di bawah ini:
yum -y install epel-releaseSekarang Anda dapat menginstal Nginx:
yum -y install nginxNginx sudah terpasang. Buka direktori web dan ubah file indeks sehingga kita dapat melihat server mana yang mengirimkan file html:
cd /usr/share/nginx/html/
echo "nginx1.loadbalance.me
"> index.html #Untuk server nginx1
echo "nginx2 .loadbalance.me
"> index.html #Untuk server nginx2Selanjutnya, tambahkan Nginx untuk memulai saat boot dan kemudian mulai:
systemctl aktifkan nginx
systemctl start nginxPastikan Anda melakukan langkah ini di server nginx1 dan nginx2.
Langkah 4 - Pengujian
Pengujian dari browser dengan mengakses IP loadbalancer:192.168.1.102
Pengujian dengan perintah curl:
curl 192.168.1.102
Pengujian login ke web monitoring HAProxy yang berjalan pada port 8080 dengan username dan password "howtoforge":
http://192.168.1.102:8080/stats
HAProxy berhasil berhasil dan bertindak sebagai penyeimbang beban untuk dua server web Nginx kami.
Kesimpulan
HAProxy atau Proksi Ketersediaan Tinggi adalah perangkat lunak sumber terbuka yang menyediakan ketersediaan tinggi untuk layanan berbasis TCP, ini beroperasi sebagai penyeimbang beban HTTP dan server proxy. Perangkat lunak ini ditulis dalam C dan mendukung SSL, keep-alive dan kompresi. HAProxy adalah pilihan yang tepat untuk semua orang yang membutuhkan penyeimbang beban dan server proxy yang cepat dan ringan dengan jejak memori yang kecil dan penggunaan CPU yang rendah. Haproxy dapat berjalan dalam mode Layer 4 TCP dan mode HTTP Layer 7. Nginx hanya mendukung mode HTTP Layer 7 dengan HAProxy. Jika Anda ingin menggunakan mode Layer 4 TCP, Anda dapat menggunakan server web lain seperti apache. Pada CentOS 7, HAProxy tersedia di repositori default. Sangat mudah untuk menginstal dan mengkonfigurasi.
Cara mengatur HAProxy sebagai Load Balancer untuk MariaDB di CentOS 7 Pemantauan server dengan Icinga 2 dan Icingaweb 2 di CentOS 7Cent OS