# HAProxy

# HAProxy - Background

HAProxy adalah perangkat lunak open-source yang berfungsi sebagai load balancer dan proxy server. Diciptakan oleh Willy Tarreau pada tahun 2000, HAProxy awalnya dirancang untuk menangani pengaturan lalu lintas di lingkungan web yang sangat membutuhkan performa tinggi dan keandalan, seperti e-commerce dan aplikasi web skala besar.

**Fitur Utama HAProxy :**

1. Load Balancing : HAProxy mendukung load balancing dengan berbagai algoritma pemilihan server (server selection algorithms) seperti round-robin, least connections, dan weighted least connections. Ini memungkinkan distribusi lalu lintas yang optimal di antara server-server backend.
2. Proxying : Sebagai reverse proxy, HAProxy menerima semua permintaan dari klien dan memutuskan ke server backend yang sesuai, serta meneruskan respons dari server backend ke klien.
3. SSL Termination : HAProxy mampu menangani SSL termination (penghapusan SSL), mengenkripsi lalu lintas dari klien ke HAProxy dan kemudian mendekripsi dan meneruskannya ke server backend.
4. Health Checks : HAProxy menyediakan mekanisme untuk memeriksa kesehatan (health check) server-server backend secara berkala. Ini memungkinkan HAProxy untuk secara otomatis mengarahkan lalu lintas hanya ke server yang sehat.
5. Konfigurasi Fleksibel : Konfigurasi HAProxy menggunakan file teks yang dapat disesuaikan, memungkinkan administrator untuk mengatur pengaturan sesuai dengan kebutuhan spesifik aplikasi dan lingkungan operasional.
6. Performa Tinggi : HAProxy terkenal karena kinerja tinggi dan efisiensinya dalam menangani banyak koneksi secara simultan dengan sumber daya yang minimal.

**Penggunaan Umum HAProxy :**

1. Load Balancer: Sebagai solusi load balancing untuk mengelola lalu lintas web dan memastikan ketersediaan aplikasi.
2. Reverse Proxy : Menyembunyikan infrastruktur backend dari pengguna dengan menangani semua permintaan HTTP dan HTTPS.
3. SSL Offloading : Memproses SSL secara sentral untuk mengurangi beban pada server backend.
4. Aplikasi Mikroservice : Cocok untuk arsitektur mikroservice dengan kemampuan untuk mendistribusikan lalu lintas ke berbagai instance layanan yang berbeda.

HAProxy telah menjadi pilihan utama bagi banyak organisasi untuk mengatasi tantangan dalam penanganan lalu lintas web dan meningkatkan ketersediaan dan performa aplikasi mereka. Dengan dukungan komunitas yang kuat dan kontribusi berkelanjutan, HAProxy terus berkembang dan menawarkan solusi yang dapat diandalkan bagi infrastruktur IT modern.

# HAProxy - Install HAProxy Ubuntu

1\. Kunjungi Website Resmi HAProxy [https://www.haproxy.org/](https://www.haproxy.org/)

2\. Pilih versi yang diinginkan, contoh yang digunakan versi 3.0

[![image.png](https://notes.ilusidigital.com/uploads/images/gallery/2024-09/scaled-1680-/image.png)](https://notes.ilusidigital.com/uploads/images/gallery/2024-09/image.png)

3\. Memperbarui Sistem

```
apt update && apt upgrade -y
```

4\. Tambah Repository, contoh disini menggunakan versi 3.0

```
add-apt-repository ppa:vbernat/haproxy-3.0
```

5\. Update kembali

```
apt update
```

6\. Install Haproxy

```
apt install haproxy -y
```

7\. Check versi, pastikan sesuai dengan versi yang diinginkan.

```
haproxy -v
```

![](https://notes.ilusidigital.com/uploads/images/gallery/2024-09/embedded-image-x5wjczen.png)

8\. Start service HAproxy

```
systemctl restart haproxy
```

9\. Mengaktifkan service otomatis setiap kali server dinyalakan.

```
systemctl enable haproxy
```

10\. Selesai

# HAProxy - Default Config

#### Default Configuration  


```
global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

        # Default SSL material locations
        ca-base /etc/ssl/certs
        crt-base /etc/ssl/private

        # See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate
        ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
        ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
        ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http
```