FreeBSD 14
Sponsored Link

Nginx : Stream module を利用する2024/02/13

 
Nginx での Stream module の設定です。
任意の TCP, UDP (1.9.13), UNIX-domain sockets をプロキシ可能です。
当例では、以下のような環境を例に MaridaDB へのリクエストをバックエンドサーバーへ転送します。
-----------+---------------------------+-----
           |                           |
           |10.0.0.31                  |
+----------+-----------+               |
|   [ www.srv.world ]  |               |
|        Nginx         |               |
+----------------------+               |
                                       |
------------+--------------------------+-----------
            |                          |           
            |10.0.0.51                 |10.0.0.52  
+-----------+----------+   +-----------+----------+
| [ node01.srv.world ] |   | [ node02.srv.world ] |
|       Mariadb#1      |   |       Mariadb#2      |
+----------------------+   +----------------------+

[1] Nginx の設定です。
root@www:~ #
vi /usr/local/etc/nginx/nginx.conf
# 15行目 : 追記
load_module /usr/local/libexec/nginx/ngx_stream_module.so;

# 最終行に追記
# [weight=*] で重み付け (weight=2 の場合 指定無サーバーと 2:1 の割合でバランシング)
stream {
    upstream mariadb-backend {
        server 10.0.0.51:3306 weight=2;
        server 10.0.0.52:3306;
    }
    server {
        listen 3306;
        proxy_pass mariadb-backend;
    }
}

root@www:~ #
service nginx reload
[2] 任意のクライアントコンピューターからフロントエンドの Nginx サーバーへ Mariadb アクセスして動作確認します。
freebsd@client:~ $ mysql -u serverworld -ppassword -h www.srv.world -e "show variables like 'hostname';"
+---------------+------------------+
| Variable_name | Value            |
+---------------+------------------+
| hostname      | node01.srv.world |
+---------------+------------------+
freebsd@client:~ $ mysql -u serverworld -ppassword -h www.srv.world -e "show variables like 'hostname';"
+---------------+------------------+
| Variable_name | Value            |
+---------------+------------------+
| hostname      | node01.srv.world |
+---------------+------------------+
freebsd@client:~ $ mysql -u serverworld -ppassword -h www.srv.world -e "show variables like 'hostname';"
+---------------+------------------+
| Variable_name | Value            |
+---------------+------------------+
| hostname      | node02.srv.world |
+---------------+------------------+
freebsd@client:~ $ mysql -u serverworld -ppassword -h www.srv.world -e "show variables like 'hostname';"
+---------------+------------------+
| Variable_name | Value            |
+---------------+------------------+
| hostname      | node01.srv.world |
+---------------+------------------+
関連コンテンツ