CentOS Stream 9 Nginx での Stream module の設定方法

環境
CentOS Stream 9

概要
nginx 10.0.0.40 test.com
Mariadb#1 10.0.0.41 node01.test.com
Mariadb#2 10.0.0.42 node02.test.com

操作方法
1.nginx-mod-streamをインストールします

# dnf -y install nginx-mod-stream

2.設定ファイルを編集します
# vi /etc/nginx/nginx.conf
# 最終行に追記
# [weight=*] でweight=2 の場合 指定無サーバーと 2:1 の割合でバランシング

stream {
    upstream mariadb-backend {
        server 10.0.0.41:3306 weight=2;
        server 10.0.0.42:3306;
    }
    server {
        listen 3306;
        proxy_pass mariadb-backend;
    }
}

3.nginxを再起動します
# systemctl reload nginx

4.SELinux を有効にしている場合は、ポリシーを変更します
# setsebool -P httpd_can_network_connect on
# setsebool -P httpd_can_network_connect_db on
# vi nginx-stream.te

# 以下の内容で新規作成
module nginx-stream 1.0;

require {
        type mysqld_port_t;
        type httpd_t;
        class tcp_socket name_bind;
}

#============= httpd_t ==============
allow httpd_t mysqld_port_t:tcp_socket name_bind;

モジュールを確認します。

# checkmodule -m -M -o nginx-stream.mod nginx-stream.te
# semodule_package --outfile nginx-stream.pp --module nginx-stream.mod
# semodule -i nginx-stream.pps

3. 任意のクライアントコンピューターからフロントエンドの Nginx サーバーへ Mariadb アクセスして動作確認します。

$ mysql -u serverworld -ppassword -h test.com -e "show variables like 'hostname';"

 

CentOS Stream 9

Posted by arkgame