CentOS 6
Sponsored Link

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

[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 に MySQL サーバーを指定

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 ~]#
/etc/rc.d/init.d/haproxy restart

Stopping haproxy: [ OK ]
Starting haproxy: [ OK ]
[2] 任意のクライアントから、HAProxy サーバー宛てに MySQL サーバーへ接続し、正常に負荷分散されるか確認してください。 以下の例では、MySQL サーバーの 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