1

MySQL TCP トラフィックを Maxscale インスタンスにストリーミングする単純なストリーム ブロックがあります。2 番目のインスタンスは、次のようにフェールオーバーのみとして機能します。

stream {    
    upstream maxscale {
        zone upstream_maxscale 64k;
        server 10.1.0.11:3307;
        server 10.1.0.12:3307 backup;
    }

    server {
        listen 3307;
        proxy_pass maxscale;
    }
}

接続が少ない場合 (<30)、すべてがうまくいきます。しかし、接続が高い場合 (>40、40 の接続が高いと言えれば...)、nginx エラー ログは、デバッグ方法がわからないという不平を言い続けます。

recv() が失敗しました (104: ピアによって接続がリセットされました) プロキシとアップストリームからの読み取り中に、クライアント: 10.1.0.16、サーバー: 10.1.0.15:3307、アップストリーム: "10.1.0.11:3307"、クライアントとの間のバイト: 15738 /64316、アップストリームから/へのバイト数:64316/15738

reuseportworker_connectionsまたはのようなオプションでプレイしようとしましso_keepaliveたが、チャンスはありません。

https://nginx.org/en/docs/stream/ngx_stream_core_module.html

https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/ Maxscale 側の問題でしょうか?

Maxscale 2.4 リスナーは次のとおりです。

# Listener

[listener-rw]
type=listener
service=readwritesplit
protocol=MariaDBClient
address=10.1.0.11
port=3307
ssl=required
ssl_ca_cert=/var/lib/maxscale/ssl/ca-cert.pem
ssl_cert=/var/lib/maxscale/ssl/server.pem
ssl_key=/var/lib/maxscale/ssl/server.key
ssl_version=MAX

# Service

[readwritesplit]
type=service
router=readwritesplit
servers=sql1,sql2,sql3
user=maxscale
password=324F74A347291B3BE79956AD5F4BB2FAD65E1F9052A976722917701742729400
enable_root_user=1
max_sescmd_history=150
max_slave_connections=100%
lazy_connect=true
slave_selection_criteria=LEAST_CURRENT_OPERATIONS
optimistic_trx=true
connection_keepalive=300
master_failure_mode=fail_on_write

https://nginx.org/en/docs/stream/ngx_stream_core_module.html

https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/

4

1 に答える 1