Tutorial Permulaan HAProxy

Tutorial Permulaan Haproxy



Apabila aplikasi anda meningkat, keperluan untuk menambah lebih banyak pelayan untuk mengendalikan lebih banyak trafik muncul. Lebih banyak trafik yang diterima oleh aplikasi anda, lebih tinggi peluang untuk menghadapi masa henti apabila pelayan membebankan. Walau bagaimanapun, terdapat alat seperti HAProxy yang membolehkan anda menentukan cara trafik dikendalikan untuk mengimbangi beban pada pelayan anda. Ideanya adalah untuk memastikan tiada pelayan yang terlebih muatan. Proksi Ketersediaan Tinggi ialah perisian sumber terbuka yang direka untuk menawarkan pengimbangan beban yang boleh dipercayai sambil bertindak sebagai proksi terbalik untuk aplikasi TCP/HTTP.

HAProxy berfungsi untuk mengurangkan beban lebihan mana-mana pelayan, dan ia mencapai ini dengan mengedarkan trafik untuk memastikan tiada pelayan berlebihan, namun pelayan lain tersedia. Platform seperti Instagram mempunyai trafik yang besar disebabkan oleh permintaan yang dihantar sesaat, oleh itu keperluan untuk menggunakan HAProxy untuk mentakrifkan bahagian hadapan, bahagian belakang dan pendengar bagi pelayan untuk mengelakkan beban berlebihan.

Mengapa Menggunakan HAProxy

Sebelum mengetahui tentang pemasangan dan konfigurasi HAProxy, anda harus memahami sebab kami memerlukannya, berdasarkan ciri yang ditawarkannya. Berikut adalah ciri utama HAProxy:







  1. Pengimbangan Beban – Dengan HAProxy, anda boleh mengagihkan trafik dengan selesa merentasi pelayan yang berbeza untuk mengelak daripada membebankan satu pelayan. Dengan cara itu, aplikasi anda tidak akan menghadapi sebarang isu masa henti, dan anda akan mencapai responsif, kebolehpercayaan dan ketersediaan yang lebih pantas.
  2. Pembalakan dan Pemantauan – Anda akan mendapat log pemantauan terperinci untuk pelayan anda untuk membantu menyelesaikan masalah. Selain itu, HAProxy mempunyai halaman statistik di mana anda boleh mendapatkan analisis prestasi masa nyata untuk pengimbang beban anda.
  3. Pemeriksaan Kesihatan - Malah pelayan anda memerlukan pemeriksaan kesihatan untuk menentukan status mereka. HAProxy kerap menjalankan pemeriksaan kesihatan untuk mengetahui status pelayan anda untuk meningkatkan kebolehpercayaannya. Jika pelayan yang tidak sihat dikesan, ia akan mengubah laluan trafik ke pelayan lain.
  4. Proksi Songsang – Salah satu cara untuk meningkatkan keselamatan adalah dengan menyembunyikan struktur dalaman. Nasib baik, HAProxy membolehkan anda menerima trafik daripada pelanggan dan mengarahkannya ke pelayan yang sesuai. Dengan cara itu, struktur dalaman anda tersembunyi daripada mata penggodam.
  5. ACL (Senarai Kawalan Akses) – Dengan HAProxy, anda boleh mentakrifkan cara penghalaan trafik harus berlaku menggunakan pelbagai kriteria seperti laluan, pengepala dan alamat IP. Oleh itu, mentakrifkan logik penghalaan tersuai untuk trafik anda menjadi lebih mudah.
  6. Penamatan SSL – Secara lalai, SSL/TLS dimuat turun oleh pelayan bahagian belakang yang menyebabkan prestasi berkurangan. Walau bagaimanapun, dengan HAProxy, penamatan SSL/TLS berlaku pada pengimbang beban, memunggah tugas dalam pelayan bahagian belakang.

Memasang HAProxy

