Cara Mengatur Haproxy Sebagai Penyeimbang Beban untuk Nginx di Centos 8

Cara Mengatur Haproxy Sebagai Penyeimbang Beban untuk Nginx di Centos 8

Untuk memastikan ketersediaan aplikasi web maksimum, skalabilitas, dan kinerja tinggi, sekarang umum untuk mengimplementasikan teknologi yang memperkenalkan redundansi, seperti pengelompokan server dan penyeimbangan beban. Misalnya, menyiapkan sekelompok server yang semuanya menjalankan aplikasi yang sama dan kemudian menggunakan penyeimbang beban di depan mereka untuk mendistribusikan lalu lintas.

Haproxy adalah ketersediaan tinggi open-source, kuat, berkinerja tinggi, andal TCP/HTTP Load Balancer, Proxy Server dan Terminator SSL/TLS Dibangun untuk Situs Web Lalu Lintas yang Sangat Tinggi. Itu berjalan dengan baik Linux, Solaris, Freebsd, OpenBSD serta sistem operasi AIX.

Panduan ini menunjukkan cara mengatur penyeimbang beban ketersediaan tinggi khusus Haproxy pada Centos 8 untuk mengontrol lalu lintas di sekelompok Nginx server web. Itu juga menunjukkan cara mengkonfigurasi SSL/TLS penghentian di Haproxy.

Prasyarat:

Sebanyak 4 server dengan instalasi Centos 8 minimal.

Pengaturan Lingkungan Uji

----------- Pengaturan Server Haproxy ----------- HA Proxy Server - HostName: 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.200 Server Web #2 - Nama Host: Websrv2.tecmint.lan; IP: 10.42.0.21 Web Server #3 - HostName: WebSrv3.tecmint.lan; IP: 10.42.0.34 

Langkah 1: Menyiapkan Server Nginx HTTP pada mesin klien

1. Masuk ke semua Centos 8 mesin klien dan instal Nginx server web menggunakan manajer paket DNF seperti yang ditunjukkan.

# DNF Instal Nginx 

2. Selanjutnya, mulailah Nginx Layanan, untuk saat ini, mengaktifkannya untuk secara otomatis mulai dari boot sistem dan mengkonfirmasi bahwa itu sudah habis dan berjalan dengan memeriksa statusnya, menggunakan perintah SystemCTL (lakukan ini pada semua mesin klien).

# Systemctl Mulai 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 memungkinkan permintaan dari load balancer melewati firewall ke Nginx server web. Lalu muat ulang Firewalld Layanan untuk mempengaruhi 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 --eload 

4. Selanjutnya, buka browser web di mesin lokal Anda dan uji jika Nginx Instalasi berfungsi dengan baik. Gunakan IP klien untuk menavigasi, setelah Anda melihat Nginx Halaman uji, itu berarti bahwa 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 uji pada mesin klien yang akan kita gunakan nanti untuk menguji Haproxy mempersiapkan.

----------- 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: Menginstal dan Mengkonfigurasi Haproxy Server di CentOS 8

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

# DNF Instal Haproxy 

7. Selanjutnya, mulailah Haproxy layanan, aktifkan untuk memulai secara otomatis di boot sistem dan memverifikasi statusnya.

# Systemctl Mulai Haproxy # Systemctl Aktifkan Haproxy # Systemctl Status Haproxy 
Verifikasi Status Haproxy di Centos 8

8. Sekarang kami akan mengonfigurasi Haproxy menggunakan file konfigurasi berikut.

# vi/etc/haproxy/haproxy.CFG 

File konfigurasi dibagi menjadi empat bagian utama.

  • pengaturan global - Menetapkan parameter proses-lebar.
  • default - Bagian ini menetapkan parameter default untuk semua bagian lainnya setelah deklarasi.
  • paling depan - Bagian ini menjelaskan satu set soket mendengarkan yang menerima koneksi klien.
  • Backend - Bagian ini menjelaskan satu set server di mana proxy akan terhubung untuk meneruskan koneksi yang masuk.

