Apa yang bisa kami bantu?

A. Pendahuluan

HAProxy adalah sebuah aplikasi opensource berbasis Linux yang biasa digunakan sebagai load balancing trafic jaringan. Load balancing adalah teknik untuk mendistribusikan beban trafik pada dua atau lebih jalur koneksi secara seimbang agar trafik dapat berjalan optimal, memaksimalkan throughput, memperkecil waktu tanggap dan menghindari overload pada salah satu jalur koneksi. Teknik balancing dapat menggunakan beberapa cara yang berbeda, tergantung kekompleksan yang ada. 

HAProxy adalah solusi baik, sangat cepat dan andal yang menawarkan load-balancing, ketersediaan tinggi, dan proksi untuk aplikasi berbasis TCP dan HTTP. Ini sangat cocok untuk situs web dengan lalu lintas sangat tinggi dan memberdayakan banyak situs web yang paling banyak dikunjungi di dunia. Maka dari itu sangat penting untuk mengerti, apa yang sebenarnya dibutuhkan jaringan sebelum membuat keputusan melakukan konfigurasi load balancer.

Berikut adalah diagram dari Konfigurasi HAProxy Load Balancer nya:
 
Gambar 1. Load Balancer
 

HAProxy sekarang diinstal. Sekarang mari kita membuat pengaturan di mana kita memiliki 2 (dua) instance Apache Web Server dan 1 (satu) instance HAProxy. Di bawah ini adalah informasi pengaturan:

Kami akan menggunakan tiga VM yang dapat dibuat dari Gio Cloud atau Neo Cloud

Instance 1 - Load Balancer
Hostname: HAProxy
OS: Ubuntu
Private IP: 192.168.100.8
IP Public: 103.93.55.111

Instance 2 - Web Server 1
Hostname: VM-Webserver-A
OS: Ubuntu sudah di install Apache dan telah di buat virtual host
Private IP: 192.168.100.21

Instance 3 - Web Server 2
Hostname: VM-Webserver-B
OS: Ubuntu sudah di install Apache dan telah di buat virtual host
Private IP: 192.168.100.28

B. Konfigurasi & Instalasi

Langkah 1  

Install Let’s Encrypt

Langkah pertama untuk menggunakan Let’s Encrypt untuk mendapatkan sertifikat SSL adalah menginstal perangkat lunak certbot di server Anda. Pengembang Certbot menyediakan repositori dengan versi terbaru dari perangkat lunak. 

sudo add-apt-repository ppa:certbot/certbot

Anda akan diminta untuk mengonfirmasi penambahan. Tekan ENTER untuk melanjutkan. Kemudian perbarui cache paket untuk mengambil daftar paket baru:

sudo apt-get update

Setelah selesai update, install paket certbot

sudo apt-get install certbot
 

Langkah 2

Mendapatkan sertifikat

Sekarang gunakan plugin Standalone dengan menjalankan perintah ini:

sudo certbot certonly --standalone --preferred-challenges http --http-01-port 80 -d example.com -d www.example.com

Anda akan diminta untuk memasukkan alamat email Anda dan menyetujui persyaratan layanan Let’s Encrypt. Jika semuanya berhasil, certbot akan mencetak pesan keluaran seperti ini:

IMPORTANT NOTES:

 - Congratulations! Your certificate and chain have been saved at

 /etc/letsencrypt/live/example.com/fullchain.pem. Your cert

 will expire on 2017-09-06. To obtain a new or tweaked version of

 this certificate in the future, simply run certbot again. To

 non-interactively renew *all* of your certificates, run "certbot

 renew"

 - Your account credentials have been saved in your Certbot

 configuration directory at /etc/letsencrypt. You should make a

 secure backup of this folder now. This configuration directory will

 also contain certificates and private keys obtained by Certbot so

 making regular backups of this folder is ideal.

 - If you like Certbot, please consider supporting our work by:

 Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate

 Donating to EFF: https://eff.org/donate-le

 

Gabungkan fullchain.pem dan privkey.pem

Saat mengkonfigurasi HAProxy untuk melakukan penghentian SSL, Anda harus menggabungkan fullchain.pem dan privkey.pem ke dalam satu file.

Pertama, buat direktori tempat file gabungan akan ditempatkan, / etc / haproxy / certs:

sudo mkdir -p /etc/haproxy/certs

Selanjutnya, buat file gabungan dengan perintah cat ini (gantikan example.com dengan nama domain Anda):

DOMAIN='example.com' sudo -E bash -c 'cat /etc/letsencrypt/live/$DOMAIN/fullchain.pem /etc/letsencrypt/live/$DOMAIN/privkey.pem > /etc/haproxy/certs/$DOMAIN.pem'

Amankan akses pada kombinasi file tersebut, dimana berisi private key, menggunakan command berikut:

sudo chmod -R go-rwx /etc/haproxy/certs

Sekarang kita siap menggunakan sertifikat SSL dan kunci pribadi dengan HAProxy.

  

