1

我有一个简单的流块将 MySQL TCP 流量流式传输到 Maxscale 实例。第二个实例仅充当故障转移,例如:

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

我尝试过使用reuseport, worker_connectionsorso_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

1

MaxScale 日志 (in /var/log/maxscale/maxscale.log) 很可能包含有关您收到此类错误的原因的答案,或者至少可以帮助您确定问题可能是什么。

如果您无法仅从日志中找出原因,我建议您在 MaxScale 项目下的 MariaDB Jira上打开一个错误报告。

于 2020-12-03T12:51:20.030 回答