GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Mengatur HAProxy di Ubuntu 16.04

HAProxy adalah alat penyeimbang beban dan layanan proxy ketersediaan tinggi sumber terbuka untuk aplikasi jaringan berbasis TCP dan HTTP. Mudah digunakan, cocok untuk situs web volume tinggi dan integrasinya yang mulus ke dalam arsitektur yang ada. Ini menawarkan koneksi transparan, pembongkaran server, penegakan kebijakan, membatasi koneksi selain dari fungsi utama layanan proxy. Pada artikel ini kami menjelaskan cara mengatur haproxy di Ubuntu 16.04.

1. Siapkan Jaringan

Kami akan menambahkan tiga server web yang berjalan dengan Apache2 dan satu server HAPROXY yang akan mem-proxy semua permintaan/tanggapan dari tiga layanan web di jaringan kami.

Berikut daftar Detail Server Web di jaringan kami.

Server 1:    site1.local     10.0.1.116
Server 2:    site2.local     10.0.1.117
Server 3:    site3.local     10.0.1.119

Server HAProxy:

load-balancer.local      10.0.1.118

Kami juga akan melampirkan satu IP publik ke load-balancer.local untuk mengaksesnya dari domain publik (opsional). Jika Anda tidak ingin mengaksesnya dari domain publik, Anda dapat melewati pemasangan IP publik dengan asumsi Anda akan mengakses server proxy dalam jaringan Anda.

2. Konfigurasi nama host

Karena kita akan mengakses load balancer dan server web dengan namanya ( bukan dengan IPADDRESS ) maka kita akan mengatur nama host dari tiga server web dan satu server proxy. Kami akan menyiapkan nama host dari tiga server web dan server proxy masing-masing sebagai site1.local, site2.local, site3.local dan load-balancer.local.

Kami akan mengatur nama host 10.0.1.116 sebagai site1.local di /etc/hosts dan /etc/hostname

root@site1:~# vi /etc/hosts
127.0.0.1 localhost
10.0.1.116 site1.local

root@site1:~# vi /etc/hostname
site1.local

Mulai ulang jaringan

root@site1:~#  service networking restart

Instal apache dan aktifkan.

root@site1:~# apt-get install apache2

root@site1:~# service apache2 enable

root@site1:~# service apache2 start

Buat file indeks untuk site1.local

root@site1:~# vi /var/www/html/index.html

<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<h1> Hi, This is 10.0.1.116 </h1>
</body>
</html>

Tambahkan aturan firewall untuk http

# ufw allow 80/tcp
# ufw reload

Sekarang periksa apakah Anda dapat mengakses site1

root@site1:~# curl -I site1.local
HTTP/1.1 200 OK
Date: Sun, 14 Aug 2016 14:30:29 GMT
Server: Apache/2.4.18 (Ubuntu)
Last-Modified: Sun, 14 Aug 2016 03:50:35 GMT
ETag: "ec-53a0004a26c6d"
Accept-Ranges: bytes
Content-Length: 236
Vary: Accept-Encoding
Content-Type: text/html

ATAU

root@site1:~#  curl  site1.local
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<h1> Hi, This is 10.0.1.116 </h1>
</body>
</html>

Ulangi langkah 2 untuk site2 ( 10.0.1.117 ) dan site3 ( 10.0.1.119 ).

Di server proxy tambahkan ketiga entri server web ( IPADDRESS HOSTNAME ) selain dari nama hostnya sendiri sebagai load-balancer.local

root@load-balancer:~# vi  /etc/hosts
127.0.0.1 localhost
10.0.1.118 load-balancer.local
10.0.1.116 site1.local
10.0.1.117 site2.local
10.0.1.119 site3.local

Siapkan nama host server proxy

root@load-balancer:~# vi /etc/hostname
load-balancer.local

3. Instal HAProxy

Sebelum menginstalnya perbarui Ubuntu. Jalankan perintah berikut sebagai root atau gunakan sudo untuk memperbarui ubuntu.

root@load-balancer:~# apt-get update

Sekarang perbarui paket pada sistem.

root@load-balancer:~# apt-get upgrade

Instal dengan menjalankan perintah berikut di terminal.

root@load-balancer:~# apt-get install haproxy

Untuk mengaktifkan layanan sebagai daemon, edit /etc/defaults/haproxy dan tambahkan baris berikut.
DIAKTIFKAN=1

root@load-balancer:~# vi /etc/defaults/haproxy

