GNU/Linux >> Belajar Linux >  >> Cent OS

Cara mengatur HAProxy sebagai Load Balancer untuk Nginx di CentOS 7

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                 #Nginx

Simpan 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.conf

Batalkan komentar pada baris ini untuk mengaktifkan koneksi UDP:

$ModLoad imudp
$UDPServerRun 514

Jika Anda ingin menggunakan IP tertentu, Anda dapat menambahkan baris baru seperti di bawah ini:

$UDPServerAddress 127.0.0.1

Simpan file dan keluar.

Kemudian buat file konfigurasi haproxy baru untuk rsyslog:

cd /etc/rsyslog.d/
vi haproxy.conf

Tempelkan 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, loadbalancer

Simpan dan keluar.

Sekarang restart rsyslog dan kemudian mulai haproxy:

systemctl restart rsyslog
systemctl start haproxy

Tambahkan 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-release

Sekarang Anda dapat menginstal Nginx:

yum -y install nginx

Nginx 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 nginx2

Selanjutnya, tambahkan Nginx untuk memulai saat boot dan kemudian mulai:

systemctl aktifkan nginx
systemctl start nginx

Pastikan 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.


Cent OS
  1. Cara Menginstal Nginx di CentOS 7

  2. Cara mengonfigurasi penyeimbang beban HAProxy

  3. Cara Setup Server VNC untuk Pengguna Baru di CentOS/RHEL 5

  1. Cara Menginstal Nginx di CentOS 8

  2. Cara Menginstal Magento 2.1 di CentOS 7

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

  1. Cara mengatur server SVN di CentOS

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

  3. Cara Setup Percona Cluster dengan HAproxy Loadbalancer di CentOS 7