如何连接ProxySQL集群?搭建后应用接入及VIP配置疑问
应用连接ProxySQL集群的可行方案
1. 配置VIP(虚拟IP)
这是最常用的高可用方案,借助Keepalived或Corosync+Pacemaker这类工具在ProxySQL集群中管理VIP:
- 在3个ProxySQL节点部署Keepalived,配置同一VIP并设置节点优先级,主节点故障时VIP会自动漂移至健康节点
- 应用只需将该VIP作为数据库连接地址,无需感知ProxySQL集群的节点变化
- 需在ProxySQL中开启相关监控,让Keepalived能检测节点健康状态,比如通过命令
mysql -h localhost -P6032 -uadmin -padmin -e "SELECT 1"判断节点是否存活
2. 应用层多节点轮询
若不想依赖VIP工具,可直接在应用配置中写入所有3个ProxySQL节点地址,借助应用自身的负载均衡/故障转移机制处理:
- 例如Java应用可使用带负载均衡的JDBC URL:
jdbc:mysql:loadbalance://proxysql1:6033,proxysql2:6033,proxysql3:6033/dbname(MySQL Connector/J原生支持) - 其他语言可通过连接池配置多地址,配合心跳检测剔除故障节点
- 优势是无需额外基础设施,缺点是应用需支持多地址连接,故障转移依赖应用自身实现
3. 专用负载均衡器前置
若已有现成负载均衡器(如Nginx、HAProxy),可将ProxySQL节点挂载在其后方:
- 配置HAProxy监听指定端口,将流量转发至3个ProxySQL的6033端口(客户端连接端口)
- 给HAProxy配置健康检查,比如检测6033端口连通性或执行简单MySQL查询
- 应用连接负载均衡器地址即可,由负载均衡器负责流量分发与故障转移
额外必要配置
无论采用哪种方案,ProxySQL本身需完成以下配置:
- 确保3个ProxySQL节点配置同步:可通过
proxysql-admin工具或手动配置cluster表,同步规则、用户、后端MySQL节点信息 - 开启ProxySQL监控功能,自动检测后端MySQL节点健康状态并剔除故障节点
- 配置合适的连接池参数,避免应用连接数耗尽ProxySQL资源
内容的提问来源于stack exchange,提问作者Prabhakar Repalle
相关产品推荐
相关产品推荐

