HAProxy sebagai load balancer MYSQL

Pada artikel sebelumnya, saya sudah membahas tentang replikasi Master-Master Mysql. Sekarang saya akan coba membuat load balancer untuk akses kedua server mysql tersebut melalui satu pintu menggunakan HaProxy. Konfigurasi yang akan saya buat seperti berikut:

cluster-ha
Dari Gambar diatas saya bermaksud membuat cluster database, yang dapat digunakan sebagai load balancer(pembagi beban) antara server DB1 dan DB2. Dengan menggunakan HaProxy, maka webserver aplikasi yang akan mengakses database 1 dan 2 tidak direct (langsung) terhubung ke server DB1 dan DB2. Webserver aplikasi cukup melakukan komunikasi melalui server HaProxy terkoneksi ke ip 192.168.2.1/24.

1. Pastikan terlebih dahulu bahwa server DB1 & DB2 sudah berfungsi fitur replikasinya.

2. Install haproxy melalui port, dalam hal ini saya menggunakan freebsd 10 sebagai OS nya.

# cd /usr/ports/net/haproxy
# make install clean

3. Buat konfigurasi file di /usr/local/etc/haproxy.conf seperti berikut:

 # ee /usr/local/etc/haproxy.conf

 

global
    log 127.0.0.1 local0 notice
    maxconn 4096
    user haproxy
    group haproxy
    daemon

defaults
    log global
    retries 2
    timeout connect 3000
    timeout server 5000
    timeout client 5000
frontend MYSQL-CLUSTER-IN
        bind 192.168.2.1:3306
        bind 127.0.0.1:3306
        default_backend MYSQL-CLUSTER-OUT

backend MYSQL-CLUSTER-OUT
        mode tcp
        option mysql-check user haproxy_cek
        balance roundrobin
        server mysql-1 10.10.10.11:3306 check
        server mysql-2 10.10.10.12:3306 check


 

4. Buat user “haproxy”.

# pw useradd haproxy

5. Buat user “haproxy_cek” melalui mysql console di salah satu server bisa DB1 atau DB2. Sesuaikan dengan ip internal HaProxy anda.

mysql> create user 'haproxy_cek'@'10.10.10.10';
Query OK, 0 rows affected (0.01 sec)
 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

6. Coba sekarang running dengan perintah:

# /usr/loca/etc/rc.d/haproxy onestart

7. Silahkan dicek service haproxy sudah listen di port 3306.

# netstat -an | grep 3306

8. Tambahkan baris berikut di konfigurasi haproxy.conf agar bisa digunakan untuk monitor statistik session/request yang masuk dari frontend haproxy.

listen statistik
    bind 192.168.2.1:8080
    mode http
    option httpclose
    stats enable
    stats uri /
    stats refresh 3s
    stats realm Haproxy\ Statistics
    stats auth namauser:passworduser

9. Restart service haproxy, kemudian akses ke http://192.168.2.1:8080 masuk dgn user dan password anda.

10. Terakhir tambahkan baris berikut di /etc/rc.conf agara service haproxy bisa autostart.

haproxy_enable="YES"

 

Tidak hanya untuk load balancer mysql yang listen diport 3306. Akan tetapi haproxy bisa juga dipakai untuk keperluan balancing lain misal port 80/http. Jadi haproxy bisa berfungsi sebagai front end webserver.

Semoga bermanfaat….

sumber:

https://www.digitalocean.com/community/tutorials/how-to-use-haproxy-to-set-up-mysql-load-balancing–3

3 comments

  1. handoko says:

    Saya mau bertanya,
    untuk menguji kemampuan haproxynya menggunakan apa ya?

    • runnov says:

      kemampuan apanya ya? haproxy hanya aplikasi yang meneruskan packet ke backend.

      • Handoko says:

        Kemaren saya mau uji performansi dari server database yang diloadbalancing. Cuman tidak ketemu tools pengujinya. Dan mohon maaf juga pertanyaannya sebelumnya tidak jelas.