Kubernetes环境下HAProxy对接Galera集群的配置遗漏问题排查
配置遗漏及问题根因
1. MySQL健康检查用户权限配置缺失
当前创建的haproxy用户未显式配置允许空密码登录,导致HAProxy使用无密码方式发起健康检查时被Galera集群拒绝:
- 需在Galera集群所有节点执行以下语句创建符合要求的健康检查用户:
CREATE USER 'haproxy'@'192.168.1.%' IDENTIFIED BY ''; FLUSH PRIVILEGES;
- 若当前使用的HAProxy版本要求显式指定空密码,可将HAProxy配置中的健康检查规则修改为:
option mysql-check user haproxy password ''
2. HAProxy全局日志配置缺失
提供的haproxy.cfg中未配置global段的日志输出地址,导致log global配置不生效,触发日志警告:
- 补充
global段配置如下即可解决该警告:
global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners stats timeout 30s user haproxy group haproxy daemon
3. 健康检查能力不足(可选优化)
当前使用的option tcp-check仅能验证Galera节点3306端口可连通,无法验证数据库服务是否正常运行、集群数据是否处于同步状态,修复上述mysql-check配置问题后建议换回MySQL原生健康检查,提升服务可用性。
4. Kubernetes资源配置遗漏(可选优化)
当前HAProxy的Deployment未配置存活、就绪探针,无法让Kubernetes自动感知HAProxy服务状态,异常时无法自动重启重建,建议补充如下探针配置:
livenessProbe: tcpSocket: port: 6446 initialDelaySeconds: 15 periodSeconds: 10 readinessProbe: tcpSocket: port: 6446 initialDelaySeconds: 5 periodSeconds: 10
内容的提问来源于stack exchange,提问作者Sachith Muhandiram
相关产品推荐
相关产品推荐

