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

Menggunakan HAProxy untuk Load Balancing di E2E Cloud:Menyiapkan Kebijakan Round-Robin

HAProxy adalah load-balancer open source dengan kinerja yang sangat mengesankan. Ini digunakan untuk front-end bahkan aplikasi web skala planet seperti Twitter. Ini dapat memuat aplikasi jaringan yang seimbang melalui TCP (Layer3) dan HTTP (Layer 7). Itu juga gagal atas permintaan ke instance server aktif saat diperlukan, dan karena itu menawarkan ketersediaan tinggi (HA).

E2E Networks menawarkan node khusus dengan daya komputasi yang sesuai untuk menjalankan penyeimbang beban performa tinggi seperti HAProxy. Node ini disebut node Virtual Load Balancer (VLB). Di blog ini kami akan menjelaskan cara mengatur HAProxy pada node Virtual Load Balancer di E2E Cloud. Kami akan menggunakan HAProxy di Layer 7, untuk frontend aplikasi PHP yang berjalan di Apache Web Server. Di bagian kedua dan penutup blog ini, kita akan menjalankan beberapa langkah tambahan yang harus dilakukan sebagian besar administrator situs web, di atas dan di atas pengaturan dasar. Langkah-langkah tambahan ini adalah:menerapkan kekakuan sesi, dan mengamankan akses ke situs web menggunakan SSL. Untuk sebagian besar, kedua blog ini mandiri dan bersama-sama, akan membantu administrator sistem menyiapkan HAProxy dengan lancar sebagai penyeimbang beban front-end untuk aplikasi web yang digunakan di E2E Cloud.

Pemasangan Dan Penyiapan Dasar

Meskipun fokus kami adalah pada HAProxy, kami akan mulai dengan pemasangan dua server web, yang permintaan HTTPnya dapat dirutekan. Setelah masuk ke Dasbor Jaringan E2E kami, kami mengikuti tautan ke 'Buat Node', dan pilih Ubuntu 16.04 distro dengan 1 CPU dan RAM 2GB . Biarkan Node Komputasi Virtual ini diberi nama ‘websrv1 '. Kemudian kami memunculkan node identik lainnya untuk menginstal instance server web kedua, bernama ‘websrv2 '. Pada setiap node web-server kami menginstal Apache 2.4 dan PHP, dengan menjalankan perintah berikut di terminal (setiap node web-server):

  1. apt-get update 
  2. apt-get install apache2 # install web server
  3. apt-get install php libapache2-mod-php php-mcrypt # php dan paket terkait
  4. systemctl aktifkan apache2 # aktifkan server web untuk memulai pada sistem reboot
  5. systemctl restart apache2 # restart server web
  6. systemctl status apache2 # periksa apakah server web aktif dan berjalan 

Untuk menguji bahwa instance server web dapat server PHP, kami akan membuat file PHP sederhana di root dokumen (direktori/var/www/html) pada setiap server web menggunakan editor vi :


         
           
               

Sambutan


              ; />                ?>
           
       

Sekarang, jika kita mengarahkan browser kita ke http:///greet.php , salam “Hello World” ini akan ditampilkan. Kita dapat mengganti alamat IP dari masing-masing node websrv1 dan websrv2 secara bergantian.

Jadi, kita siap untuk menginstal HAProxy ke frontend server web. Dari Dasbor Jaringan E2E kami, kami kembali membuat simpul, tetapi kali ini dari 'Alat'. Kami memilih alat tipe 'Load Balancing HAProxy'. Ada beberapa konfigurasi yang tersedia, di antaranya kami memilih VLB-B-1 (5 VPU dan RAM 4 GB) untuk instans HAProxy kami.

Gambar 1:Membuat Node Penyeimbang Beban Virtual

Node VLB di E2E Cloud adalah node komputasi yang kuat yang berjalan di CentOS 7. Untuk menginstal HAProxy pada setiap node ini, kami menjalankan perintah berikut di terminal:

  1. yum install haproxy # install HAProxy
  2. systemctl enable haproxy # aktifkan HAProxy untuk memulai pada sistem reboot
  3. systemctl restart haproxy # restart HAProxy
  4. systemctl status haproxy # periksa apakah HAProxy aktif dan berjalan 

Dalam penerapan kami, kami akan membutuhkan dua paket tambahan agar HAProxy berfungsi:syslog dan openssl. Karena node VLB (berjalan pada CentOS) sudah diinstal sebelumnya dengan dua paket ini, tidak ada langkah instalasi tambahan yang terlibat. Namun, kami memerlukan beberapa langkah konfigurasi untuk HAProxy bahkan sebelum load-balancing mulai bekerja.

Konfigurasi Generik HAProxy

