与MariaDB和HAProxy(集群)的连接问题

与MariaDB和HAProxy(集群)的连接问题,mariadb,haproxy,galera,Mariadb,Haproxy,Galera,我在运行haproxy的vm和集群之间的连接有问题。让我解释一下这个问题。 我已经用MariaDB(IPs 192.168.0.1和192.168.0.2)和haproxy主机(IP192.168.0.3)安装了2台galera群集计算机。我几乎遵循了我在互联网上找到的所有教程,但我总是遇到同样的问题:我无法连接haproxy并执行任何查询 实际状态: galera工作很好 root@db1:# mysql -u root -pPASSWORD -e 'SELECT VARIABLE_VALU

我在运行haproxy的vm和集群之间的连接有问题。让我解释一下这个问题。 我已经用MariaDB(IPs 192.168.0.1和192.168.0.2)和haproxy主机(IP192.168.0.3)安装了2台galera群集计算机。我几乎遵循了我在互联网上找到的所有教程,但我总是遇到同样的问题:我无法连接haproxy并执行任何查询

实际状态:

  • galera工作很好

    root@db1:# mysql -u root -pPASSWORD -e 'SELECT VARIABLE_VALUE as "cluster size" FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_cluster_size"'
    +--------------+
    | cluster size |
    +--------------+
    | 2            |
    +--------------+
    
  • haproxy安装良好,数据库中有一个拥有所有权限的用户。haproxy的配置文件如下所示:

    global
       log 127.0.0.1   local0                                                                  
       log 127.0.0.1   local1 notice                                                           
       maxconn 1024                                                                            
       user haproxy                                                                            
       group haproxy                                                                           
       daemon                                                                                  
    
       stats socket /var/lib/haproxy/stats.sock mode 600 level admin                           
       stats timeout 2m                                                                        
    
    defaults                                                                                        
       log     global                                                                          
       mode    http                                                                            
       option  tcplog                                                                          
       option  dontlognull                                                                     
       retries 3                                                                               
       option redispatch                                                                       
       maxconn 1024                                                                            
       timeout connect 5000ms                                                                  
       timeout client  50000ms                                                                 
       timeout server  50000ms                                                                 
    
    listen haproxy-monitoring                                                                       
       bind *:80                                                                               
       mode http                                                                               
       stats enable                                                                            
       stats show-legends                                                                      
       stats refresh   5s                                                                      
       stats uri       /                                                                       
       stats realm     Statistics                                                              
       stats auth      User:Password                                                         
       stats admin     if TRUE                                                                 
    
    frontend lb1db                                                                                  
       bind *:3306                                                                             
       default_backend         galera-cluster                                                  
    
    backend galera-cluster                                                                          
       balance roundrobin                                                                      
       server db1      192.168.0.1:3306 check weight 1                                        
       server db2      192.168.0.2:3306 check weight 1   
    
    [galera]                                                                                        
    wsrep_on=ON                                                                                     
    wsrep_provider=/usr/lib/galera/libgalera_smm.so                                                 
    wsrep_cluster_address=gcomm://192.168.0.94,192.168.0.93                                         
    wsrep_node_addres=192.168.0.1. #vm1 IP; in the other config is present the vm2 IP                                                                  
    wsrep_node_name=db1                                                                             
    binlog_format=row                                                                               
    default_storage_engine=InnoDB                                                                   
    innodb_autoinc_lock_mode=2                                                                      
    
    wsrep_cluster_name="Cluster_name"                                                                    
    wsrep_sst_method=rsync                                                                          
    bind-address=192.168.0.1  #vm1 IP; in the other config is present the vm2 IP                                                                     
    
  • 统计屏幕显示虚拟机已启动并正在运行

  • my.cnf如下所示:

    global
       log 127.0.0.1   local0                                                                  
       log 127.0.0.1   local1 notice                                                           
       maxconn 1024                                                                            
       user haproxy                                                                            
       group haproxy                                                                           
       daemon                                                                                  
    
       stats socket /var/lib/haproxy/stats.sock mode 600 level admin                           
       stats timeout 2m                                                                        
    
    defaults                                                                                        
       log     global                                                                          
       mode    http                                                                            
       option  tcplog                                                                          
       option  dontlognull                                                                     
       retries 3                                                                               
       option redispatch                                                                       
       maxconn 1024                                                                            
       timeout connect 5000ms                                                                  
       timeout client  50000ms                                                                 
       timeout server  50000ms                                                                 
    
    listen haproxy-monitoring                                                                       
       bind *:80                                                                               
       mode http                                                                               
       stats enable                                                                            
       stats show-legends                                                                      
       stats refresh   5s                                                                      
       stats uri       /                                                                       
       stats realm     Statistics                                                              
       stats auth      User:Password                                                         
       stats admin     if TRUE                                                                 
    
    frontend lb1db                                                                                  
       bind *:3306                                                                             
       default_backend         galera-cluster                                                  
    
    backend galera-cluster                                                                          
       balance roundrobin                                                                      
       server db1      192.168.0.1:3306 check weight 1                                        
       server db2      192.168.0.2:3306 check weight 1   
    
    [galera]                                                                                        
    wsrep_on=ON                                                                                     
    wsrep_provider=/usr/lib/galera/libgalera_smm.so                                                 
    wsrep_cluster_address=gcomm://192.168.0.94,192.168.0.93                                         
    wsrep_node_addres=192.168.0.1. #vm1 IP; in the other config is present the vm2 IP                                                                  
    wsrep_node_name=db1                                                                             
    binlog_format=row                                                                               
    default_storage_engine=InnoDB                                                                   
    innodb_autoinc_lock_mode=2                                                                      
    
    wsrep_cluster_name="Cluster_name"                                                                    
    wsrep_sst_method=rsync                                                                          
    bind-address=192.168.0.1  #vm1 IP; in the other config is present the vm2 IP                                                                     
    