Untuk memahami opsi di bawah pengaturan global Dan default, Baca dokumentasi Haproxy (tautan yang disediakan di akhir artikel). Untuk panduan ini, kami akan menggunakan default.

Menyiapkan Haproxy Logging

9. Haproxy Ketika sekali digunakan akan memainkan peran penting dalam infrastruktur TI Anda, sehingga mengkonfigurasi penebangan untuk TI adalah persyaratan dasar; Ini memungkinkan Anda untuk mendapatkan wawasan tentang setiap koneksi ke server web backend Anda.

Itu Parameter log (disorot dalam tangkapan layar berikut) menyatakan global Syslog server (seperti rsyslog default di centos) yang akan menerima pesan log. Lebih dari satu server dapat dinyatakan di sini.

Konfigurasi default menunjuk ke localhost (127.0.0.1) Dan local2 adalah kode fasilitas default yang digunakan untuk mengidentifikasi pesan log Huraproxy 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 di 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 keparahan, di mana local2 adalah kode fasilitas yang didefinisikan dalam konfigurasi HAProxy di atas.

local2.*/var/log/haproxy-traffic.Log Local2.pemberitahuan/var/log/haproxy-admin.catatan 

11. Simpan file dan tutup. Lalu restart rsyslog Layanan untuk menerapkan perubahan terbaru.

# Systemctl restart rsyslog 

Mengkonfigurasi Haproxy Front-End dan Back-End

12. Di bagian ini, kami akan menunjukkan cara mengkonfigurasi proxy front-end dan back-end. Kembali ke Haproxy file konfigurasi dan memodifikasi bagian front-end dan backend default sebagai berikut. Kami tidak akan masuk ke penjelasan terperinci dari setiap parameter, Anda selalu dapat merujuk pada dokumentasi resmi.

Konfigurasi berikut mendefinisikan a mendengarkan Bagian digunakan untuk menyajikan Statistik Haproxy halaman. Itu mengikat Parameter menugaskan pendengar ke alamat IP yang diberikan (* untuk semua dalam kasus ini) dan pelabuhan (9000).

