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

Cara Mengatur HAProxy sebagai Load Balancer untuk Nginx di CentOS 8

Untuk memastikan ketersediaan aplikasi web maksimum, skalabilitas, dan kinerja tinggi, sekarang umum untuk menerapkan teknologi yang memperkenalkan redundansi, seperti pengelompokan server dan penyeimbangan beban. Misalnya, menyiapkan kluster server yang semuanya menjalankan aplikasi yang sama, lalu menerapkan penyeimbang beban di depannya untuk mendistribusikan lalu lintas.

HAProxy adalah sumber terbuka, kuat, kinerja tinggi, andal, aman, dan ketersediaan tinggi TCP/HTTP yang banyak digunakan penyeimbang beban, server proxy, dan terminator SSL/TLS yang dibuat untuk situs web dengan lalu lintas sangat tinggi. Ini berjalan dengan baik di Linux , Solar , FreeBSD , OpenBSD serta sistem operasi AIX.

Panduan ini menunjukkan cara menyiapkan penyeimbang beban ketersediaan tinggi khusus dengan HAProxy di CentOS 8 untuk mengontrol lalu lintas dalam kluster NGINX server web. Ini juga menunjukkan cara mengonfigurasi SSL/TLS penghentian di HAProxy .

Prasyarat:

Total 4 server dengan minimal instalasi CentOS 8.

Pengujian Pengaturan Lingkungan

----------- Penyiapan Server HAProxy ------------ HA Proxy Server - nama host:haproxy-server.tecmint.lan; IP:10.42.0.247 Domain Situs Uji:www.tecmint.lan----------- Pengaturan Server Web Klien ----------- Server Web #1 - nama host:websrv1.tecmint.lan; IP:10.42.0.200Web Server #2 - nama host:websrv2.tecmint.lan; IP:10.42.0.21Web Server #3 - nama host:websrv3.tecmint.lan; IP:10.42.0.34

Langkah 1:Menyiapkan Server HTTP Nginx di Mesin Klien

1. Masuk ke semua CentOS 8 . Anda mesin klien dan instal Nginx server web menggunakan pengelola paket dnf seperti yang ditunjukkan.

# dnf instal Nginx

2. Selanjutnya, mulai Nginx service, untuk saat ini, aktifkan untuk memulai secara otomatis saat boot sistem dan konfirmasikan bahwa itu aktif dan berjalan dengan memeriksa statusnya, menggunakan perintah systemctl (lakukan ini di semua mesin klien).

# systemctl start nginx# systemctl aktifkan nginx# systemctl status nginx

3. Juga, jika layanan firewalld berjalan di semua mesin klien (yang dapat Anda periksa dengan menjalankan systemctl start firewalld), Anda harus menambahkan HTTP dan HTTPS layanan dalam konfigurasi firewall untuk mengizinkan permintaan dari penyeimbang beban melewati firewall ke Nginx server web. Kemudian muat ulang firewalld service untuk melakukan perubahan baru (lakukan ini pada semua mesin klien).

# firewall-cmd --zone=public --permanent --add-service=http# firewall-cmd --zone=public --permanent --add-service=https# firewall-cmd --reload 

4. Selanjutnya, buka browser web di komputer lokal Anda dan uji apakah Nginx instalasi bekerja dengan baik. Gunakan IP klien untuk menavigasi, setelah Anda melihat Nginx halaman pengujian, artinya server web yang diinstal pada mesin klien berfungsi dengan baik.

Uji Instalasi Nginx di Semua Mesin Klien CentOS 8

5. Selanjutnya, kita perlu membuat halaman pengujian pada mesin klien yang akan kita gunakan nanti untuk menguji HAProxy penyiapan.

----------- Server Web #1 ------------ # cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig# echo "Menampilkan situs dari websrv1.tecmint.lan"> /usr/share/nginx/html/ index.html----------- Server Web #2 ------------ # cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig# echo "Menampilkan situs dari websrv2.tecmint.lan"> /usr/share/nginx/html/ index.html----------- Server Web #3 ------------ # cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig# echo "Menampilkan situs dari websrv3.tecmint.lan"> /usr/share/nginx/html/ index.html

