Tutorial Pemula HAProxy

Tutorial Pemula Haproxy



Seiring skala aplikasi Anda, kebutuhan untuk menambahkan lebih banyak server untuk menangani lebih banyak lalu lintas muncul. Semakin banyak lalu lintas yang diterima aplikasi Anda, semakin tinggi kemungkinan menghadapi downtime ketika server kelebihan beban. Namun, ada alat seperti HAProxy yang memungkinkan Anda menentukan cara penanganan lalu lintas untuk menyeimbangkan beban di server Anda. Idenya adalah untuk memastikan tidak ada server yang kelebihan beban. Proksi Ketersediaan Tinggi adalah perangkat lunak sumber terbuka yang dirancang untuk menawarkan penyeimbangan beban yang andal sekaligus bertindak sebagai proksi terbalik untuk aplikasi TCP/HTTP.

HAProxy berfungsi untuk mengurangi kelebihan beban pada server mana pun, dan mencapai hal ini dengan mendistribusikan lalu lintas untuk memastikan bahwa tidak ada server yang kelebihan beban, namun server lain tersedia. Platform seperti Instagram memiliki lalu lintas yang sangat besar karena permintaan yang dikirim per detik, oleh karena itu perlu menggunakan HAProxy untuk menentukan frontend, backend, dan pendengar server untuk menghindari kelebihan beban.

Mengapa Menggunakan HAProxy

Sebelum mempelajari tentang instalasi dan konfigurasi HAProxy, Anda harus memahami mengapa kami membutuhkannya, berkat fitur yang ditawarkannya. Berikut ini adalah fitur utama HAProxy:







  1. Penyeimbang beban - Dengan HAProxy, Anda dapat dengan nyaman mendistribusikan lalu lintas ke berbagai server untuk menghindari kelebihan beban pada satu server. Dengan begitu, aplikasi Anda tidak akan menghadapi masalah waktu henti apa pun, dan Anda akan mendapatkan respons, keandalan, dan ketersediaan yang lebih cepat.
  2. Pencatatan dan Pemantauan – Anda akan mendapatkan log pemantauan terperinci untuk server Anda guna membantu pemecahan masalah. Selain itu, HAProxy memiliki halaman statistik tempat Anda bisa mendapatkan analisis kinerja real-time untuk penyeimbang beban Anda.
  3. Pemeriksaan Kesehatan – Bahkan server Anda memerlukan pemeriksaan kesehatan untuk menentukan statusnya. HAProxy sering menjalankan pemeriksaan kesehatan untuk mengetahui status server Anda guna meningkatkan keandalannya. Jika server yang tidak sehat terdeteksi, lalu lintas akan dialihkan ke server lain.
  4. Proksi Terbalik – Salah satu cara untuk meningkatkan keamanan adalah dengan menyembunyikan struktur internal. Untungnya, HAProxy memungkinkan Anda menerima lalu lintas dari klien dan mengarahkannya ke server yang sesuai. Dengan begitu, struktur internal Anda tersembunyi dari mata peretas.
  5. ACL (Daftar Kontrol Akses) – Dengan HAProxy, Anda dapat menentukan bagaimana perutean lalu lintas harus dilakukan menggunakan berbagai kriteria seperti jalur, header, dan alamat IP. Dengan demikian, menentukan logika perutean khusus untuk lalu lintas Anda menjadi lebih mudah.
  6. Pengakhiran SSL – Secara default, SSL/TLS diturunkan oleh server backend yang menyebabkan penurunan kinerja. Namun, dengan HAProxy, penghentian SSL/TLS terjadi di penyeimbang beban, sehingga tugas dibongkar di server backend.

Menginstal HAProxy

Sejauh ini, kita telah mendefinisikan apa itu HAProxy dan mendiskusikan fitur-fitur yang ditawarkannya untuk membantu Anda memahami mengapa Anda memerlukannya untuk aplikasi Anda. Langkah selanjutnya adalah memahami cara memulai dengan menginstalnya di sistem Anda.



Jika Anda menjalankan sistem Ubuntu atau Debian, HAProxy dapat diinstal dari manajer paket APT. Jalankan perintah berikut:



$ sudo pembaruan yang tepat
$ sudo tepat instal haproxy

Demikian pula, jika Anda menggunakan sistem berbasis RHEL atau CentOS, HAProxy tersedia dari manajer paket “yum”. Jalankan perintah berikut:





$ sudo enak pembaruan
$ sudo yum instal haproxy

Dalam kasus kami, kami menggunakan Ubuntu. Jadi, kami memiliki perintah sebagai berikut:



Kami kemudian dapat memeriksa versinya untuk memastikan bahwa kami berhasil menginstal HAProxy.

$ haproxy --versi

Cara Mengonfigurasi HAProxy

