CentOS Stream 8
Sponsored Link

HAProxy : レイヤー4 モードでの負荷分散
2021/03/17
 
レイヤー4 モードでの負荷分散の設定です。
例として、2台の MariaDB バックエンドへ負荷分散するように設定します。
-----------+---------------------------+--------------------------+------------
           |                           |                          |
           |10.0.0.30                  |10.0.0.51                 |10.0.0.52
+----------+-----------+   +-----------+----------+   +-----------+----------+
|   [ dlp.srv.world ]  |   | [ node01.srv.world ] |   | [ node02.srv.world ] |
|        HAProxy       |   |   MariaDB Server#1   |   |   MariaDB Server#2   |
+----------------------+   +----------------------+   +----------------------+

[1] HAProxy の設定です。
[root@dlp ~]#
vi /etc/haproxy/haproxy.cfg
# defaults セクションの [mode] 値を変更

defaults
    mode            tcp

# frontend, backend に MariaDB サーバーを定義
frontend mysql-in
    bind *:3306
    default_backend backend_servers

backend backend_servers
    balance         roundrobin
    server          node01 10.0.0.51:3306 check
    server          node02 10.0.0.52:3306 check

[root@dlp ~]#
systemctl restart haproxy

[2] SELinux を有効にしている場合は、ブール値の変更が必要です。
[root@dlp ~]#
setsebool -P haproxy_connect_any on

[3] Firewalld を有効にしている場合は、HAProxy が待ち受けるポートの許可が必要です。
[root@dlp ~]#
firewall-cmd --add-service=mysql --permanent

success
[root@dlp ~]#
firewall-cmd --reload

success
[4] 任意のクライアントから、HAProxy サーバー宛てに MariaDB サーバーへ接続し、正常に負荷分散されるか確認します。 設定通り、接続毎にラウンドロビンで負荷分散されれば OK です。
[root@client ~]#
mysql -u cent -p -h 10.0.0.30 -e "show variables like 'hostname';"

Enter password:
+---------------+------------------+
| Variable_name | Value            |
+---------------+------------------+
| hostname      | node02.srv.world |
+---------------+------------------+

[root@client ~]#
mysql -u cent -p -h 10.0.0.30 -e "show variables like 'hostname';"

Enter password:
+---------------+------------------+
| Variable_name | Value            |
+---------------+------------------+
| hostname      | node01.srv.world |
+---------------+------------------+
関連コンテンツ