Setakat ini, kami mentakrifkan apa itu HAProxy dan membincangkan ciri yang ditawarkan untuk membantu anda memahami sebab anda memerlukannya untuk aplikasi anda. Langkah seterusnya ialah memahami cara untuk bermula dengan memasangnya pada sistem anda.



Jika anda menjalankan sistem Ubuntu atau Debian, HAProxy boleh dipasang daripada pengurus pakej APT. Jalankan arahan berikut:



kemas kini $ sudo apt
$ sudo apt install haproxy

Begitu juga, jika anda menggunakan sistem berasaskan RHEL atau CentOS, HAProxy tersedia daripada pengurus pakej 'yum'. Jalankan arahan berikut:





kemas kini $ sudo yum
$ sudo yum pasang haproxy

Dalam kes kami, kami menggunakan Ubuntu. Oleh itu, kami mempunyai perintah kami seperti berikut:



Kami kemudiannya boleh menyemak versinya untuk memastikan bahawa kami berjaya memasang HAProxy dengan jayanya.

$ haproxy --version

Bagaimana untuk mengkonfigurasi HAProxy

Dengan HAProxy dipasang, anda kini boleh membuka fail konfigurasinya ( / etc/haproxy/haproxy.cfg) dan tentukan tetapan yang anda ingin gunakan untuk pengimbang beban anda.

Buka fail konfigurasi menggunakan editor seperti nano atau vim.

$ sudo nano /etc/haproxy/haproxy.cfg

Anda mendapat fail konfigurasi seperti yang berikut:

Dari fail konfigurasi, anda akan melihat bahawa ia datang dengan dua bahagian utama:

  1. global - Ia adalah bahagian pertama dalam fail dan nilainya tidak boleh diubah. Ia mengandungi tetapan proses yang mentakrifkan cara HAProxy berfungsi. Sebagai contoh, ia mentakrifkan butiran pengelogan dan kumpulan atau pengguna yang boleh melaksanakan fungsi HAProxy. Ambil perhatian bahawa dalam fail konfigurasi ini, anda hanya boleh mempunyai satu bahagian global dan nilainya harus kekal tidak berubah.
  1. lalai – Bahagian ini mengandungi nilai lalai untuk nod. Sebagai contoh, anda boleh menambah tamat masa atau mod operasi untuk HAProxy anda dalam bahagian ini. Selain itu, ada kemungkinan untuk mempunyai banyak bahagian lalai dalam fail konfigurasi HAProxy anda.

Berikut ialah contoh bahagian 'Lalai':

Dalam imej yang diberikan, mod mentakrifkan cara HAProxy anda akan mengendalikan permintaan masuk. Anda boleh menetapkan mod kepada HTTP atau TCP. Bagi tamat masa, ia menentukan berapa lama HAProxy perlu menunggu. Sebagai contoh, sambungan tamat masa ialah masa untuk menunggu sebelum sambungan hujung belakang dibuat. Pelanggan tamat masa ialah berapa lama HAProxy perlu menunggu untuk pelanggan menghantar data. Pelayan tamat masa ialah masa untuk menunggu pelayan yang sesuai menghantar data yang akan dimajukan kepada klien. Cara anda mentakrifkan nilai lalai amat penting dalam meningkatkan masa tindak balas aplikasi anda.

Terdapat tiga lagi bahagian yang perlu anda tentukan untuk pengimbang beban anda berfungsi seperti yang diharapkan.

  1. bahagian hadapan - Bahagian ini mengandungi alamat IP yang anda ingin pelanggan anda gunakan untuk mewujudkan sambungan.
  2. bahagian belakang - Ia menunjukkan kumpulan pelayan yang mengendalikan permintaan seperti yang ditakrifkan dalam bahagian hadapan.
  3. dengar - Ia digunakan secara berturut-turut apabila anda ingin menghalakan kumpulan pelayan tertentu. Bahagian ini menggabungkan tugas bahagian hadapan dan hujung belakang.

Mari Kita Mempunyai Contoh

