Ubuntu 上实现 Informix 负载均衡的可行方案
核心结论与总体思路
- Informix 数据库引擎本身不直接提供负载均衡,生产上通常通过外部负载均衡器(如 HAProxy、Nginx、LVS)或 Keepalived VIP 来分发连接;也可结合 HDR/SDS/RSS 等复制技术实现读扩展与故障切换,再由负载均衡器导流。
方案一 外部四层负载均衡器 HAProxy(推荐)
- 适用场景:基于 DRDA 端口 9088/TCP 的 JDBC/ODBC/ESQL 连接,做连接级负载均衡与故障转移。
- 安装与启用
- sudo apt-get update && sudo apt-get install -y haproxy
- sudo systemctl enable --now haproxy
- 关键配置示例(/etc/haproxy/haproxy.cfg)
- 全局与默认
- global
- log /dev/log local0
- log /dev/log local1 notice
- chroot /var/lib/haproxy
- stats socket /run/haproxy/admin.sock mode 660 level admin
- maxconn 4096
- user haproxy
- group haproxy
- daemon
- defaults
- log global
- mode tcp
- option tcplog
- option tcp-check
- timeout connect 5s
- timeout client 50s
- timeout server 50s
- 前端与后端
- frontend informix_front
- bind *:9088
- default_backend informix_drda
- backend informix_drda
- balance leastconn
- option tcp-check
- server master 192.168.10.11:9088 check inter 5s fall 3 rise 2
- server sdr1 192.168.10.12:9088 check inter 5s fall 3 rise 2
- server sdr2 192.168.10.13:9088 check inter 5s fall 3 rise 2
- 说明
- 使用 TCP 模式 直接转发 DRDA,不做 HTTP 解析;采用 leastconn 更适合长连接数据库场景。
- 如有多实例端口(如 9089 等),按需新增 frontend/backend 或扩展 server 行。
- 客户端连接字符串使用负载均衡器地址与端口(如 jdbc:informix-sqli://lb:9088/…)。
- 若需可视化与运维,可开启 HAProxy 统计页面(stats enable / stats uri / stats auth)。
方案二 高可用与 VIP 漂移
- 目的:在负载均衡器或数据库节点故障时,提供 浮动虚拟 IP(VIP) 实现自动切换。
- 安装与启用
- sudo apt-get update && sudo apt-get install -y keepalived
- Keepalived 示例(主节点 /etc/keepalived/keepalived.conf)
- vrrp_instance VI_1 {
- state MASTER
- interface eth0
- virtual_router_id 51
- priority 100
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass 1234
- }
- virtual_ipaddress {
- 192.168.10.100/24 dev eth0 label eth0:0
- }
- }
- 备节点将 state 设为 BACKUP、priority 略低(如 90)。应用与负载均衡器优先连接 VIP 192.168.10.100,实现故障自动切换。
方案三 数据库复制与读写分离
- 技术选型
- HDR(High Availability Data Replication):一主一备,备机可读,主备可切换,适合读扩展与快速故障转移。
- SDS(Shared Disk Secondary):共享磁盘的备用实例,支持并发读写与快速接管。
- RSS(Remote Standalone Secondary):远程异步复制,侧重灾备与读扩展。
- 实施要点
- 在目标实例上启用相应角色(HDR/SDS/RSS),完成初始化与日志传送/回放,验证复制延迟与一致性。
- 结合 HAProxy 将写请求定向主节点、读请求分发到备/从节点,实现读写分离与读负载分担。
验证与运维要点
- 健康检查与演练
- 在 HAProxy 中配置 tcp-check 与合适的 fall/rise 阈值;定期执行主备切换演练,验证 VIP 漂移 与连接连续性。
- 会话与一致性
- 数据库会话粘滞通常由应用或驱动管理;避免跨节点拆分事务,确保 读一致性 与 复制延迟 在可接受范围内。
- 监控与告警
- 监控 连接数、查询延迟、复制延迟、VIP 状态;为 HAProxy 与数据库配置 告警阈值 与 日志审计。