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

Instal dan Konfigurasi HAProxy di RHEL 8 / CentOS 8 Linux

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, Anda akan melalui instalasi dan konfigurasi HAProxy pada RHEL 8 / CentOS 8. Kami akan menginstal HAProxy pada satu server dan kemudian menginstal server web Nginx di server lain. HAProxy akan bertindak sebagai penyeimbang beban untuk server web Nginx.

Dalam tutorial ini Anda akan mempelajari:

  • Arsitektur dan Konsep HAProxy
  • Konfigurasikan file host untuk resolusi nama
  • Instal dan Konfigurasikan HAProxy
  • Instal dan Konfigurasi Nginx
  • Menguji fitur Load Balancing
  • Akses URL Statistik HAProxy

Arsitektur HAProxy.

Persyaratan dan Konvensi Perangkat Lunak yang Digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, Konvensi, atau Versi Perangkat Lunak yang Digunakan
Sistem RHEL 8 / CentOS 8
Perangkat Lunak HAProxy, Nginx
Lainnya Akses istimewa ke sistem Linux Anda sebagai root atau melalui sudo perintah.
Konvensi # – membutuhkan perintah linux yang diberikan untuk dieksekusi dengan hak akses root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$ – membutuhkan perintah linux yang diberikan untuk dieksekusi sebagai pengguna biasa yang tidak memiliki hak istimewa

Arsitektur dan Konsep HAProxy

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 mendukung mode HTTP Layer 7.

Lapisan 4 Penyeimbangan Beban.

Lapisan 7 Penyeimbangan Beban.

Balance Algorithm 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 Terkecil

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.

Konfigurasikan file host untuk resolusi nama

Masuk ke server penyeimbang beban dan edit /etc/hosts file dan HAProxy loadbalancer, nginx1, nama host nginx2. Salin file yang sama di dua node nginx lainnya dan periksa konektivitas jaringan melalui perintah ping.

# vim /etc/hosts

192.168.1.108 loadbalancer.example.com
192.168.1.104 nginx1.example.com
192.168.1.105 nginx2.example.com

Instal dan Konfigurasi HAProxy

HAProxy tersedia di repositori RHEL 8 / CentOS 8, oleh karena itu masuk ke server loadbalancer dan instal paket HAProxy dengan perintah yum ini.

# yum install haproxy

Setelah berhasil diinstal, Anda dapat menggunakan perintah di bawah ini untuk memverifikasi instalasi.

# yum info haproxy
# yum info haproxy
Updating Subscription Management repositories.
Updating Subscription Management repositories.
Last metadata expiration check: 0:06:03 ago on Sat 16 Mar 2019 11:40:24 PM +04.
Installed Packages
Name         : haproxy
Version      : 1.8.14
Release      : 1.el8
Arch         : x86_64
Size         : 4.1 M
Source       : haproxy-1.8.14-1.el8.src.rpm
Repo         : @System
From repo    : rhel-8-for-x86_64-appstream-beta-rpms
Summary      : HAProxy reverse proxy for high availability environments
URL          : http://www.haproxy.org/
License      : GPLv2+
Description  : HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high
             : availability environments. Indeed, it can:
             :  - route HTTP requests depending on statically assigned cookies
             :  - spread load among several servers while assuring server persistence
             :    through the use of HTTP cookies
             :  - switch to backup servers in the event a main one fails
             :  - accept connections to special ports dedicated to service monitoring
             :  - stop accepting connections without breaking existing ones
             :  - add, modify, and delete HTTP headers in both directions
             :  - block requests matching particular patterns
             :  - report detailed status to authenticated users from a URI
             :    intercepted from the application

Ketika instalasi selesai, pergi ke /etc/haproxy/ direktori dan buat cadangan file konfigurasi asli.

# cd /etc/haproxy/
# cp haproxy.cfg haproxy.cfg.orig

Selanjutnya lakukan perubahan di bawah ini pada file konfigurasi HAProxy haproxy.cfg dengan editor mana pun.

#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   https://www.haproxy.org/download/1.8/doc/configuration.txt
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

    # utilize system-wide crypto-policies
    ssl-default-bind-ciphers PROFILE=SYSTEM
    ssl-default-server-ciphers PROFILE=SYSTEM

#---------------------------------------------------------------------
# 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 stats 
    bind loadbalancer.example.com: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 admin:admin                   # User and Password for login to the monitoring dashboard
    #stats admin if TRUE
    default_backend loadbalancer                 # This is optionally for monitoring backend
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend loadbalancer
    bind loadbalancer.example.com:80
    #acl url_static       path_beg       -i /static /images /javascript /stylesheets
    #acl url_static       path_end       -i .jpg .gif .png .css .js

    #use_backend static          if url_static
    option http-server-close
    option forwardfor
    default_backend       loadbalancer

#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
#backend static
#    balance     roundrobin
#    server      static 127.0.0.1:4331 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend loadbalancer
    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  nginx1.example.com 192.168.1.104:80 check         # NGINX Server1
    server  nginx2.example.com 192.168.1.105:80 check         # NGNIX Server2