ENABLED=1
# Add extra flags here
#EXTRAOPTS="-de -m 16"

Memulai layanan

root@load-balancer:~# service haproxy start

4. Konfigurasi HAProxy

File konfigurasi terletak di /etc/haproxy/haproxy.cfg dan memiliki dua bagian global dan proxy, bagian Global menetapkan parameter seluruh proses dan bagian proxy terdiri dari bagian default, mendengarkan, front-end, dan back-end.

Edit file konfigurasi dengan editor teks vi

root@load-balancer:~# vi /etc/haproxy/haproxy.cfg

File konfigurasi default akan terlihat seperti berikut ini. Pertahankan bagian global dan default apa adanya.

Bagian global

global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon

# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private

# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL). This list is from:
#  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH
+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3

Bagian default

defaults
log     global
mode    http
option  httplog
option  dontlognull
timeout connect 5000
timeout client  50000
timeout server  50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http

Menambahkan Pendengar:

Bagian "ujung depan" menjelaskan satu set soket pendengar yang menerima koneksi klien. Front-end mendefinisikan bagaimana permintaan harus ditangani dan dikirim ke server back-end:

frontend Local_Server
bind 10.0.1.118:80
mode http
default_backend My_Web_Servers

Menambahkan Server Web Back-end:

Bagian "back-end" menjelaskan sekumpulan server yang akan disambungkan oleh proxy untuk meneruskan koneksi masuk. Sesuai dengan konfigurasi di atas, penyeimbang beban sekarang mendengarkan pada port 80. Sekarang tentukan server web back-end tempat ia akan mengirim permintaan.

backend My_Web_Servers
mode http
balance roundrobin
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpchk HEAD / HTTP/1.1rnHost:localhost
server site1.local  10.0.1.116:80
server site2.local  10.0.1.117:80
server site3.local  10.0.1.119:80

Anda dapat menambahkan parameter “check” di akhir tiga baris di atas untuk memeriksa parameter kesehatan server web Anda.

Anda dapat menggunakan algoritme penyeimbangan lainnya tergantung pada kebutuhan Anda.

Koneksi Terkecil
Memilih server dengan jumlah koneksi paling sedikit--disarankan untuk sesi yang lebih lama. Server di backend yang sama juga dirotasi secara round-robin.

Sumber
Ini memilih server mana yang akan digunakan berdasarkan hash dari IP sumber yaitu alamat IP pengguna Anda. Ini adalah salah satu metode untuk memastikan bahwa pengguna akan terhubung ke server yang sama.

Aktifkan Statistik (Opsional)

Sekarang jika mau, Anda dapat mengaktifkan statistik dengan menambahkan berikut di file konfigurasi.

listen stats
bind :9000
stats enable
stats hide-version
stats refresh 20s
stats show-node
stats uri /stats

5. Mulai ulang HAProxy

Karena Anda telah selesai dengan semua konfigurasi yang diperlukan untuk server proxy, verifikasi file konfigurasi sebelum memulai ulang layanan menggunakan perintah berikut.

root@load-balancer:~# haproxy -c -f /etc/haproxy/haproxy.cfg

Jika perintah di atas mengembalikan output sebagai “file konfigurasi valid”, maka mulai ulang layanan HAProxy

root@load-balancer:~# service haproxy restart

Sekarang periksa status server HAProxy.

root@load-balancer:~#  service haproxy status

6. Uji HAProxy

Sebelum pengujian, pastikan Anda dapat melakukan ping ke server web ( site1.local, site2.local, site3.local) dari load-balancer.local

root@load-balancer:~# ping site1.local
PING site1.local (10.0.1.116) 56(84) bytes of data.
64 bytes from site1.local (10.0.1.116): icmp_seq=1 ttl=64 time=0.906 ms
64 bytes from site1.local (10.0.1.116): icmp_seq=2 ttl=64 time=0.906 ms
64 bytes from site1.local (10.0.1.116): icmp_seq=3 ttl=64 time=0.648 ms

root@load-balancer:~# ping site2.local
PING site2.local (10.0.1.117) 56(84) bytes of data.
64 bytes from site2.local (10.0.1.117): icmp_seq=1 ttl=64 time=3.02 ms
64 bytes from site2.local (10.0.1.117): icmp_seq=2 ttl=64 time=0.687 ms
64 bytes from site2.local (10.0.1.117): icmp_seq=3 ttl=64 time=0.778 ms

