GNU/Linux >> Belajar Linux >  >> Linux

Cara Mengatur HAProxy sebagai Load Balancer untuk Nginx di CentOS 7

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

Nama Inang Alamat IP server penyeimbang beban 173.82.168.96 server-web-1 173.82.2.236 server-web-2 173.82.94.57

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.


Linux
  1. Cara mengonfigurasi penyeimbang beban HAProxy

  2. Bagaimana cara Setup Server NTP di CentOS?

  3. Bagaimana cara mengatur VSFTPD di CentOS 7.x?

  1. Cara Mengonfigurasi NGINX sebagai Penyeimbang Beban TCP/UDP di Linux

  2. Cara mengatur HAProxy sebagai Load Balancer untuk MariaDB di CentOS 7

  3. Cara Mengatur HAProxy di Ubuntu 16.04

  1. Cara mengatur HAProxy sebagai Load Balancer untuk Nginx di CentOS 7

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

  3. Cara Mengatur Nginx sebagai Proxy Terbalik untuk Apache di Debian 11