我有一个包含3个MariaDB服务器的集群,每个服务器都运行在一个单独的VM上。我还有另一台运行HaProxy的虚拟机,它位于3台服务器的前面并与它们通信,没有任何问题。
当我将Spring连接到HaProxy服务器时,我遇到了一个问题。它适用于第一个请求(不是所有时间),而不是因为EOFException而失败。我使用了一个连接字符串,用于直接连接数据库并将其指向HaProxy服务器。当我直接连接到数据库服务器时,一切都按预期工作。但是当我改为使用HaProxy时,那就是我得到那个例外。
这是我在application.properties中的连接设置:
spring.datasource.driverClassName= org.mariadb.jdbc.Driver
spring.datasource.url= jdbc:mariadb://MariaDB:3306/DATABASE?useUnicode=true&characterEncoding=UTF-8&maxAllowedPacket=512000
spring.datasource.username= USER
spring.datasource.password= PASSWORD
我不确定是否还需要其他设置,或者我是否需要配置其他设置。
这是HaProxy配置文件:
global
log 127.0.0.1 local0 notice
user haproxy
group haproxy
maxconn 4096
defaults
log global
retries 2
timeout connect 3000
timeout server 5000
timeout client 5000
listen mysql-cluster
bind 0.0.0.0:3306
mode tcp
option tcpka
option mysql-check user haproxy_check
balance roundrobin
server mysql-1 10.0.1.11:3306 check
server mysql-2 10.0.1.12:3306 check
server mysql-3 10.0.1.13:3306 check