GNU/Linux >> Belajar Linux >  >> Ubuntu

Penyeimbangan Beban Server Web dengan HAProxy di Ubuntu 14.04

Apa itu HAProxy?

HAProxy (Proxy Ketersediaan Tinggi) adalah penyeimbang beban sumber terbuka yang dapat memuat keseimbangan layanan TCP apa pun. HAProxy adalah solusi gratis, sangat cepat, dan andal yang menawarkan penyeimbangan beban, ketersediaan tinggi, dan proxy untuk aplikasi berbasis TCP dan HTTP. Ini sangat cocok untuk situs web dengan lalu lintas sangat tinggi dan mendukung banyak situs yang paling banyak dikunjungi di dunia.

Sejak keberadaannya, ia telah menjadi penyeimbang beban sumber terbuka standar de-facto. Meskipun tidak mengiklankan dirinya sendiri, tetapi digunakan secara luas. Di bawah ini adalah diagram dasar tentang tampilan pengaturan:

Memasang HAProxy

Saya menggunakan Ubuntu 14.04 dan menginstalnya dengan:

apt-get install haproxy

Anda dapat memeriksa versi dengan:

haproxy -v


Kita perlu mengaktifkan HAProxy untuk memulai dengan skrip init /etc/default/haproxy. Setel opsi DIAKTIFKAN ke 1 sebagai:

ENABLED=1

Untuk memverifikasi apakah perubahan ini dilakukan dengan benar, jalankan skrip init HAProxy tanpa parameter apa pun. Anda akan melihat yang berikut ini:

$ service haproxy <press_tab_key>
reload   restart  start    status   stop

HAProxy sekarang diinstal. Sekarang mari kita membuat setup di mana kita memiliki 2 (dua) instance Apache Web Server dan 1 (satu) instance HAProxy. Di bawah ini adalah informasi setup:

Kami akan menggunakan tiga sistem, muncul secara virtual melalui VirtualBox:

Instance 1 - Load Balancer

Nama host:haproxy
OS:Ubuntu
IP Pribadi:192.168.205.15

Instance 2 - Server Web 1

Hostname:webser01
OS:Ubuntu dengan LAMP
IP Pribadi:192.168.205.16

Instance 2 - Server Web 2

Hostname:webserver02
OS:Ubuntu dengan LAMP
Private IP:192.168.205.17

Berikut adalah diagram tampilan setupnya:

Sekarang mari kita konfigurasikan HAProxy.

Mengonfigurasi HAProxy

Cadangkan file asli dengan mengganti namanya:

mv /etc/haproxy/haproxy.cfg{,.original}

Kita akan membuat file haproxy.cfg kita sendiri. Menggunakan editor teks favorit Anda, buat file /etc/haproxy/haproxy.cfg sebagai:

global
        log /dev/log   local0
        log 127.0.0.1   local1 notice
        maxconn 4096
        user haproxy
        group haproxy
        daemon

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        option redispatch
        maxconn 2000
        contimeout     5000
        clitimeout     50000
        srvtimeout     50000

listen webfarm 0.0.0.0:80
    mode http
    stats enable
    stats uri /haproxy?stats
    balance roundrobin
    option httpclose
    option forwardfor
    server webserver01 192.168.205.16:80 check
    server webserver02 192.168.205.17:80 check

Penjelasan:

global
        log /dev/log   local0
        log 127.0.0.1   local1 notice
        maxconn 4096
        user haproxy
        group haproxy
        daemon

Direktif log menyebutkan server syslog ke mana pesan log akan dikirim.
Direktif maxconn menentukan jumlah koneksi bersamaan di front-end. Nilai default adalah 2000 dan harus disetel sesuai dengan konfigurasi sistem Anda.
Arahan pengguna dan grup mengubah proses HAProxy ke pengguna/grup yang ditentukan. Ini tidak boleh diubah.

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        option redispatch
        maxconn 2000
        contimeout     5000
        clitimeout     50000
        srvtimeout     50000

Bagian di atas memiliki nilai default. Opsi pengiriman ulang memungkinkan redistribusi sesi jika terjadi kegagalan koneksi. Jadi kekakuan sesi diganti jika instance server web turun.
Direktif percobaan ulang menetapkan jumlah percobaan ulang untuk dilakukan pada contoh server web setelah kegagalan koneksi.
Nilai yang akan diubah adalah berbagai arahan timeout. Opsi contimeout menentukan waktu maksimum untuk menunggu upaya koneksi ke instance server web berhasil.
clitimeout dan srvtimeout berlaku ketika klien atau server diharapkan untuk mengakui atau mengirim data selama proses TCP. HAProxy merekomendasikan pengaturan waktu tunggu klien dan server ke nilai yang sama.


