Cara Instalasi SSL Let’s Encrypt pada Load Balancer HAProxy

-

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:


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 2 - 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

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

  • Instalasi HAProxy

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


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.

  • 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




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.

  • 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-Server2IP_Private_Anda:80 check


backend letsencrypt-backend

server letsencrypt 127.0.0.1:54321


  • 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


  • 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.



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

Hasil Pertama


Hasil Kedua setelah di refresh browser