Langkah 2:Memasang dan Mengonfigurasi Server HAProxy di CentOS 8

6. Sekarang instal HAProxy paket di HAProxy server dengan menjalankan perintah berikut.

# dnf menginstal haproxy

7. Selanjutnya, mulai HAProxy service, aktifkan untuk memulai otomatis saat boot sistem dan verifikasi statusnya.

# systemctl start haproxy# systemctl aktifkan haproxy# systemctl status haproxy

Verifikasi Status HAProxy di CentOS 8

8. Sekarang kita akan mengkonfigurasi HAProxy menggunakan file konfigurasi berikut.

# vi /etc/haproxy/haproxy.cfg

File konfigurasi dibagi menjadi empat bagian utama.

  • setelan global – menetapkan parameter seluruh proses.
  • default – bagian ini menetapkan parameter default untuk semua bagian lain setelah deklarasinya.
  • tampilan depan – bagian ini menjelaskan sekumpulan soket pendengar yang menerima koneksi klien.
  • Latar Belakang – bagian ini menjelaskan sekumpulan server yang akan disambungkan oleh proxy untuk meneruskan koneksi masuk.

Untuk memahami opsi di bawah setelan global dan default , baca dokumentasi HAProxy (tautan tersedia di akhir artikel). Untuk panduan ini, kami akan menggunakan default.

Menyiapkan Pencatatan HAProxy

9. HAProxy ketika digunakan akan memainkan peran penting dalam infrastruktur TI Anda, sehingga mengonfigurasi logging untuk itu adalah persyaratan dasar; ini memungkinkan Anda mendapatkan wawasan tentang setiap koneksi ke server web backend Anda.

Parameter log (disorot pada tangkapan layar berikut) mendeklarasikan Syslog global global server (seperti rsyslog default di CentOS) yang akan menerima pesan log. Lebih dari satu server dapat dideklarasikan di sini.

Konfigurasi default menunjuk ke localhost (127.0.0.1 ) dan local2 adalah kode fasilitas default yang digunakan untuk mengidentifikasi pesan log HAProxy di bawah rsyslog .

Parameter Log Default HAProxy

10. Selanjutnya, Anda perlu memberi tahu rsyslog server cara menerima dan memproses HAProxy pesan log. Buka file konfigurasi rsyslog ke /etc/rsyslog.conf atau buat file baru di dalam /etc/rsyslog.d direktori, misalnya /etc/rsyslog.d/haproxy.conf .

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

Salin dan tempel konfigurasi berikut untuk mengumpulkan log dengan UDP pada port default 514 .

$ModLoad imudp $UDPServerAddress 127.0.0.1 $UDPServerRun 514 

Tambahkan juga baris ini untuk menginstruksikan rsyslog untuk menulis ke dua file log terpisah berdasarkan tingkat keparahannya, di mana local2 adalah kode fasilitas yang didefinisikan dalam konfigurasi HAProxy di atas.

local2.* /var/log/haproxy-traffic.log local2.notice /var/log/haproxy-admin.log

11. Simpan file dan tutup. Kemudian mulai ulang rsyslog layanan untuk menerapkan perubahan terbaru.

# systemctl restart rsyslog

Mengonfigurasi HAProxy Front-end dan Back-ends

12. Di bagian ini, kami akan mendemonstrasikan cara mengkonfigurasi proxy front-end dan back-end. Kembali ke HAProxy file konfigurasi dan ubah bagian front-end dan backend default sebagai berikut. Kami tidak akan memberikan penjelasan rinci tentang setiap parameter, Anda selalu dapat merujuk ke dokumentasi resmi.

Konfigurasi berikut mendefinisikan mendengarkan bagian yang digunakan untuk menyajikan HAProxy Stats halaman. mengikat parameter menetapkan pendengar ke alamat IP yang diberikan (* untuk semua dalam kasus ini) dan port (9000 ).

