【TiDB 高可用实践】基于 Haproxy+keepalived 实现负载均衡
作者: HZL_0-0 原文来源:https://tidb.net/blog/a964e538
拓扑图

Haproxy 提供 TCP 协议下的负载均衡能力,TiDB 客户端通过连接 Haproxy 提供的浮动 IP 即可对数据进行操作,实现 TiDB Server 层的负载均衡。
同时,Haproxy 部署 2 个节点,使用 KeepAlived 来实现高可用。一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟 IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟 IP,继续提供服务,从而保证了高可用性。
安装 Haproxy
下载 Haproxy
这里用的是
haproxy-1.8.25.tar.gz
版本。
安装 Haproxy
在 172.23.57.232 和 172.23.57.233 上都进行安装。
配置 Haproxy
将下面配置信息写入 haproxy.cfg 中
启动 Haproxy
查看监控页面
http://172.23.57.232:11001/admin 或 http://172.23.57.233:11001/admin 用户名:admin 密码:admin123

管理 Haproxy 进程
修改 haproxy.cfg 后,每执行一次 /home/haproxy/sbin/haproxy -f /home/haproxy/conf/haproxy.cfg,就会存在一个 haproxy 的进程,可以通过 ps aux | grep haproxy 查看已存在的进程,将不需要的进程 kill 掉。可以通过监控页面上的【Statistics Report for pid 4073477】选择进程号删除。
如果有新的需求需要进行负载均衡,可以新建一个 haproxy_xx.cfg,然后执行
/home/haproxy/sbin/haproxy -f /home/haproxy/conf/haproxy_xx.cfg
或者
在原来的 haproxy_xx.cfg 中添加新的 listen。

安装 Keepalived
下载 keepalived
这里用的是
keepalived-1.4.5
版本。
安装 keepalived
注册 keepalived 为系统服务
配置 keepalived
keepalived 配置中加入 haproxy 的脚本检测扩展,keepalived 会自动检测 haproxy 是否启动,如果没有启动会自动启动,启动一次没成功就会自动关闭 keepalived,将下面的脚本写入 chk_haproxy.sh 中
Keepalived 默认读取的路径为: /etc/keepalived/keepalived.conf
将下面的配置写入 /etc/keepalived/keepalived.conf 中,其中虚拟 ip 由运维人员分配。
启动 keepalived
验证 keepalived
查看 keepalived 的状态

分别查看主机和备用机的 vip


测试
是否起到负载均衡作用
客户端通过虚拟 ip: 172.23.57.207 和配置中的监听端口 4000,能访问成功,说明已经生效。

主机发生故障是否会进行漂移,并且不影响访问
shutdown 主机 232,如果 VIP 发生漂移,查看备用机持有 VIP 就说明主备配置已经生效了。客户端还是能通过 172.23.57.207 这个虚拟 ip 进行服务访问,这就是高可用。
查看备用机 233 的 vip,虚拟 ip 已经漂到备用机上,且 TiDB 集群能正常访问。


主机 232 重新启动。
分别查看主机的 vip 和备用机的 vip,虚拟 ip 已经重新漂到主机上,且 TiDB 集群能正常访问。



TiDB 集群 1 台服务器宕机
在 87 上执行 sudo shutdown -r now。
服务仍能正常访问

87 服务器重新拉起后,该节点的 TiDB 组件自动恢复。

TiDB 集群 2 台服务器宕机
在 88、89 上执行 sudo shutdown -r now。
服务无法正常访问
88、89 服务器重新拉起后,2 个节点的 TiDB 组件自动恢复,服务也能正常访问。

TiDB 集群 3 台服务器宕机
在 87、88、89 上执行 sudo shutdown -r now。
服务无法正常访问

87、88、89 服务器重新拉起后,3 个节点的 TiDB 组件自动恢复,服务也能正常访问。

版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/f86a44a6638a65c4c366db001】。文章转载请联系作者。
评论