Cara Menyiapkan Haproxy Sebagai Pengimbang Beban untuk Nginx Pada CentOS 8

Cara Menyiapkan Haproxy Sebagai Pengimbang Beban untuk Nginx Pada CentOS 8

Untuk memastikan ketersediaan aplikasi web maksimum, skalabilitas, dan prestasi tinggi, kini biasa untuk melaksanakan teknologi yang memperkenalkan redundansi, seperti clustering pelayan dan mengimbangi beban. Sebagai contoh, menubuhkan sekumpulan pelayan yang semua menjalankan aplikasi yang sama dan kemudian menggunakan pengimbang beban di hadapan mereka untuk mengedarkan lalu lintas.

Haproxy adalah sumber terbuka, kuat, tinggi, dipercayai, selamat dan digunakan secara meluas TCP/HTTP beban pengimbang, pelayan proksi dan terminator ssl/tls dibina untuk laman web trafik yang sangat tinggi. Ia berjalan lancar Linux, Solaris, FreeBSD, OpenBSD serta sistem operasi AIX.

Panduan ini menunjukkan cara menyediakan pengimbang beban ketersediaan tinggi yang berdedikasi dengan Haproxy pada Centos 8 untuk mengawal lalu lintas dalam kumpulan Nginx pelayan web. Ia juga menunjukkan cara mengkonfigurasi SSL/TLS penamatan dalam Haproxy.

Prasyarat:

Sejumlah 4 pelayan dengan pemasangan CentOS 8 yang minimum.

Persediaan Persekitaran Ujian

----------- Persediaan pelayan Haproxy ----------- HA Proxy Server - Nama Host: Haproxy -Server.Tecmint.LAN; IP: 10.42.0.247 Domain Tapak Ujian: www.Tecmint.lan ----------- Persediaan Pelayan Web Pelanggan ----------- Pelayan Web #1 - Nama Host: WebSRV1.Tecmint.LAN; IP: 10.42.0.200 Web Server #2 - Nama Host: WebSRV2.Tecmint.LAN; IP: 10.42.0.21 Web Server #3 - Nama Host: WebSRV3.Tecmint.LAN; IP: 10.42.0.34 

Langkah 1: Menyediakan pelayan http nginx pada mesin klien

1. Log masuk ke semua anda Centos 8 mesin pelanggan dan pasang Nginx Pelayan Web menggunakan Pengurus Pakej DNF seperti yang ditunjukkan.

# DNF memasang nginx 

2. Seterusnya, mulakan Nginx Perkhidmatan, buat masa ini, membolehkannya bermula secara automatik pada boot System dan mengesahkan bahawa ia sudah selesai dan berjalan dengan menyemak statusnya, menggunakan arahan SystemCTL (lakukan ini pada semua mesin klien).

# Systemctl Mula Nginx # Systemctl Dayakan Nginx # Systemctl Status Nginx 

3. Juga, jika perkhidmatan firewalld berjalan pada semua mesin klien (yang boleh anda periksa dengan menjalankan sistem firewalld), anda mesti menambah Http dan Https perkhidmatan dalam konfigurasi firewall untuk membolehkan permintaan dari pengimbang beban melalui firewall ke Nginx pelayan web. Kemudian muat semula Firewalld perkhidmatan untuk melaksanakan 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. Seterusnya, buka penyemak imbas web di mesin tempatan anda dan uji jika Nginx Pemasangan berfungsi dengan baik. Gunakan IP pelanggan untuk menavigasi, setelah anda melihat Nginx halaman ujian, ini bermakna pelayan web dipasang pada mesin klien berfungsi dengan betul.

Ujian Pemasangan Nginx pada semua mesin pelanggan CentOS 8

5. Seterusnya, kita perlu membuat halaman ujian pada mesin klien yang akan kami gunakan kemudian untuk menguji Haproxy Persediaan.