root@load-balancer:~# ping site3.local
PING site3.local (10.0.1.119) 56(84) bytes of data.
64 bytes from site3.local (10.0.1.119): icmp_seq=1 ttl=64 time=0.830 ms
64 bytes from site3.local (10.0.1.119): icmp_seq=2 ttl=64 time=0.631 ms
64 bytes from site3.local (10.0.1.119): icmp_seq=3 ttl=64 time=0.771 ms

Uji HAPROXY menggunakan CURL

Untuk menguji eksekusi skrip berikut dari terminal , Anda akan menemukan bahwa penyeimbang beban mengirim permintaan ke tiga server web dalam metode round robin.

root@load-balancer:~# while true; do curl http://10.0.1.118; sleep 1; done
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<h1> Hi, This is 10.0.1.119 </h1>
</body>
</html>

<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<h1> Hi, This is 10.0.1.116 </h1>
</body>
</html>

<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<h1> Hi, This is 10.0.1.117 </h1>
</body>
</html>

<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<h1> Hi, This is 10.0.1.119 </h1>
</body>
</html>

<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<h1> Hi, This is 10.0.1.116 </h1>
</body>
</html>

<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<h1> Hi, This is 10.0.1.117 </h1>
</body>
</html>

...............................

...............................

...............................

Uji di browser:

Arahkan browser Anda ke http://load-balancer.local atau http://Server-Public-IP Anda akan mendapatkan respons dari tiga server web secara round robin yang mengonfirmasi bahwa itu berfungsi dengan harapan kami. Dengan setiap penyegaran, server proxy mengirimkan permintaan ke server web back-end satu per satu.

Anda juga dapat mengunjungi url statistik yang dikonfigurasi di bagian terakhir file konfigurasi untuk mengonfirmasi bahwa port dibuka untuk lalu lintas. Cukup navigasikan ke IP Publik atau http://load-balancer.local pada port 9000.

Misalnya, navigasikan ke http://load-balancer.local:9000/stats

Anda juga dapat memantau status server dari terminal menggunakan HATOP. HATOP adalah alat pihak ketiga yang mengekstrak statistik dari file soket yang dibuat oleh penyeimbang beban. Instal HATOP dengan menjalankan perintah berikut dari terminal.

root@load-balancer:~# apt-get install hatop

Biasanya ketika menjalankan HATOP, Anda harus menggunakan parameter -s dengan perintah sudo hatop -s /var/run/haproxy.sock. Untuk menghindari keharusan memasukkan parameter -s saat memanggil HATOP, Anda dapat memasukkan baris berikut ke dalam file ~/.bashrc Anda:

ekspor unix-socket=/var/run/haproxy.sock

7. Pencatatan HAProxy

Edit /etc/rsyslog.d/haproxy.conf dan tambahkan baris berikut di dalamnya.

local0.* -/var/log/haproxy_0.log
local1.* -/var/log/haproxy_1.log

Mulai ulang rsyslog

root@load-balancer:~# service rsyslog restart

Sekarang periksa log menggunakan perintah berikut

root@load-balancer:~# tail -f /var/log/haproxy*.log

Tambahkan juga baris “debug” di bagian global file konfigurasi untuk pencatatan verbose.

Kesimpulan

Dengan HAProxy, Anda dapat meningkatkan kinerja dan ketersediaan aplikasi web Anda. Tutorial ini hanyalah pengantar untuk load balancing meskipun mampu melakukan lebih dari apa yang dijelaskan dalam tutorial ini. Anda dapat meningkatkan ketersediaan tinggi dengan menyiapkan IP mengambang di antara beberapa penyeimbang beban untuk melindungi dari kegagalan dalam satu penyeimbang beban.


Ubuntu
  1. Cara Mengatur Cluster MariaDB Galera di Ubuntu 20.04

  2. Cara Mengatur Firewall UFW di Ubuntu 18.04

  3. Cara Mengatur Elasticsearch di Ubuntu 18.04 &16.04 LTS

  1. Cara mengatur server OpenVPN di Ubuntu 20.04

  2. Cara Mengatur Server Rsyslog di Ubuntu 18.04 LTS

  3. Setup Rsyslog Server di Ubuntu 20.04 - Bagaimana cara melakukannya?

  1. Cara Mengkonfigurasi HAProxy di Server Debian 9 / Ubuntu 16.04

  2. Cara Mengatur Kluster Basis Data Riak KV di Ubuntu 18.04

  3. Cara Mengatur Odoo OpenERP di Ubuntu 18.04