File konfigurasi HAProxy terletak di /etc/haproxy/haproxy.cfg , dan dilengkapi dengan beberapa pengaturan yang tidak biasa, beberapa di antaranya mungkin harus diubah. File konfigurasi ini diharapkan memiliki setidaknya satu 'frontend' dan setidaknya satu 'backend' yang ditentukan. Setiap frontend load-balance ke satu atau lebih backend. Sebuah backend terdiri dari beberapa server web yang melayani aplikasi web yang sama, untuk skalabilitas dan redundansi. Tetapi ada juga bagian dalam file ini yang berlabel 'generik' yang berkaitan dengan penginstalan HAProxy secara keseluruhan dan bagian 'default' yang menentukan nilai parameter yang berlaku untuk semua frontend dan backend didefinisikan di sini.

Koneksi Maks. :Di bagian 'global', kami menetapkan parameter 'maxconn' (jumlah maksimum koneksi klien yang dapat ditangani oleh penyeimbang beban ini di semua backend yang dilayaninya). Parameter ini dapat disetel menggunakan panduan ukuran HAProxy , atau sebaliknya, kita dapat memilih node VLB dari E2E Cloud, berdasarkan perkiraan beban puncak yang mungkin dihadapi situs web kita. Dengan VLB-B-1 pilihan kami node, 4096 adalah nilai yang wajar untuk 'maxconn' di tingkat global.

Gambar 2:Parameter Konfigurasi Global dan Default untuk HAProxy

Protokol: Dalam penerapan kami, HAProxy akan mencegat dan menyeimbangkan lalu lintas HTTP. Ini dikonfigurasi dengan menyetel mode di bagian default di atas.

  1. mode http

Logging :Disarankan agar HAProxy menggunakan syslog . Di CentOS, ini berarti mengatur parameter 'log' ke 'local2' seperti yang ditunjukkan pada gambar di atas. Selanjutnya, konfigurasi syslog pada node HAProxy (/etc/rsyslog.conf) juga harus dimodifikasi agar mendengarkan pada port UDP 514.

Gambar 3:Konfigurasi Syslog pada node HAProxy

Untuk memastikan bahwa semua pesan log di 'local2' ke file terpisah khusus untuk HAProxy (/var/log/haproxy.log), kita harus membuat file haproxy.conf di direktori / etc/rsyslog.d dan ketik baris berikut:

  1. local2.* /var/log/haproxy.log

Untuk ketertelusuran permintaan end-to-end, kita juga harus mengubah format log Apache Web Server di file konfigurasi server web (/etc/apache2/apache2.conf). Pada setiap node server web, kami memodifikasi LogFormat untuk menyertakan alamat klien sebenarnya (X-Forwarded-For) dari mana permintaan HTTP berasal (alih-alih menampilkan alamat IP node HAProxy).

Gambar 4:Format Log Server Web Apache

Statistik HAProxy :HAProxy dapat dikonfigurasi untuk menampilkan statistik permintaan pada UI berbasis web. Kami dapat menyetel URL untuk menampilkan statistik HAProxy (/lb-stats) yang dilindungi menggunakan autentikasi dasar.

Default Lainnya :Bagian 'default' memiliki banyak parameter batas waktu yang kami tinggalkan tidak berubah. Namun dalam produksi, setiap administrator situs mungkin ingin menyempurnakan batas waktu berdasarkan faktor-faktor seperti latensi jaringan, waktu pemrosesan di ujung server, dll. Kami memang memperkenalkan opsi 'httpclose' sehingga koneksi klien HTTP segera ditutup sebagai respons dikirim kembali, tanpa menghabiskan sumber daya yang tidak perlu (kecuali ada pengaturan Keep-Alive untuk koneksi HTTP). Dan kami memastikan bahwa alamat IP klien yang sebenarnya diteruskan sepenuhnya ke server web untuk ketertelusuran (menggunakan parameter opsi 'option forwardfor'). Untuk definisi rinci dari parameter konfigurasi HAProxy, HAProxy dokumentasi harus dikonsultasikan.

Penyeimbangan Beban Round-Robin Sederhana

Awalnya, kami hanya menyiapkan satu situs web (terdiri dari aplikasi PHP Greeter sederhana yang disebutkan sebelumnya), untuk diseimbangkan dengan instalasi HAProxy kami. Kami telah menyiapkan dua server web dan satu load-balancer (HAProxy) seperti yang tercantum di E2E Cloud Dashboard.

Gambar 5:Node server web dan penyeimbang beban

Pertama kami mengikat HAProxy ke alamat IP dan port yang sesuai (biasanya port 80 untuk mode http) pada node VLB kami . Alamat IP harus menghadap ke luar, untuk menerima permintaan klien. Ini mengarahkan kita untuk mendefinisikan 'frontend', bernama 'httptraffic', seperti berikut ini (di /etc/haproxy/haproxy.cfg). Di sini, secara default, frontend ini akan menyeimbangkan semua permintaan klien ke backend bernama 'situs'.