listen webfarm 0.0.0.0:80 mode http stats enable stats uri /haproxy?stats balance roundrobin option httpclose option forwardfor server webserver01 192.168.205.16:80 check server webserver02 192.168.205.17:80 check

Blok di atas berisi konfigurasi untuk frontend dan backend. Kami mengonfigurasi HAProxy untuk mendengarkan pada port 80 untuk webfarm yang hanya merupakan nama untuk mengidentifikasi aplikasi.
Arahan statistik mengaktifkan halaman statistik koneksi. Halaman ini dapat dilihat dengan URL yang disebutkan dalam stats uri jadi dalam hal ini, http://192.168.205.15/haproxy?stats demo halaman ini dapat dilihat di sini.
Direktif keseimbangan menentukan penyeimbangan beban algoritma yang akan digunakan. Opsi algoritma yang tersedia adalah:

  • Robin Bulat (roundrobin),
  • Robin Bulat Statis (static-rr),
  • Koneksi Terkecil (koneksi terkecil),
  • Sumber (sumber),
  • URI (uri) dan
  • Parameter URL (url_param).

Informasi tentang setiap algoritme dapat diperoleh dari dokumentasi resmi.

Direktif server mendeklarasikan server backend, sintaksnya adalah:

server <server_name> <server_address>[:port] [param*]
    

Nama yang kami sebutkan di sini akan muncul di log dan peringatan. Ada beberapa parameter lagi yang didukung oleh arahan ini dan kami akan menggunakan parameter centang di artikel ini. Opsi centang mengaktifkan pemeriksaan kesehatan pada instance server web jika tidak, instance server web ?selalu dianggap tersedia.

Setelah Anda selesai mengonfigurasi, mulailah layanan HAProxy:

sudo service haproxy start

Menguji Load-Balancing dan Fail-over

Kami akan menambahkan nama server di kedua file index.html default yang terletak secara default di /var/www/index.html

Pada Instance 2 - Web Server 1 (webserver01 dengan IP-192.168.205.16), tambahkan baris di bawah ini sebagai:

sudo sh -c "echo \<h1\>Hostname: webserver01 \(192.168.205.16\)\<\/h1\> >> /var/www/index.html"

Pada Instance 3 - Web Server 2 (webserver02 dengan IP-192.168.205.17), tambahkan baris di bawah ini sebagai:

sudo sh -c "echo \<h1\>Hostname: webserver02 \(192.168.205.17\)\<\/h1\> >> /var/www/index.html"

Sekarang buka browser web di mesin lokal dan telusuri IP haproxy yaitu http://192.168.205.15

Setiap kali Anda me-refresh tab, Anda akan melihat beban sedang didistribusikan ke setiap server web. Di bawah ini adalah screenshot dari browser saya:

Pertama kali saya mengunjungi http://192.168.205.15 , saya mendapatkan:

Dan untuk kedua kalinya, yaitu ketika saya me-refresh halaman, saya mendapatkan:

Anda juga dapat memeriksa statistik haproxy dengan mengunjungi http://192.168.205.15/haproxy?stats

Masih banyak lagi yang dapat Anda lakukan untuk pengaturan ini. Beberapa ide meliputi:

  • jadikan satu atau kedua server web offline untuk menguji apa yang terjadi saat Anda mengakses HAProxy
  • konfigurasi HAProxy untuk menyajikan halaman pemeliharaan khusus
  • mengonfigurasi antarmuka web sehingga Anda dapat memantau statistik HAProxy secara visual
  • ubah penjadwal menjadi selain round-robin
  • mengonfigurasi prioritas/bobot untuk server tertentu

Itu saja!


Ubuntu
  1. Pengaturan server awal dengan Ubuntu 14.04

  2. Cara Menginstal Server Web Cherokee Dengan PHP5 Dan MySQL Di Ubuntu 11.04

  3. Instal server web Apache di Ubuntu 12.10

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

  2. Cara Instal Caddy Web Server dengan PHP-FPM di Ubuntu 16.04

  3. Menyiapkan Server Web Ubuntu?

  1. Pemantauan Server dengan Shinken di Ubuntu 16.04

  2. Pemantauan Server dengan OpenNMS di Ubuntu 16.04

  3. Cara Menginstal OpenLiteSpeed ​​Web Server di Ubuntu 20.04