Statistik memungkinkan Pengaturan Mengaktifkan Halaman Statistik yang akan diakses menggunakan URI /Statistik (Saya.e http: // server_ip: 9000/statistik).

Statistik auth Pengaturan digunakan untuk menambahkan otentikasi dasar saat mengakses halaman (ganti Haproxy Dan [Email dilindungi] dengan nama pengguna dan kata sandi pilihan Anda).

Dengarkan Stats Bind *: 9000 Stats Mengaktifkan Statistik Sembunyikan Statistik URI /Stat Statistik Admin Jika Localhost Stats Auth Haphoxy: [Email Dilindungi] 

13. Konfigurasi berikutnya mendefinisikan bagian frontend yang disebut Tl (Anda dapat memberikan nama yang Anda sukai). Itu mode Parameter mendefinisikan mode Haproxy beroperasi di.

Itu ACL Parameter (Daftar Kontrol Akses) digunakan untuk membuat keputusan berdasarkan konten yang diekstraksi dari permintaan. Dalam contoh ini, permintaan dianggap jelas Http Jika tidak dibuat SSL.

Lalu http-request set-header Pengaturan digunakan untuk menambahkan header HTTP ke permintaan. Ini membantu memberi informasi Nginx bahwa permintaan awal dibuat Http (atau melalui port 80).

Itu default_backend atau use_backend Petunjuk mendefinisikan server backend, dalam hal ini, dirujuk oleh TL_WEB_SERVERS.

Perhatikan itu Haproxy akan mengembalikan A “503 Layanan Kesalahan yang tidak tersedia"Jika permintaan tidak dialihkan oleh a use_backend atau default_backend pengarahan.

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_server 

14. Maka kita perlu mendefinisikan bagian backend di mana keseimbangan Pengaturan mendefinisikan caranya Haproxy memilih server back-end untuk memproses permintaan jika tidak ada metode persistensi menimpa pemilihan itu.

Itu Kue kering Petunjuk Mengaktifkan berbasis kue Kegigihan, itu menginstruksikan Haproxy untuk mengirim cookie bernama Serverid ke klien dan mengaitkannya dengan PENGENAL dari server yang memberikan respons awal.

Itu server Petunjuk digunakan untuk mendefinisikan server hulu dalam format Sever_name (e.G Websrv1), server_ip: port Dan pilihan.

Salah satu opsi utama adalah memeriksa yang memberi tahu Haproxy untuk terus memeriksa ketersediaan server dan melaporkan di halaman statistik.

Backend TL_WEB_SERVERS MODE HTTP Opsi Saldo RoundRobin HTTPCHK HEAD / COBERIE SERVERUID INSERT NOCACHE NOCACHE NOCACHE 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 Websrv3 Periksa 

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

Mengkonfigurasi Haproxy Front-End dan Back-End

15. Sekarang restart Haproxy Layanan untuk menerapkan perubahan baru.

# Systemctl restart haproxy 

16. Selanjutnya, pastikan bahwa Http (pelabuhan 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 kembali pengaturan firewall.

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

Langkah 3: Menguji Pengaturan Haproxy dan Melihat Statistik

17. Sekarang waktunya untuk menguji Haprxoy mempersiapkan. Pada mesin desktop lokal tempat Anda mengakses semua server, tambahkan baris berikut di /etc/host 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/atau http: // www.tecmint.LAN/ 
Periksa Pengaturan Haproxy

19. Untuk mengakses Haproxy Halaman statistik, gunakan alamat berikut.

http: // 10.42.0.247: 9000/statistik 

Kemudian gunakan nama pengguna dan kata sandi yang Anda tentukan dalam file konfigurasi Haproxy (lihat Parameter Auth Stats).

Halaman login statistik haproxy

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

Untuk menunjukkan bagaimana laporan status bekerja mengenai kode warna bekerja, kami telah menempatkan salah satu server back-end.

Laporan Statistik Haproxy

Langkah 4: Mengkonfigurasi HTTPS di Haproxy menggunakan sertifikat SSL yang ditandatangani sendiri

20. Di bagian terakhir ini, kami akan menunjukkan cara mengkonfigurasi SSL/TLS untuk mengamankan semua komunikasi antara server Haproxy dan klien. Haproxy mendukung empat mayor Https mode konfigurasi, tetapi untuk panduan ini, kami akan menggunakan SSL/TLS Menurunkan.

Di dalam SSL/TLS mode offloading, Haproxy Mengurangi lalu lintas di sisi klien dan terhubung dalam lalu lintas yang jelas ke server backend.

Kami akan mulai dengan membuat sertifikat Dan kunci Seperti yang ditunjukkan (jawab pertanyaan yang sesuai berdasarkan rincian 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.kunci -out/etc/ssl/tecmint.lan.CRT # CD/etc/ssl/tecmint.lan/ # kucing tecmint.crt tecmint.Kunci> 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.SKEME RERIRECT PEM HTTPS IF ! ssl_fc  mode http acl http ssl_fc,not acl https ssl_fc http-request set-header X-Forwarded-Protocol http if http http-request set-header X-Forwarded-Protocol https if 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.melayani 

23. Selanjutnya, buka browser web dan coba mengakses situs sekali lagi. Browser akan menunjukkan kesalahan karena sertifikat yang ditandatangani sendiri, klik Canggih untuk melanjutkan.

Kesalahan koneksi SSL Haproxy Lanjutkan dengan koneksi Akses situs melalui https

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

Untuk mendapatkan lebih banyak wawasan tentang beberapa opsi konfigurasi yang digunakan dalam panduan ini, dan umumnya cara menggunakan Haproxy, Lihat Dokumentasi Edisi Komunitas Haproxy Resmi atau Dokumentasi Versi Perusahaan Haproksi. Anda dapat memposting pertanyaan atau pemikiran apa pun melalui formulir umpan balik di bawah ini.