Dengan HAProxy terinstal, Anda sekarang dapat membuka file konfigurasinya ( / dll/haproxy/haproxy.cfg) dan tentukan pengaturan yang ingin Anda gunakan untuk penyeimbang beban Anda.

Buka file konfigurasi menggunakan editor seperti nano atau vim.

$ sudo nano /etc/haproxy/haproxy.cfg

Anda mendapatkan file konfigurasi seperti berikut ini:

Dari file konfigurasi, Anda akan melihat bahwa file tersebut hadir dengan dua bagian utama:

  1. global - Ini adalah bagian pertama dalam file dan nilainya tidak boleh diubah. Ini berisi pengaturan proses yang menentukan cara kerja HAProxy. Misalnya, ini mendefinisikan detail logging dan grup atau pengguna yang dapat menjalankan fungsi HAProxy. Perhatikan bahwa dalam file konfigurasi ini, Anda hanya dapat memiliki satu bagian global, dan nilainya tidak boleh diubah.
  1. default – Bagian ini berisi nilai default untuk node. Misalnya, Anda dapat menambahkan batas waktu atau mode operasional untuk HAProxy Anda di bagian ini. Selain itu, ada kemungkinan untuk memiliki banyak bagian default di file konfigurasi HAProxy Anda.

Berikut ini contoh bagian “Default”:

Pada gambar yang diberikan, mode menentukan bagaimana HAProxy Anda akan menangani permintaan masuk. Anda dapat mengatur mode ke HTTP atau TCP. Sedangkan untuk batas waktu, ini menentukan berapa lama HAProxy harus menunggu. Misalnya, batas waktu koneksi adalah waktu menunggu sebelum koneksi backend dibuat. Klien timeout adalah berapa lama HAProxy harus menunggu klien mengirim data. Timeout server merupakan waktu menunggu server yang sesuai mengirimkan data yang akan diteruskan ke client. Cara Anda menentukan nilai default sangat penting dalam meningkatkan waktu respons aplikasi Anda.

Ada tiga bagian lagi yang harus Anda tentukan agar penyeimbang beban Anda berfungsi seperti yang diharapkan.

  1. paling depan - Bagian ini berisi alamat IP yang Anda ingin klien Anda gunakan untuk membuat koneksi.
  2. bagian belakang – Ini menunjukkan kumpulan server yang menangani permintaan seperti yang ditentukan di bagian frontend.
  3. mendengarkan - Ini digunakan secara berturut-turut ketika Anda ingin merutekan grup server tertentu. Bagian ini menggabungkan tugas frontend dan backend.

Mari Kita Ambil Contoh

Untuk contoh ini, kami mendefinisikan frontend untuk menggunakan localhost dengan port tertentu. Selanjutnya, kami mengikatnya dengan backend yang menjalankan localhost dan kemudian menjalankan server Python untuk menguji apakah semuanya berfungsi seperti yang diharapkan untuk penyeimbangan beban. Ikuti langkah-langkah yang diberikan.

Langkah 1: Mengonfigurasi Bagian Default

Di bagian “Default”, kami menetapkan nilai yang akan dibagikan ke seluruh node. Untuk kasus kami, kami mengatur mode ke HTTP dan mengatur batas waktu untuk klien dan server. Anda dapat mengatur waktunya sesuai dengan kebutuhan Anda.

Ingatlah bahwa semua pengeditan ini ada dalam konfigurasi HAProxy yang terletak di “/etc/haproxy/haproxy.cfg”. Setelah bagian default dikonfigurasi, mari kita tentukan frontendnya.

Langkah 2: Mengonfigurasi Bagian Frontend

Di bagian frontend, kita menentukan bagaimana kita ingin aplikasi atau website diakses oleh klien secara online. Kami memberikan alamat IP untuk aplikasi tersebut. Namun untuk kasus ini, kami bekerja sama dengan localhost. Oleh karena itu, alamat IP kami adalah alamat cadangan 127.0.0.1 dan kami ingin menerima koneksi melalui port 80.

Anda harus menambahkan kata kunci “bind” yang bertindak sebagai pendengar alamat IP pada port yang ditentukan. Alamat IP dan port yang Anda tentukan adalah apa yang digunakan penyeimbang beban untuk menerima permintaan masuk.

Setelah menambahkan baris sebelumnya di file konfigurasi Anda, kita harus me-restart “haproxy.service” dengan perintah berikut:

$ sudo systemctl mulai ulang haproxy

Pada titik ini, kita dapat mencoba mengirimkan permintaan ke situs web kita menggunakan perintah “curl”. Jalankan perintah dan tambahkan alamat IP target.

$keriting

Karena kita belum menentukan bagaimana backend HAProxy kita nantinya, kita mendapatkan error 503 seperti yang ditunjukkan berikut ini. Meskipun penyeimbang beban berhasil menerima permintaan, saat ini tidak ada server yang tersedia untuk menanganinya, sehingga terjadi kesalahan.