Langkah 3

C. Install HAProxy

apt-get install haproxy

Saat ini haproxy telah terinstall namun membutuhkan untuk konfigurasi lebih lanjut.

Buka teks editor pada haproxy.cfg

cat /etc/haproxy/haproxy.cfg
Gambar 2. Konfigurasi file haproxy.cfg
 

Bagian global mendefinisikan parameter tingkat sistem seperti lokasi file dan pengguna serta grup tempat HAProxy dijalankan. Dalam kebanyakan kasus, Anda tidak perlu mengubah apa pun di bagian ini. Pengguna haproxy dan grup haproxy keduanya dibuat selama instalasi.

Bagian default mendefinisikan parameter logging tambahan dan opsi yang terkait dengan timeout dan kesalahan. Secara default, pesan normal dan kesalahan akan dicatat.

D. Konfigurasi Load Balancing 

Saat Anda mengkonfigurasi load balancing menggunakan HAProxy, ada dua jenis node yang perlu didefinisikan: frontend dan backend. Frontend adalah simpul di mana HAProxy mendengarkan koneksi. Node backend adalah yang digunakan HAProxy untuk meneruskan permintaan. Jenis simpul ketiga, simpul statistik, dapat digunakan untuk memantau penyeimbang beban dan dua simpul lainnya.

Buka /etc/haproxy/haproxy.cfg di teks editor dan tambahkan konfigurasi untuk front end:

nano /etc/haproxy/haproxy.cfg
frontend www-http
	bind IP_Private_Instance:80
	reqadd X-Forwarded-Proto:\ http
	default_backend www-backend
frontend www-https
	bind IP_Private_Instance:443 ssl crt /etc/haproxy/certs/domain_anda.pem
	reqadd X-Forwarded-Proto:\ https
	acl letsencrypt-acl path_beg /.well-known/acme-challenge/
	use_backend letsencrypt-backend if letsencrypt-acl
	default_backend www-backend
Gambar 3. Konfigurasi haproxy.cfg
 
Gambar 4. Konfigurasi haproxy.cfg
 

Blok konfigurasi ini menentukan node frontend bernama haproxy node, yang terikat pada semua antar muka jaringan pada port 80. Ia akan mendengarkan koneksi HTTP (dimungkinkan untuk menggunakan mode TCP untuk tujuan lain) dan akan menggunakannodes back end.

E. Tambahkan konfigurasi pada sisi backend 

nano /etc/haproxy/haproxy.cfg
backend www-backend
redirect scheme https if !{ ssl_fc }
server Nama-Server1 IP_Private_Anda:80 check
server Nama-Server2 IP_Private_Anda:80 check
backend letsencrypt-backend
server letsencrypt 127.0.0.1:54321
Gambar 5. Konfigurasi haproxy.cfg
 
Tambahkan optional status node pada konfigurasinya 
nano /etc/haproxy/haproxy.cfg
listen stats
bind :32700
stats enable
stats uri /
stats hide-version
stats auth someuser:password
Gambar 6. Konfigurasi haparoxy.cfg
Restart HAProxy untuk mendapatkan konfigurasi yang barunya 
systemctl restart haproxy
 Sekarang, setiap permintaan yang masuk ke simpul HAProxy di alamat IP 103.93.55.111akan diteruskan ke simpul jaringan internal dengan alamat IP 192.168.100.21atau 192.168.100.28. Node backend ini akan melayani permintaan HTTP. Jika sewaktu-waktu salah satu dari simpul ini gagal dalam pemeriksaan kesehatan, mereka tidak akan digunakan untuk melayani permintaan apa pun sampai mereka lulus tes. 

Untuk melihat statistik dan memantau kesehatan node, navigasikan ke alamat IP atau nama domain dari node frontend di browser web di port yang ditugaskan, mis., Http://103.93.55.118:32700. Ini akan menampilkan statistik seperti berapa kali permintaan diteruskan ke simpul tertentu serta jumlah sesi saat ini dan sebelumnya yang ditangani oleh simpul frontend.

Gambar 7. Konfigurasi Haproxy GUI
 

F. Uji Coba

Saat ini konfigurasi HAProxy telah selesai dan kita coba akses website menggunakan IP http://103.93.55.111:32700/ untuk melihat hasilnya

Hasil Pertama

Gambar 8. Testing
 

Hasil Kedua setelah di refresh browser

Gambar 9. Testing
 

G. Kesimpulan

Anda telah berhasil menginstal sertifikat SSL Let's Encrypt pada load balancer HAProxy Anda. Ini akan membantu meningkatkan keamanan dan enkripsi data antara pengguna dan server Anda. Pastikan untuk menjaga sertifikat ini tetap diperbarui secara berkala agar situs web Anda tetap aman.

Semoga artikel ini dapat membantuAnda. Temukan bantuan lainnya melalui Knowledge Base Biznet Gio. Jika Anda masih memiliki kendala silahkan hubungi support@biznetgio.com.