云上TIDB集群高可用负载均衡解决方案

云上TIDB集群高可用负载均衡解决方案

背景: 为了充分保证tidb集群的高可用性,程序连接数据库的时候可以"随机去建立连接,流量会分散打到多台负载均衡器上" 。 这样既高可用性,又能分担流量负载。
传统的解决方案是使用"LVS(NGINX)+keepAlive" , 当负载均衡器数量达到3台及其以上时候, 就会需要超过3台的KeepAlive配置,配置难度大,也复杂。

解决方案:
1. 使用云DNS内网域名解析,将提供访问的域名解析到多台负载均衡器(Nginx)的ip上(对TTL时间进行优化,越小越好)。
2. 负载均衡Nginx TCP Stream 配置4层负载到TIDB节点主机。
3. 在每台负载均衡Nginx主机上对nginx进行检测,当检测nginx挂掉了,自行启动nginx。

架构图:
云上TIDB集群高可用负载均衡解决方案

配置:
1、 三台Nginx负载主机的配置如下:
/usr/local/nginx/conf/nginx.conf 配置如下, 在nginx.conf配置文件中stream模块与http模块是平级的。 部分配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
...
stream {
    upstream tidb {
       least_conn;
       server 10.8.11.160:4000 max_fails=5 fail_timeout=90s;
       server 10.8.11.211:4000 max_fails=5 fail_timeout=90s;
       server 10.8.11.209:4000 max_fails=5 fail_timeout=90s;
       server 10.8.11.235:4000 max_fails=5 fail_timeout=90s;      
       server 10.8.11.246:4000 max_fails=5 fail_timeout=90s;      
     }


   server {
       listen 8765 so_keepalive=on;
       proxy_connect_timeout 60s;
       proxy_timeout 2d;
       proxy_pass tidb;
       tcp_nodelay on;
    }
}

http {
...

}

2、云DNS内网域名解析配置
以华为云为例
华为云 “云解析服务DNS” 内网域名解析,解析TTL时间改成1秒
云上TIDB集群高可用负载均衡解决方案

3、负载测试
测试连接性:
云上TIDB集群高可用负载均衡解决方案
可以在多个客户端上,使用域名加端口来连接数据库,观察3台nginx主机上的TCP网络连接情况,可以看到数据库连接会随机分散打到不同的nginx主机上,实现了流量的负载分担,且同时保证了TIDB集群的高可用性。

相关新闻

联系我们

全国服务热线

400-033-9553

电子邮件:admin@example.com
工作时间:09:00-17:00 周一至周五

在线客服
关注微信
关注微信
分享本页
返回顶部