Statistik mengaktifkan pengaturan mengaktifkan halaman statistik yang akan diakses menggunakan URI /stats (yaitu http://server_ip:9000/stats ).

Statistik auth pengaturan digunakan untuk menambahkan otentikasi dasar saat mengakses halaman (ganti haproxy dan [dilindungi email] dengan nama pengguna dan kata sandi pilihan Anda).

dengarkan stats bind *:9000 stats aktifkan stats hide-version stats uri /stats stats admin jika LOCALHOST stats auth haproxy:[email protected]

13. Konfigurasi berikutnya mendefinisikan bagian frontend yang disebut TL (anda dapat memberikan nama sesuai dengan keinginan anda). Mode parameter mendefinisikan mode operasi HAProxy.

acl Parameter (Access Control List) digunakan untuk membuat keputusan berdasarkan konten yang diekstraksi dari permintaan. Dalam contoh ini, permintaan dianggap sebagai HTTP biasa jika tidak dibuat melalui SSL .

Kemudian http-request set-header pengaturan digunakan untuk menambahkan header HTTP ke permintaan. Ini membantu menginformasikan Nginx bahwa permintaan awal dibuat melalui HTTP (atau melalui port 80 ).

default_backend atau gunakan_backend direktif mendefinisikan server backend, dalam hal ini, direferensikan oleh TL_web_servers .

Perhatikan bahwa HAProxy akan mengembalikan “kesalahan 503 Layanan Tidak Tersedia ” jika permintaan tidak dirutekan oleh use_backend atau default_backend arahan.

frontend TL bind *:80 mode http acl http ssl_fc,bukan http-request set-header X-Forwarded-Protocol http jika http default_backend TL_web_servers

14. Kemudian kita perlu mendefinisikan bagian backend di mana saldo pengaturan mendefinisikan bagaimana HAProxy memilih server back-end untuk memproses permintaan jika tidak ada metode persistensi yang menggantikan pilihan itu.

Kue direktif mengaktifkan berbasis cookie ketekunan, itu menginstruksikan HAProxy untuk mengirim cookie bernama SERVERID ke klien dan mengaitkannya dengan ID dari server yang memberikan respons awal.

Server direktif digunakan untuk mendefinisikan server upstream dalam format sever_name (mis. websrv1 ), server_IP:port dan opsi .

Salah satu opsi kuncinya adalah centang yang memberi tahu HAProxy untuk terus memeriksa ketersediaan server dan melaporkan di halaman statistik.

mode backend TL_web_servers http keseimbangan opsi roundrobin httpchk HEAD / cookie SERVERUID menyisipkan server nocache tidak langsung websrv1 10.42.0.200:80 cookie websrv1 periksa server websrv2 10.42.0.21:80 cookie websrv2 periksa server websrv3 10.42.0.34:80 cookie periksa websrv3 pra> 

Komentari bagian frontend dan backend lainnya seperti yang ditunjukkan pada tangkapan layar berikut. Simpan file dan tutup.

Mengonfigurasi HAProxy Front-end dan Back-end

15. Sekarang mulai ulang HAProxy layanan untuk menerapkan perubahan baru.

# systemctl restart haproxy

16. Selanjutnya, pastikan bahwa HTTP (port 80 ) dan HTTPS (pelabuhan 433 ) layanan dibuka di firewall untuk menerima permintaan klien sebagai berikut. Juga, buka port 9000 di firewall untuk mengakses halaman statistik dan memuat ulang pengaturan firewall.

# firewall-cmd --zone=public --permanent --add-service=http# firewall-cmd --zone=public --permanent –add-service=https# firewall-cmd --zone=public - -permanen --add-port=9000/tcp# firewall-cmd --reload

Langkah 3:Menguji Penyiapan HAProxy dan Melihat Statistik

17. Sekarang waktunya untuk menguji HAPrxoy mendirikan. Pada mesin desktop lokal tempat Anda mengakses semua server, tambahkan baris berikut di /etc/hosts file untuk memungkinkan kami menggunakan domain situs dummy.

10.42.0.247 www.tecmint.lan

18. Kemudian buka browser dan navigasikan menggunakan alamat server atau domain situs.

http://10.42.0.247/ORhttp://www.tecmint.lan/

Periksa Pengaturan HAProxy

19. Untuk mengakses HAProxy halaman statistik, gunakan alamat berikut.

http://10.42.0.247:9000/stats

Kemudian gunakan nama pengguna dan sandi yang Anda tentukan di file konfigurasi HAProxy (lihat parameter auth stats).

Halaman Login Statistik HAProxy

Setelah login berhasil, Anda akan mendarat di HAProxy halaman statistik yang menunjukkan metrik yang mencakup kesehatan server Anda, tingkat permintaan saat ini, waktu respons, dan banyak lagi.

Untuk mendemonstrasikan cara kerja laporan status terkait kode warna, kami telah menempatkan salah satu server back-end.

Laporan Statistik HAProxy

Langkah 4:Mengonfigurasi HTTPS di HAProxy Menggunakan Sertifikat SSL yang ditandatangani sendiri

20. Di bagian terakhir ini, kami akan mendemonstrasikan cara mengonfigurasi SSL/TLS untuk mengamankan semua komunikasi antara server HAProxy dan klien. HAProxy mendukung empat HTTPS utama mode konfigurasi, tetapi untuk panduan ini, kami akan menggunakan SSL/TLS pembongkaran.

Di SSL/TLS mode pembongkaran, HAProxy menguraikan lalu lintas di sisi klien dan terhubung dalam lalu lintas yang jelas ke server backend.

Kita akan mulai dengan membuat sertifikat dan kunci seperti yang ditunjukkan (jawab pertanyaan sesuai dengan detail perusahaan Anda selama pembuatan sertifikat, seperti yang disorot pada tangkapan layar).

# mkdir /etc/ssl/tecmint.lan# cd /etc/ssl/tecmint.lan/# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/tecmint.lan. key -out /etc/ssl/tecmint.lan.crt# cd /etc/ssl/tecmint.lan/# cat tecmint.crt tecmint.key>tecmint.pem# ls -l

Buat SSL untuk HAProxy

21. Selanjutnya, buka HAProxy file konfigurasi (/etc/haproxy/haproxy.cfg ) dan edit bagian front-end.

frontend TL bind *:80 bind *:443 ssl crt /etc/ssl/tecmint.lan/tecmint.pem skema pengalihan https jika !{ ssl_fc } mode http acl http ssl_fc,bukan acl https ssl_fc http-request set- header X-Forwarded-Protocol http jika http http-request set-header X-Forwarded-Protocol https jika https default_backend TL_web_servers

Konfigurasikan HAProxy Front-end dengan SSL

Simpan file dan tutup.

22. Kemudian restart layanan HAProxy untuk menerapkan perubahan baru.

# systemctl restart haproxy.service

23. Selanjutnya, buka browser web dan coba akses situs sekali lagi. Browser akan menampilkan kesalahan karena sertifikat yang ditandatangani sendiri, klik Lanjutan untuk melanjutkan.

Kesalahan Koneksi SSL HAProxy

Lanjutkan dengan Koneksi

Akses Situs Melalui HTTPS

Itu saja untuk saat ini! Setiap aplikasi web memiliki serangkaian persyaratannya sendiri, Anda perlu merancang dan mengonfigurasi penyeimbangan beban agar sesuai dengan infrastruktur TI dan persyaratan aplikasi Anda.

Untuk mendapatkan lebih banyak wawasan tentang beberapa opsi konfigurasi yang digunakan dalam panduan ini, dan secara umum cara menggunakan HAProxy , lihat dokumentasi edisi komunitas HAProxy resmi atau dokumentasi versi perusahaan HAProxy. Anda dapat memposting pertanyaan atau pemikiran apa pun melalui formulir masukan di bawah.

Berbagi itu Peduli…
Berbagi di FacebookBerbagi di TwitterBerbagi di LinkedinBerbagi di Reddit
Cent OS
  1. Cara mengatur server SFTP di CentOS

  2. Cara Setup SysLog Server di CentOS 7 / RHEL 7

  3. Cara mengonfigurasi penyeimbang beban HAProxy

  1. Cara Setup Server NFS di CentOS 7 / RHEL 7

  2. Cara mengatur replikasi MySQL di CentOS

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

  1. Cara Menginstal Nginx di CentOS 8

  2. Cara Setup Server NFS di CentOS 8 / RHEL 8

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