----------- Pelayan Web #1 ----------- # cp/usr/share/nginx/html/index.html/usr/share/nginx/html/index.html.orig # echo "Menunjukkan laman web dari WebSRV1.Tecmint.lan ">/usr/share/nginx/html/index.html ----------- Pelayan Web #2 ----------- # cp/usr/share/nginx/html/index.html/usr/share/nginx/html/index.html.orig # echo "Menunjukkan laman web dari WebSRV2.Tecmint.lan ">/usr/share/nginx/html/index.html ----------- Pelayan Web #3 ----------- # cp/usr/share/nginx/html/index.html/usr/share/nginx/html/index.html.orig # echo "Menunjukkan laman web dari WebSRV3.Tecmint.lan ">/usr/share/nginx/html/index.html 

Langkah 2: Memasang dan Mengkonfigurasi Server Haproxy di CentOS 8

6. Sekarang pasang Haproxy pakej pada Haproxy pelayan dengan menjalankan arahan berikut.

# DNF memasang haproxy 

7. Seterusnya, mulakan Haproxy perkhidmatan, membolehkannya untuk memulakan automatik pada boot sistem dan mengesahkan statusnya.

# Systemctl Mula Haproxy # Systemctl Dayakan HAPROXY # Systemctl Status HAPROXY 
Sahkan Status Hamproxy di CentOS 8

8. Sekarang kita akan mengkonfigurasi haproxy menggunakan fail konfigurasi berikut.

# vi/etc/haproxy/haproxy.cfg 

Fail konfigurasi dibahagikan kepada empat bahagian utama.

  • tetapan global - Menetapkan parameter seluruh proses.
  • lalai - Bahagian ini menetapkan parameter lalai untuk semua bahagian lain berikutan perisytiharannya.
  • Frontend - Bahagian ini menerangkan satu set soket mendengar yang menerima sambungan pelanggan.
  • Backend - Bahagian ini menerangkan satu set pelayan yang akan disambungkan ke hadapan untuk meneruskan sambungan masuk.

Untuk memahami pilihan di bawah tetapan global dan lalai, Baca Dokumentasi Haproxy (pautan yang disediakan pada akhir artikel). Untuk panduan ini, kami akan menggunakan lalai.

Menyediakan pembalakan haproksi

9. Haproxy Apabila pernah digunakan akan memainkan peranan penting dalam infrastruktur IT anda, dengan itu mengkonfigurasi pembalakan untuk IT adalah keperluan asas; Ini membolehkan anda mendapatkan pandangan tentang setiap sambungan ke pelayan web backend anda.

The parameter log (diserlahkan dalam tangkapan skrin berikut) Mengisytiharkan global Syslog pelayan (seperti rsyslog lalai di centOS) yang akan menerima mesej log. Lebih dari satu pelayan dapat diisytiharkan di sini.

Konfigurasi lalai menunjuk ke localhost (127.0.0.1) dan tempatan2 adalah kod kemudahan lalai yang digunakan untuk mengenal pasti mesej log haproxy di bawah rsyslog.

Parameter log lalai haproxy

10. Seterusnya, anda perlu memberitahu rsyslog pelayan bagaimana menerima dan memproses Haproxy mesej log. Buka fail konfigurasi rsyslog ke /etc/rsyslog.Conf atau buat fail baru dalam /etc/rsyslog.d Direktori, sebagai contoh /etc/rsyslog.D/Haproxy.Conf.

# vi /etc /rsyslog.D/Haproxy.Conf 

Salin dan tampal konfigurasi berikut untuk mengumpul log dengan UDP di port lalai 514.

$ Modload IMUDP $ udpserveraddress 127.0.0.1 $ udpserverrun 514 

Tambah juga baris ini untuk mengarahkan rsyslog untuk menulis kepada dua fail log berasingan berdasarkan keterukan, di mana tempatan2 adalah kod kemudahan yang ditakrifkan dalam konfigurasi haproxy di atas.

tempatan2.*/var/log/haproxy-traffic.log local2.notis/var/log/haproxy-admin.log 

11. Simpan fail dan tutupnya. Kemudian mulakan semula rsyslog perkhidmatan untuk menerapkan perubahan baru -baru ini.

# Systemctl mulakan semula rsyslog 

Mengkonfigurasi depan dan back-ends Hamproxy

12. Dalam bahagian ini, kami akan menunjukkan cara mengkonfigurasi proksi depan dan belakang. Kembali ke Haproxy fail konfigurasi dan ubah bahagian depan lalai dan bahagian backend seperti berikut. Kami tidak akan membuat penjelasan terperinci mengenai setiap parameter, anda boleh merujuk kepada dokumentasi rasmi.

