首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过代理的Mariadb连接不起作用。

通过代理的Mariadb连接不起作用。
EN

Stack Overflow用户
提问于 2022-01-20 14:02:09
回答 1查看 251关注 0票数 0

我对这件事不熟悉,所以请友好一点.

我使用HAProxy作为多个事物的代理,但问题是我想要使用代理连接到Mariadb集群。我使用“保持”来分配虚拟IP,然后代理应该侦听并平衡到数据库的连接。目前的状况是:

3台机器,每台机器运行一组(稍加修改,只运行必要的东西),HAProxy和MariaDB (启用Galera )。

它们的IP值分别为10.0.0.1、10.0.0.2和10.0.0.3,保持分配的虚拟IP为10.0.0.9。

HAProxy监听3310,然后余额为3306与其他机器(因为运行HAProxy的机器也运行数据库,这就是为什么我使用非默认端口)。

问题:我正在使用一个没有特权的无密码测试用户"lol“,连接从10.0.0.1 (它也有10.0.0.9分配的atm)。我会把剩下的贴在下面。

代码语言:javascript
复制
mysql -u lol #connects
mysql -P 3310 -u lol #connects
mysql -h 10.0.0.9 -u lol #connects
mysql -h 10.0.0.9 -u lol #from 10.0.0.2, connects
mysql -h 10.0.0.9 -P 3310 -u lol #hangs a while, then spits out this message:
ERROR 2013 (HY000): Lost connection to MySQL server at 'handshake: reading initial communication packet', system error: 11

这一切为什么要发生?我的防火墙(目前)是完全开放的,所以这不应该是问题。我包括配置文件的MariaDB,保持和HAProxy下面。(我故意从配置文件中删除不必要的注释)

/etc/mysql/maradb.con.d/50-server.cnf(由于我的安装方式,MariaDB没有其他有意义的配置文件,但请随时询问)

代码语言:javascript
复制
[server]

[mysqld]

#
# * Basic Settings
#

user                    = mysql
pid-file                = /run/mysqld/mysqld.pid
basedir                 = /usr
datadir                 = /var/lib/mysql
tmpdir                  = /tmp
lc-messages-dir         = /usr/share/mysql
lc-messages             = en_US
skip-external-locking

#skip-name-resolve

bind-address            = 0.0.0.0

#
# * Fine Tuning
#

#key_buffer_size        = 128M
#max_allowed_packet     = 1G
#thread_stack           = 192K
#thread_cache_size      = 8
#myisam_recover_options = BACKUP
#max_connections        = 100
#table_cache            = 64

#
# * Logging and Replication
#

#general_log_file       = /var/log/mysql/mysql.log
#general_log            = 1


log_error = /var/log/mysql/error.log
# Enable the slow query log to see queries with especially long duration
#slow_query_log_file    = /var/log/mysql/mariadb-slow.log
#long_query_time        = 10
#log_slow_verbosity     = query_plan,explain
#log-queries-not-using-indexes
#min_examined_row_limit = 1000

#server-id              = 1
#log_bin                = /var/log/mysql/mysql-bin.log
expire_logs_days        = 10
#max_binlog_size        = 100M

#
# * SSL/TLS
#

#ssl-ca = /etc/mysql/cacert.pem
#ssl-cert = /etc/mysql/server-cert.pem
#ssl-key = /etc/mysql/server-key.pem
#require-secure-transport = on

character-set-server  = utf8mb4
collation-server      = utf8mb4_general_ci

#
# * InnoDB
#

#innodb_buffer_pool_size = 8G


[embedded]


[mariadb]

[mariadb-10.5]

[galera]
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://10.0.0.1,10.0.0.2,10.0.0.3"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
# any cluster name
wsrep_cluster_name="MariaDB_Cluster"
# own IP address
wsrep_node_address="10.0.0.1"

(我只包含有意义的部分,还有其他VRRP设置,其他机器也被配置为优先级较低的从机,保留不应该是这里的问题,只是添加它来澄清)

代码语言:javascript
复制
...
vrrp_instance VRRP2 {
    state MASTER
    interface ens19
    virtual_router_id 111
    priority 200
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1011
    }
    virtual_ipaddress {
        10.0.0.9/24
    }
}
...

/etc/haproxy/haproxy.cfg (这里还有其他设置,不包括这些)

代码语言:javascript
复制
global
        log /dev/log    local0
        log /dev/log    local1 notice
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

        # Default SSL material locations
        ca-base /etc/ssl/certs
        crt-base /etc/ssl/private

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000

frontend galera
    bind :3310
    default_backend mariadb

backend mariadb
    balance leastconn
    option mysql-check user lol
    server srv1 10.0.0.1:3306 check
    server srv2 10.0.0.2:3306 check
    server srv3 10.0.0.3:3306 check
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-21 08:45:55

我有答案。问题是,我需要将mode tcp添加到数据库的前端和后端。现在,它正在按预期工作,如果有任何额外的问题,我将评论这个答案。有更多的事情取决于此。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70787574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档