tiproxy 在文档中介绍主要是负载,我有多台tiproxy的话,然后客户端连接只能用一个,是怎么做的负载呢,例如:
127.0.0.1 负载在 127.0.1.1 ,127.0.1.2 的tidb机器上
127.0.0.2 负载在 127.0.2.1 ,127.0.2.2 的tidb机器上
但客户端又只能连一台tiproxy,当我客户端在不同节点上运行他怎么做的负载啊,目前测试情况来看,需要负载转发在127.0.0.2 性能更好的情况,但因为我客户端配置的是127.0.0.1 地址,导致延迟很高
Kongdom
(Kongdom)
2
文档里这个图应该比较形象,tiproxy访问哪个具体tidb节点,是tiproxy去自动选择的。
那是不是可以理解为,只要给tiproxy打了标签就会走到不同的tidb中,然后我客户端不用管是哪个tiproxy他我多个tiproxy的情况下,他一样会走离自己最近的tiproxy,然后将请求打到指定的tidb中
Kongdom
(Kongdom)
4
但我实际测试不是这样的啊,我客户端配置不同的tiproxy地址的时候延迟明显不一样,是和我tikv有关系嘛,tiproxy和tidb都做了标签,然后tikv都是亚洲机器,是因为tikv都是亚洲机器,当欧洲节点客户端打请求的时候导致的延迟吗?
Kongdom
(Kongdom)
6
没有找到类似验证能获取当前连接tidb节点ip的方法。如果能找到就可以验证当前连接的tidb节点是否符合预期了。
按你说的,貌似这个也可以测一下。
https://docs.pingcap.com/zh/tidb/stable/tiproxy-load-balance/#基于地理位置的负载均衡
或者按照这个排查一下
你现在是tikv都在亚洲,但是tidb-server和tiproxy不是,一部分放在亚洲,一部分放在欧洲?
负载有分,但是tiproxy没有分,一台tiproxy在亚洲,一台在欧洲,然后tidb也是一样的一台在亚洲一台在欧洲,但问题是我客户端只能配一个proxy的ip
都是一样的,亚洲和欧洲机器都是一样的,只是不知道客户端连接打请求的时候会不会选择最优的proxy
Kongdom
(Kongdom)
10
哦,我明白你的意思了。是一个入口,然后入口根据地理位置选择合适的tiproxy,是这个意思不。这个估计只能应用里去控制了吧。相当于亚洲ip访问 欧洲的tiproxy,欧洲的tiproxy应该路由到亚洲的tidb上。
就算按照这个配置,也需要应用先根据位置匹配最近的tiproxy。
https://docs.pingcap.com/zh/tidb/stable/tiproxy-load-balance/#基于地理位置的负载均衡
客户端只能指定一个tiproxy连接吗,然后我试了两个不同连接的延迟,差距巨大
嗯,意思是即便配置了balance.policy: location也需要在客户端层去手动选择tiproxyip是吧
Kongdom
(Kongdom)
13
对,我是这么理解的。因为数据库是感知不到地理位置的。
你现在tiproxy上面还有一层负载?然后欧洲和亚洲都访问这个负载,你希望欧洲连这个负载的时候负载到后端欧洲的tiproxy,亚洲连这个负载的时候负载到后端亚洲的tiproxy,这个不是应该配置负载吗?你用的什么负载?
但我手动配置了不通服务器走不同的proxy,并没有显著的效果啊,延迟还是高
tiproxy上层没有了,tiproxy目前就是我请求的最上层了,希望欧洲连这个负载的时候负载到后端欧洲的tiproxy,亚洲连这个负载的时候负载到后端亚洲的tiproxy
大佬,你的意思说我多个tiproxy上面再加一层nginx嘛,让nginx去做转发?
不对啊,你现在有欧洲的tiproxy,有亚洲的proxy,那不是直接欧洲连欧洲的tiproxy,亚洲连亚洲的proxy就行了吗?
啦啦啦啦啦
19
我看开了多个帖子,直接这个帖子说吧,tiproxy里基于地理位置的负载均衡可以让亚洲的tiproxy连接亚洲的tidb,欧洲的tiproxy连接欧洲的tiproxy,如果想同时用两边的tiproxy并且两边同时要高可用,那你应该搞4个tiproxy,亚洲2个,欧洲两个,亚洲的应用连亚洲的tiproxy的虚IP,欧洲的应用连欧洲tiproxy的虚IP
1 个赞
嗯嗯,就是实际客户端要自己手动配置连哪个proxy是吧