CentOS 7
 

HAProxy : レイヤー4モードでの負荷分散
2015/02/18
 
レイヤー4モードでの負荷分散の設定です。
例として、2台の MariaDB バックエンドへ負荷分散するように設定します。
       |
-------+-----------------------------------------------
       |
       +-------------------+--------------------+
       |10.0.0.30          |10.0.0.31           |10.0.0.32
 +-----+-----+     +-------+------+     +-------+------+
 | Frontend  |     |   Backend#1  |     |   Backend#2  |
 |  HAProxy  |     |    MariaDB   |     |    MariaDB   |
 +-----------+     +--------------+     +--------------+

[1] HAProxy の設定です。
[root@dlp ~]#
vi /etc/haproxy/haproxy.cfg
global
    log         127.0.0.1 local2 info
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     256
    maxsslconn  256
    user        haproxy
    group       haproxy
    daemon

defaults
      # mode tcp でレイヤー4モード

    mode               tcp
    log                global
    timeout connect    10s
    timeout client     30s
    timeout server     30s

# frontend, backend に MariaDB サーバーを指定

frontend  mysql-in
    bind *:3306
    default_backend    backend_servers

backend backend_servers
    balance            roundrobin
    server             db01 10.0.0.31:3306 check
    server             db02 10.0.0.32:3306 check

[root@dlp ~]#
systemctl restart haproxy

[2] 任意のクライアントから、HAProxy サーバー宛てに MariaDB サーバーへ接続し、正常に負荷分散されるか確認してください。 以下の例では、MariaDB サーバーの keystone データベースへ keystone ユーザーで接続し、table01 を select しています。 接続するたびにバックエンドが切り替わり、正常に負荷分散できていることが分かります。
[root@desktop ~]#
mysql -u keystone -p -h 10.0.0.30 keystone -e "select * from table01;"

Enter password:
+------+-------------------+
| id   | name              |
+------+-------------------+
|    1 | db01.srv.world |
+------+-------------------+

[root@desktop ~]#
mysql -u keystone -p -h 10.0.0.30 keystone -e "select * from table01;"

Enter password:
+------+-------------------+
| id   | name              |
+------+-------------------+
|    1 | db02.srv.world |
+------+-------------------+
 
Tweet