Simpan file konfigurasi ini dan keluar.

Sekarang, kita akan mengkonfigurasi daemon rsyslog untuk mencatat statistik HAProxy. Edit rsyslog.conf file untuk mengaktifkan port UDP 514 untuk digunakan oleh rsyslog. Buka file konfigurasi rsyslog dan batalkan komentar pada baris untuk mengaktifkan koneksi UDP.

# vim /etc/rsyslog.conf
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

Simpan file dengan perubahan di atas dan keluar. Kemudian buat file konfigurasi HAProxy baru untuk rsyslog dan tambahkan entri di bawah ini ke dalam file itu.

# cd /etc/rsyslog.d/
# vi haproxy.conf
local2.=info     /var/log/haproxy-access.log    # For Access Log
local2.notice    /var/log/haproxy-info.log      # For Service Info - Backend, loadbalancer

Sekarang restart rsyslog dan kemudian mulai layanan HAProxy dan tambahkan HAProxy untuk memulai saat boot.

# systemctl restart rsyslog
# systemctl start haproxy
# systemctl enable haproxy

Instal dan Konfigurasi Nginx

Nginx sudah menjadi bagian dari repo RHEL 8 / CentOS 8 yang ada dan dapat diinstal dengan perintah berikut.

# yum install nginx

Setelah terinstal, Anda dapat memverifikasi penginstalan dengan bantuan perintah ini.

# yum info nginx
# yum info nginx
Updating Subscription Management repositories.
Updating Subscription Management repositories.
Last metadata expiration check: 0:06:14 ago on Sat 16 Mar 2019 11:40:24 PM +04.
Installed Packages
Name         : nginx
Epoch        : 1
Version      : 1.14.0
Release      : 3.el8+1631+ba902cf0
Arch         : x86_64
Size         : 568 k
Source       : nginx-1.14.0-3.el8+1631+ba902cf0.src.rpm
Repo         : rhel-8-for-x86_64-appstream-beta-rpms
Summary      : A high performance web server and reverse proxy server
URL          : http://nginx.org/
License      : BSD
Description  : Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and
             : IMAP protocols, with a strong focus on high concurrency, performance and low
             : memory usage.

Setelah Nginx diinstal, buka direktori web dan ubah index.html mengajukan sesuai. Pastikan Anda melakukan langkah-langkah di bawah ini pada server nginx1 dan nginx2.

# cd /usr/share/nginx/html
# ls -lrth
total 20K
-rw-r--r--. 1 root root 2.8K Oct 31  2016 poweredby.png
-rw-r--r--. 1 root root  368 Oct 31  2016 nginx-logo.png
-rw-r--r--. 1 root root 3.7K Mar 16 20:39 50x.html
-rw-r--r--. 1 root root 3.6K Mar 16 20:39 404.html
-rw-r--r--. 1 root root 3.7K Mar 16 20:42 index.html

Selanjutnya, tambahkan Nginx untuk memulai saat boot dan kemudian mulai daemon dengan perintah di bawah ini.

# systemctl enable nginx
# systemctl start nginx

Menguji fitur Load Balancing

Pengujian dapat dilakukan dengan menelusuri dan mengakses loadbalancer IP 192.168.1.108 (untuk kasus saya) dan Anda akan melihat satu kali itu pergi ke Nginx Node1 dan kedua kalinya itu pergi ke Nginx Node2 secara round robin.

Halaman web di NGINX Node1.

Halaman web di NGINX Node2.

Anda juga dapat memeriksa /var/log/haproxy-access.log untuk mendapatkan informasi detail tentang load balancing.

Akses URL Statistik HAProxy

Akses dasbor untuk Laporan Statistik HAProxy yang berjalan pada port 8080 dengan nama pengguna dan sandi yang ditentukan di haproxy.cfg berkas.

http://192.168.1.108:8080/stats

Akses URL Statistik HAProxy.

Dasbor Statistik HAProxy.

HAProxy berhasil bekerja dan bertindak sebagai penyeimbang beban untuk dua server web Nginx.

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. Di RHEL 8 / CentOS 8 Linux, HAProxy tersedia di repositori default. Sangat mudah untuk menginstal dan mengkonfigurasi.


Cent OS
  1. Cara menginstal server DNS di RHEL 8 / CentOS 8 Linux

  2. Instal dan Konfigurasikan server FTP di CentOS 7 / RHEL 7 – (vsftpfd)

  3. CentOS / RHEL 5:Cara menginstal dan mengkonfigurasi server vsftpd

  1. Cara menginstal dan mengkonfigurasi R pada Sistem Linux RHEL 8 / CentOS 8

  2. Cara menginstal dan mengkonfigurasi samba di RHEL 8 / CentOS 8

  3. Cara Menginstal dan Mengkonfigurasi HAProxy di CentOS/RHEL 7/6

  1. Cara Menginstal dan Mengkonfigurasi VNC di CentOS 7

  2. Cara Menginstal dan Mengonfigurasi Server NFS di CentOS 8

  3. Cara Menginstal dan Mengkonfigurasi VNC di CentOS 8