Konfigurasi berikut mentakrifkan a Dengarkan bahagian yang digunakan untuk melayani Statistik Haproxy halaman. The mengikat Parameter memberikan pendengar kepada alamat IP yang diberikan (* untuk semua dalam kes ini) dan pelabuhan (9000).

Statistik membolehkan tetapan membolehkan halaman statistik yang akan diakses menggunakan Uri /statistik (i.e http: // server_ip: 9000/statistik).

Statistik auth Tetapan digunakan untuk menambah pengesahan asas semasa mengakses halaman (ganti Haproxy dan [dilindungi e -mel] dengan nama pengguna dan kata laluan pilihan anda).

Dengarkan Statistik Bind *: 9000 Statistik Membolehkan Statistik Statistik Hide-Stats URI /Stats Stats Admin Jika Statistik Localhost Auth Haproxy: [E-mel dilindungi] 

13. Konfigurasi seterusnya mentakrifkan bahagian frontend yang dipanggil Tl (Anda boleh memberikan nama keinginan anda). The mod Parameter mentakrifkan mod haproxy beroperasi di.

The ACL (Senarai Kawalan Akses) Parameter digunakan untuk membuat keputusan berdasarkan kandungan yang diekstrak dari permintaan. Dalam contoh ini, permintaan itu dianggap jelas Http Sekiranya ia tidak dibuat SSL.

Kemudian HTTP-Request Set-Header Tetapan digunakan untuk menambah header HTTP ke permintaan. Ini membantu memaklumkan Nginx bahawa permintaan awal dibuat berakhir Http (atau melalui port 80).

The default_backend atau use_backend Arahan mentakrifkan pelayan backend, dalam kes ini, yang dirujuk oleh TL_WEB_SERVERS.

Perhatikan bahawa Haproxy akan mengembalikan "503 perkhidmatan tidak tersedia"Sekiranya permintaan tidak dialihkan oleh a use_backend atau default_backend arahan.

Frontend TL Bind *: 80 mod 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 menentukan bahagian backend di mana seimbang Tetapan mentakrifkan bagaimana Haproxy Memilih pelayan back-end untuk memproses permintaan jika tiada kaedah ketekunan mengatasi pemilihan itu.

The Cookie Arahan membolehkan berasaskan cookie kegigihan, ia mengarahkan Haproxy Untuk menghantar kuki bernama ServerID kepada pelanggan dan mengaitkannya dengan ID pelayan yang memberikan respons awal.

The pelayan Arahan digunakan untuk menentukan pelayan hulu dalam format Sever_name (e.g WebSRV1), server_ip: port dan pilihan.

Satu pilihan utama ialah periksa yang memberitahu Haproxy Untuk terus memeriksa ketersediaan pelayan dan laporkan pada halaman statistik.

backend tl_web_servers mod http baki roundrobin pilihan httpchk kepala / cookie serveruid memasukkan pelayan nocache tidak langsung websrv1 10.42.0.200: 80 Cookie WebSRV1 Semak Server WebSRV2 10.42.0.21:80 Cookie WebSRV2 Semak Server WebSRV3 10.42.0.34:80 Cookie WebSRV3 Cek 

Komen mana -mana bahagian frontend dan backend lain seperti yang ditunjukkan dalam tangkapan skrin yang berikut. Simpan fail dan tutupnya.

Mengkonfigurasi depan dan back-ends Hamproxy

15. Sekarang mulakan semula Haproxy perkhidmatan untuk menerapkan perubahan baru.

# Systemctl mulakan semula haproxy 

16. Seterusnya, pastikan bahawa Http (port 80) dan Https (port 433) Perkhidmatan dibuka di firewall untuk menerima permintaan pelanggan seperti berikut. Juga, Buka Pelabuhan 9000 di firewall untuk mengakses halaman statistik dan memuatkan semula tetapan firewall.

# firewall-cmd --Zone = public --PerManent --Add-Service = http # firewall-cmd --Zone = public --permanent -add-service = https # firewall-cmd-zone = public --permanent- -Add-port = 9000/TCP # Firewall-CMD-Reload 

Langkah 3: Menguji persediaan HAPROXY dan Statistik Melihat

17. Sekarang masanya untuk menguji Haprxoy Persediaan. Di mesin desktop tempatan di mana anda mengakses semua pelayan dari, tambahkan baris berikut di /etc/hos fail untuk membolehkan kami menggunakan domain tapak dummy.

10.42.0.247 www.Tecmint.lan 

18. Kemudian buka penyemak imbas dan navigasi menggunakan alamat pelayan atau domain laman web.

http: // 10.42.0.247/atau http: // www.Tecmint.lan/ 
Semak persediaan Haproxy

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

http: // 10.42.0.247: 9000/statistik 

Kemudian gunakan nama pengguna dan kata laluan yang anda tentukan dalam fail konfigurasi HAPROXY (rujuk parameter Auth Stats).

Halaman log masuk statistik haproxy

Setelah log masuk yang berjaya, anda akan mendarat di Haproxy Halaman Statistik yang menunjukkan kepada anda metrik yang meliputi kesihatan pelayan anda, kadar permintaan semasa, masa tindak balas, dan banyak lagi.

Untuk menunjukkan bagaimana laporan status berfungsi mengenai kod warna berfungsi, kami telah meletakkan salah satu pelayan back-end.

Laporan Statistik Haproxy

Langkah 4: Mengkonfigurasi HTTPS dalam HAPROXY menggunakan sijil SSL yang ditandatangani sendiri

20. Di bahagian akhir ini, kami akan menunjukkan cara mengkonfigurasi SSL/TLS Untuk menjamin semua komunikasi antara pelayan dan klien haproxy. Haproxy menyokong empat Major Https mod konfigurasi, tetapi untuk panduan ini, kami akan menggunakan SSL/TLS Muat turun.

Dalam SSL/TLS mod offloading, Haproxy menetapkan semula lalu lintas di sisi pelanggan dan disambungkan dalam trafik yang jelas ke pelayan backend.

Kita akan mulakan dengan membuat sijil dan kunci seperti yang ditunjukkan (jawab soalan dengan sewajarnya berdasarkan butiran syarikat anda semasa penciptaan sijil, seperti yang diserlahkan pada tangkapan skrin).

# 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/ # CAT TECMINT.CRT TECMINT.KEY> TECMINT.pem # ls -l 
Buat SSL untuk HAPROXY

21. Seterusnya, buka Haproxy fail konfigurasi (/etc/haproxy/haproxy.cfg) dan edit bahagian depan.

Frontend TL Bind *: 80 Bind *: 443 SSL CRT/ETC/SSL/TECMINT.lan/tecmint.PEM Redirect Skim HTTPS Jika !ssl_fc mod http acl http ssl_fc, bukan acl https ssl_fc http-request-request-header x-forward-protocol http if http http-request-header x-forwer-protocol htssps-protocol htsps-protocol htsps-protocol htsps-protocol htsps-protocol htsps-protocol htssds-htsps-htsps-protocol htsps htsps htsps-tts 
Konfigurasikan depan hampreky dengan SSL

Simpan fail dan tutupnya.

22. Kemudian mulakan semula perkhidmatan haproxy untuk menerapkan perubahan baru.

# Systemctl mulakan semula haproxy.perkhidmatan 

23. Seterusnya, buka pelayar web dan cuba mengakses laman web ini sekali lagi. Penyemak imbas akan menunjukkan ralat kerana sijil yang ditandatangani sendiri, klik Lanjutan untuk meneruskan.

Kesalahan sambungan SSL Haproxy Teruskan dengan sambungan Laman Access Over HTTPS

Itu sahaja buat masa ini! Setiap aplikasi web mempunyai keperluan sendiri, anda perlu merancang dan mengkonfigurasi pengimbangan beban untuk memenuhi keperluan infrastruktur dan aplikasi anda.

Untuk mendapatkan lebih banyak pandangan mengenai beberapa pilihan konfigurasi yang digunakan dalam panduan ini, dan secara amnya cara menggunakan Haproxy, Lihat dokumentasi edisi komuniti HAPOXY atau dokumentasi versi HAPROXY ENTERPRISE. Anda boleh menyiarkan sebarang pertanyaan atau pemikiran melalui borang maklum balas di bawah.