Untuk contoh ini, kami mentakrifkan bahagian hadapan untuk menggunakan localhost dengan port tertentu. Seterusnya, kami mengikatnya dengan bahagian belakang yang menjalankan localhost dan kemudian menjalankan pelayan Python untuk menguji sama ada semuanya berfungsi seperti yang diharapkan untuk pengimbangan beban. Ikuti langkah yang diberikan.

Langkah 1: Mengkonfigurasi Bahagian Lalai

Dalam bahagian 'Lalai', kami menetapkan nilai untuk dikongsi merentasi nod. Untuk kes kami, kami menetapkan mod kepada HTTP dan menetapkan tamat masa untuk klien dan pelayan. Anda boleh melaraskan masa mengikut keperluan anda.

Ingat bahawa semua suntingan ini adalah dalam konfigurasi HAProxy yang terletak di '/etc/haproxy/haproxy.cfg'. Setelah bahagian lalai dikonfigurasikan, mari tentukan bahagian hadapan.

Langkah 2: Mengkonfigurasi Bahagian Frontend

Di bahagian hadapan, kami mentakrifkan cara kami mahu aplikasi atau tapak web itu diakses oleh pelanggan dalam talian. Kami memberikan alamat IP untuk permohonan itu. Tetapi untuk kes ini, kami bekerjasama dengan localhost. Oleh itu, alamat IP kami ialah alamat sandaran 127.0.0.1 dan kami mahu menerima sambungan melalui port 80.

Anda mesti menambah kata kunci 'bind' yang bertindak sebagai pendengar untuk alamat IP pada port yang ditentukan. Alamat IP dan port yang anda tentukan ialah perkara yang digunakan oleh pengimbang beban untuk menerima permintaan yang masuk.

Selepas menambah baris sebelumnya dalam fail konfigurasi anda, kami mesti memulakan semula 'haproxy.service' dengan arahan berikut:

$ sudo systemctl mulakan semula haproxy

Pada ketika ini, kami boleh cuba menghantar permintaan ke tapak web kami menggunakan arahan 'curl'. Jalankan arahan dan tambah alamat IP sasaran.

$ curl

Memandangkan kami masih belum menentukan bagaimana bahagian belakang HAProxy kami, kami mendapat ralat 503 seperti yang ditunjukkan dalam yang berikut. Walaupun pengimbang beban berjaya menerima permintaan, tiada pelayan tersedia pada masa ini untuk mengendalikannya, justeru berlaku ralat.

Langkah 3: Mengkonfigurasi Bahagian Belakang

Bahagian belakang ialah tempat kami mentakrifkan pelayan yang akan mengendalikan sebarang permintaan masuk. Pengimbang beban merujuk kepada bahagian ini untuk mengetahui cara ia harus mengagihkan permintaan masuk untuk memastikan tiada pelayan yang terlebih muatan.

Ralat 503 yang kami dapat sebelum ini adalah kerana kami tidak mempunyai sebarang bahagian belakang untuk mengendalikan permintaan. Mari mulakan dengan mentakrifkan 'default_backend' untuk mengendalikan permintaan. Anda mentakrifkannya di bahagian hadapan. Kami menamakannya 'linux_backend' untuk kes ini.

Seterusnya, buat bahagian hujung belakang yang mempunyai nama yang sama seperti yang ditakrifkan dalam bahagian hujung hadapan. Anda kemudiannya mesti menggunakan kata kunci 'pelayan' diikuti dengan nama pelayan anda dan alamat IPnya. Imej berikut menunjukkan bahawa kami menentukan pelayan 'linuxhint1' menggunakan IP 127.0.0.1 dan port 8001:

Anda boleh mempunyai kumpulan pelayan bahagian belakang, tetapi kami hanya menentukan satu untuk kes ini. Pastikan anda menyimpan fail tersebut. Kita mesti memulakan semula perkhidmatan HAProxy.

