nginx可否作为tidb的负载均衡器

很少看到有人用nginx代理tidb做负载均衡,请问nginx做代理有什么缺陷吗?

只要支持4层代理就可以。

如果只代理http这类协议,那就是工作在7层。那4000这个端口就是没有办法访问的。因为这个端口不是http协议。
而10080这类http协议的,用4层还是7层都可以用nginx代理。

nginx 4层7层都支持,但是我看基本没人用就想知道是否有什么其他缺陷。

我觉得缺陷的可能性很低,因为太基础。每天有很多人在用的功能有bug也修的很快的。

只是你看使用nginx在4层需要额外的stream模块。这个编译的时候或者yum install的时候的版本不一定是有的。
不像haproxy就直接工作在4层。无需额外的模块,就可以代理tidb的任何端口。
其实如果对网络熟悉,怎么代理就根本不是问题。

确实有点麻烦,我yum装的nginx编译参数里面带stream模块。

用的时候还需要load的一下。但这个so文件又找不到。可能还需要重新编译。

对比官方文档haproxy里面那个配置是基本不用动脑,拉下来就能用的。 :joy:

没有啥缺陷,我这边用nginx代理的mysql多了,没发现有啥问题,tidb理论上和mysql没区别,用stream模块随便代理

1 个赞

唯一的缺陷就是 check fail 没那么及时,可以用 tiproxy … 不知道GA 没,

tiproxy 可以感知 PD的信息,tidb 节点状态有变化,会通知 PD…

还没。。让子弹飞一会

nginx+keepalive可以作为tidb的负载的

可以的,但是性能相比HAProxy稍微差一些

可以的

2 个赞

我们这边就这么用。。。。

可以的,不过配置起来比haproxy稍复杂些,而且性能不如haproxy

可以的

Nginx 相关专栏文章:

可以的

可以,但是没有必要把

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。