Gambar 6:Konfigurasi frontend untuk HAProxy

Jadi, jelas, kita harus mendefinisikan 'backend' bernama 'situs'. Ini harus terdiri dari alamat IP server web untuk merutekan permintaan (walaupun, kita harus menggunakan alamat internal / pribadi untuk tujuan ini). Dan kami menetapkan kebijakan load-balancing menjadi 'round-robin'. HAProxy juga memungkinkan kami untuk mengaktifkan pemeriksaan kesehatan secara berkala node backend, menggunakan parameter 'check'.

Gambar 7:Konfigurasi Backend untuk HAProxy

Pada titik ini kita harus me-restart syslog dan HAProxy pada node load-balancer:

  1. systemctl restart rsyslog
  2. systemctl restart haproxy

Setelan Firewall

Sebelum mengakses aplikasi web melalui HAProxy, kita perlu membuka port 80 (untuk pengaturan HAProxy untuk mode http) pada node penyeimbang beban virtual, dan port UDP 514 untuk syslog. Pada CentOS, ini memerlukan pengaturan iptables dengan tepat:

  1. iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
  2. iptables -A INPUT -i eth0 -p udp –dport 514 -j ACCEPT
  3. iptables -A INPUT -i eth0 -p tcp –dport 80 -m state –state NEW,ESTABLISHED -j ACCEPT
  4. systemctl restart iptables

Pengujian

Pada tahap ini kita benar-benar dapat menguji fungsionalitas load-balancing dan beberapa pengaturan konfigurasi (termasuk logging dan pengumpulan statistik) yang disebutkan di bagian sebelumnya.

Untuk mendeteksi permintaan yang mendarat di HAProxy, kami menjalankan perintah berikut pada node load-balancer:

  1. tail -f /var/log/haproxy.log

Untuk HAProxy, file log ini (/var/log/haproxy.log) diperbarui melalui syslog.

Demikian pula, kita dapat memeriksa log akses pada setiap node server web untuk melacak permintaan end-to-end.

  1. tail -f /var/log/apache2/access.log

Sekarang, kita mengakses aplikasi PHP Greeter sederhana dari dua mesin berbeda . Pada setiap mesin klien, kita dapat mengarahkan browser ke URL:

http:///greet.php

Kita harus menemukan pembaruan pada log HAProxy. (Ini juga memverifikasi bahwa konfigurasi syslog kami berfungsi.)

Gambar 8:Log HAProxy (Penyeimbangan beban round-robin)

Salah satu permintaan dilayani oleh node websrv1 sementara yang lain dilayani oleh node websrv2. Ini terbukti dari log akses di setiap server web, dan dengan mencocokkan cap waktu. Alamat IP klien juga dicatat di dalam HAProxy dan di log server web.

Gambar 9:Akses Log dari node:websrv1

Gambar 10:Akses Log dari node:websrv2

Salam berikut akan ditampilkan pada browser di setiap mesin klien:

Gambar 11:Tampilan Browser

Statistik Penyeimbang Beban :Akhirnya kita bisa melihat statistik HAProxy dengan mengarahkan browser kami ke URL berikut (dikonfigurasi di bagian 'default'):

http:///lb-stats

Gambar 12:Statistik Penyeimbang Beban

Kesimpulan Dan Langkah Selanjutnya

Sejauh ini kami telah berhasil menyiapkan load-balancing di cloud E2E menggunakan HAProxy. Di bagian berikutnya (dan penutup) dari blog ini, kami akan membawa konfigurasi ini ke tingkat berikutnya dengan mengaktifkan sesi sticky dan mengamankan akses ke situs web, dan juga menyiapkan situs web yang lebih besar dengan banyak aplikasi. Langkah-langkah ini akan membawa kita lebih dekat ke penerapan produksi.

Silakan ikuti tautan di bawah ini untuk melihat langkah 2:

Menggunakan HAProxy untuk Load Balancing di E2E Cloud:Sesi Kelengketan Dan Keamanan


Cent OS
  1. FAQ Akun Saya E2E

  2. Apa itu Server Cloud terintegrasi Plesk di E2E Cloud

  3. pengaturan sysctl untuk beban tinggi dan mencegah DDoS

  1. FAQ Akun Saya E2E

  2. Menganalisis kasus yang mendukung dan menentang pengaturan ruang swap pada instans cloud

  3. Konfigurasi Apache untuk penghentian SSL di Cloud Load Balancer

  1. Kubernetes untuk Portabilitas Multi-Cloud dan Hybrid Cloud

  2. Plugin Veeam untuk VMware Cloud Director

  3. Menggunakan HAProxy untuk Load Balancing di E2E Cloud:Menyiapkan Kebijakan Round-Robin