为提高效率,提问时请尽量提供详细背景信息,问题描述清晰可优先响应。以下信息点请尽量提供:
centos7+
3+
tidb 12
pd 5
tikv 27
- 【数据量 & region 数量 & 副本数】
- 【问题描述(我做了什么)】
按照官方的最佳实践进行的haproxy配置
https://pingcap.com/docs-cn/dev/reference/best-practices/haproxy/
目前的配置是根据最少连接数进行优先连接.
如果我想实现根据节点资源进行负载;
比如某个节点的[cpu,内存,网络]占用快到的80%了,我先把这个节点踢出负载列表,等待恢复到20%或者我设定的
阈值时再把这个节点恢复到负载列表中.
这样的话该怎么配置呢?
我提这个的问题是因为现在的集群,经常会出现负载不匀的情况;
我现在12个db的负载经常不均匀,导致某几个节点经常被捅死严重的能到机器宕机.
haproxy
我自己有个这样想法;
我看到源码中和文档中,tidb已经预留了很多监控接口,能查看到节点的各种状态数据;
那我是不是可以在负载前去查下这些接口,并判断是否符合阈值,再进行负载呢?
QBin
(Bin)
3
你好,
1、HAproxy 原生支持的 balance 里面没有给予具体节点负载进行动态负载均衡的算法。具体的负载算法可以查看这里: http://cbonte.github.io/haproxy-dconv/2.0/configuration.html#4-balance 建议如果当前基于连接数的均衡算法不能满足的话。可以调整其他算法试一下。比如加权轮询。
2、如果要实现基于 TiDB 的具体监控数据进行节点上下线的话。需要自己开发,欢迎后面进行分享。
谢谢老哥,已经先使用调节权重的方式,解决某个单点负载高,导致打到这个节点上的计算成为慢查询的现象了.
关于根据tidb节点资源进行负载,我是这样想的,不知道思路对不对.
参考10080端口,我在端口中加入一个GET /statusCheck,返回根据[规则]计算后的当前节点资源状态.
结合haproxy中的option httpchk GET /statusCheck 配置,在代理的时候进行对tidb节点进行健康检查.
以此实现根据资源状态进行负载.
规则,可以根据读配置文件,或者读tidb中的某个表来实现动态修改.
system
(system)
关闭
5
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。