当我尝试在haproxy中执行查询时,我得到以下结果:

mysql -u root -pPASSWORD --host=192.168.0.3 --port=3306
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.0.3' (111 "Connection refused")

正如我写的,我遵循了几个教程,问题总是一样的。有人能帮我吗?

您正在使用的命令正试图连接到HAProxy服务器上的数据库服务。据我从您的描述中所知,此服务器(192.168.0.3)上没有运行任何数据库服务。 如果要连接到数据库服务,则需要使用Galera群集中某台服务器的IP地址或主机名,例如192.168.0.1或192.168.0.2。 您必须在数据库服务中创建一个用户来授权这种访问(在阅读文章时,您似乎没有这样做)。其次,不建议将任何远程访问作为“根”启用。 您可以在数据库群集中创建远程用户并授予某些权限。登录到群集中的一台服务器并以root用户身份登录到数据库:

# mysql -u root -p
然后创建具有远程访问权限的用户并授予一些权限

MariaDB [(none)]> create user 'haproxy'@'192.168.0.3'identified by 'aPassword';
MariaDB [(none)]> GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'haproxy'@'192.168.0.3';
MariaDB [(none)]> FLUSH PRIVILEGES;
然后尝试使用haproxy服务器上的帐户“haproxy”:

# mysql -u haproxy --host 192.168.0.1 -p
现在应该可以了。我还注意到,在集群的my.cnf中,您与集群服务器的连线包含的地址与实际服务器的地址不同:

wsrep_集群_地址=gcomm://192.168.0.94,192.168.0.93

如果这实际上不是复制和粘贴的工件,请确保这些与您的配置一致
祝你好运

系统日志中是否有来自HAProxy的内容?@Michael sqlbot当前日志文件为空,在其他3个文件(压缩)中只有以下行:HAProxy systemd wrapper[4414]:HAProxy systemd wrapper:exit,HAProxy RC=0