Untuk menguji pengimbang beban HAProxy yang dibuat, kami mencipta pelayan web menggunakan Python3 untuk mengikat port bahagian belakang menggunakan alamat IP yang kami tetapkan. Kami menjalankan arahan seperti berikut:

$ python3 -m http.server 8001 --bind 127.0.0.1

Pastikan anda menggantikan nilai supaya sepadan dengan alamat IP anda dan port yang anda ingin ikat. Perhatikan bagaimana pelayan web dibuat dan mendengar sebarang permintaan masuk.

Pada terminal lain, mari gunakan arahan 'curl' untuk menghantar permintaan kepada pelayan.

$ curl

Tidak seperti cara kami mendapat ralat 503 sebelum ini yang menunjukkan bahawa tiada pelayan tersedia untuk mengendalikan permintaan, kami mendapat output kali ini yang mengesahkan bahawa pengimbang beban HAProxy kami berfungsi.

Jika anda kembali ke terminal sebelumnya di mana kami mencipta pelayan web, anda akan melihat bahawa kami mendapat output kejayaan 200 yang mengesahkan bahawa HAProxy menerima permintaan dan mengendalikannya dengan menghantarnya ke pelayan yang ditentukan dalam bahagian belakang kami.

Begitulah cara anda boleh menetapkan HAProxy mudah untuk tapak web atau aplikasi anda.

Bekerja dengan Peraturan

Sebelum kita mengakhiri tutorial HAProxy pemula ini, mari bercakap dengan cepat tentang cara anda boleh menentukan peraturan untuk membimbing cara permintaan akan dikendalikan oleh pengimbang beban.

Mengikuti langkah yang sama seperti sebelum ini, mari biarkan bahagian lalai kami utuh dan tentukan alamat IP yang berbeza dalam bahagian hadapan. Kami mengikat alamat IP yang sama tetapi menerima sambungan dari port yang berbeza.

Selain itu, kami mempunyai 'default_backend' dan satu lagi 'use_backend' yang merupakan kumpulan pelayan yang berbeza yang akan kami gunakan bergantung pada port tempat permintaan itu datang. Dalam konfigurasi berikut, semua permintaan melalui port 81 dikendalikan oleh pelayan dalam 'Linux2_backend'. Sebarang permintaan lain dikendalikan oleh 'default_backend'.

Kami kemudian membuat bahagian bahagian belakang seperti yang ditakrifkan dalam bahagian hadapan. Ambil perhatian bahawa untuk setiap bahagian belakang, kami mempunyai pelayan berbeza yang kami tentukan untuk digunakan untuk mengendalikan permintaan.

Mulakan semula perkhidmatan HAProxy dengan pantas.

Mari buat pelayan web menggunakan Python3 dan ikat permintaan pada port 8002 yang merupakan pelayan backend alternatif.

Apabila menghantar permintaan kepadanya, kami menentukan port sebagai 81 untuk mencetuskan pengimbang beban untuk menghantar permintaan kepada pelayan ganti yang bukan yang lalai.

Menyemak semula pelayan web kami, kami dapat melihat bahawa ia berjaya menerima dan mengendalikan permintaan dan memberikan respons 200 (berjaya).

Begitulah cara anda boleh menentukan peraturan untuk membimbing cara pengimbang beban anda akan menerima dan mengendalikan permintaan.

Kesimpulan

HAProxy ialah penyelesaian ideal untuk pengimbangan beban untuk aplikasi TCP/HTTP. Setelah dipasang, anda boleh mengedit fail konfigurasi dengan selesa untuk menentukan bahagian lalai, bahagian hadapan dan bahagian belakang untuk membimbing cara pengimbang beban anda akan berfungsi. Siaran ini ialah panduan pemula untuk HAProxy. Ia bermula dengan mentakrifkan HAProxy dan ciri-cirinya. Seterusnya, ia menggali untuk memahami cara mengkonfigurasi HAProxy dan membuat kesimpulan dengan memberikan contoh tentang cara menggunakan HAProxy sebagai pengimbang beban.