Langkah 3: Mengonfigurasi Backend

Bagian backend adalah tempat kami menentukan server yang akan menangani setiap permintaan masuk. Penyeimbang beban mengacu pada bagian ini untuk mengetahui bagaimana ia harus mendistribusikan permintaan masuk untuk memastikan bahwa tidak ada server yang kelebihan beban.

Kesalahan 503 yang kami dapatkan sebelumnya adalah karena kami tidak memiliki backend untuk menangani permintaan. Mari kita mulai dengan mendefinisikan “default_backend” untuk menangani permintaan. Anda mendefinisikannya di bagian frontend. Kami menamakannya “linux_backend” untuk kasus ini.

Selanjutnya, buat bagian backend yang memiliki nama yang sama dengan yang ditentukan di bagian frontend. Anda kemudian harus menggunakan kata kunci “server” diikuti dengan nama server Anda dan alamat IP-nya. Gambar berikut menunjukkan bahwa kami mendefinisikan server “linuxhint1” menggunakan IP 127.0.0.1 dan port 8001:

Anda dapat memiliki kumpulan server backend, tetapi kami hanya menetapkan satu untuk kasus ini. Pastikan Anda menyimpan file. Kita harus me-restart layanan HAProxy lagi.

Untuk menguji load balancer HAProxy yang dibuat, kami membuat server web menggunakan Python3 untuk mengikat port backend menggunakan alamat IP yang kami tentukan. Kami menjalankan perintah sebagai berikut:

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

Pastikan Anda mengganti nilainya agar sesuai dengan alamat IP dan port yang ingin Anda ikat. Perhatikan bagaimana server web dibuat dan mendengarkan setiap permintaan masuk.

Di terminal lain, mari gunakan perintah “curl” untuk mengirim permintaan ke server.

$keriting

Tidak seperti bagaimana kami mendapatkan kesalahan 503 sebelumnya yang menunjukkan bahwa tidak ada server yang tersedia untuk menangani permintaan, kali ini kami mendapatkan keluaran yang mengonfirmasi bahwa penyeimbang beban HAProxy kami berfungsi.

Jika Anda kembali ke terminal sebelumnya tempat kami membuat server web, Anda akan melihat bahwa kami mendapatkan output sukses 200 yang mengonfirmasi bahwa HAProxy menerima permintaan dan menanganinya dengan mengirimkannya ke server yang ditentukan di bagian backend kami.

Begitulah cara Anda mengatur HAProxy sederhana untuk situs web atau aplikasi Anda.

Bekerja dengan Aturan

Sebelum kita mengakhiri tutorial HAProxy pemula ini, mari kita bahas dengan cepat tentang bagaimana Anda dapat menentukan aturan untuk memandu bagaimana permintaan akan ditangani oleh penyeimbang beban.

Mengikuti langkah yang sama seperti sebelumnya, biarkan bagian default tetap utuh dan tentukan alamat IP yang berbeda di bagian frontend. Kami mengikat alamat IP yang sama tetapi menerima koneksi dari port yang berbeda.

Selain itu, kami memiliki 'default_backend' dan 'use_backend' lainnya yang merupakan kumpulan server berbeda yang akan kami gunakan bergantung pada port asal permintaan. Dalam konfigurasi berikut, semua permintaan melalui port 81 ditangani oleh server di “Linux2_backend”. Permintaan lainnya ditangani oleh “default_backend”.

Kami kemudian membuat bagian backend seperti yang ditentukan di frontend. Perhatikan bahwa untuk setiap backend, kami memiliki server berbeda yang kami tentukan untuk digunakan dalam menangani permintaan.

Mulai ulang layanan HAProxy dengan cepat.

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

Saat mengirimkan permintaan ke sana, kami menentukan port sebagai 81 untuk memicu penyeimbang beban untuk mengirim permintaan ke server alternatif yang bukan server default.

Memeriksa ulang server web kami, kami dapat melihat bahwa server tersebut berhasil menerima dan menangani permintaan dan memberikan respons 200 (berhasil).

Begitulah cara Anda menentukan aturan untuk memandu bagaimana penyeimbang beban Anda akan menerima dan menangani permintaan.

Kesimpulan

HAProxy adalah solusi ideal untuk penyeimbangan beban untuk aplikasi TCP/HTTP. Setelah terinstal, Anda dapat dengan nyaman mengedit file konfigurasi untuk menentukan bagian default, frontend, dan backend untuk memandu cara kerja penyeimbang beban Anda. Posting ini adalah panduan pemula untuk HAProxy. Dimulai dengan mendefinisikan HAProxy dan fitur-fiturnya. Selanjutnya, menggali pemahaman cara mengkonfigurasi HAProxy dan menyimpulkan dengan memberikan contoh cara menggunakan HAProxy sebagai penyeimbang beban.