首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Nginx/Haproxy管理数据库连接池

通过Nginx/Haproxy管理数据库连接池
EN

Stack Overflow用户
提问于 2019-08-24 00:23:04
回答 1查看 870关注 0票数 1

我们有一个服务的多个实例。此外,我们有多个服务共享同一个数据库。

目前,我们正在管理每个服务实例中的连接池。但是,我们看到了一些问题,因为创建了太多的空闲非活动连接,并且后端数据库限制了太多的空闲非活动连接。

我们正在考虑使用nginx/haproxy来管理数据库连接池。

我查看了haproxy/nginx文档,但没有找到任何与我正在尝试完成的内容相关的内容。

有没有人尝试过使用haproxy/nginx实现类似的解决方案。如果是这样,你能在这方面帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2019-08-27 15:13:52

您可以将haproxy用作tcp负载均衡器(而不是传统的http)。

代码语言:javascript
复制
frontend incoming
maxconn             25000
mode                tcp
bind                10.0.0.100:3306

default_backend     backend-mysql

负载均衡器有一个后端,例如backend-mysql。在这个后端有3个节点

代码语言:javascript
复制
backend backend-mysql
mode                tcp
balance             leastconn
option              httpchk

server              db1 10.0.0.31:3306 check port 9100 inter 12000 rise 3 fall 3 maxconn 256 
server              db2 10.0.0.32:3306 check port 9100 inter 12000 rise 3 fall 3 maxconn 256 backup
server              db3 10.0.0.33:3306 check port 9100 inter 12000 rise 3 fall 3 maxconn 256 disabled

您现在可以将您的服务/客户端指向10.0.0.100。第一个db1是您在这里使用的主数据库。其他是故障转移。第2个节点执行自动故障切换(备份)。第三台服务器,db3 a手动服务器(默认禁用)。相反,如果您的数据库管理系统能够以主-主模式提供服务,则可以将其更改为循环调度情况(db1-db3)。

现在您可以在客户端/ haproxy之间管理您的池(maxconn的前端定义)。您还可以管理haproxy和数据库之间的池(例如,在后端部分使用maxconn256/ https://cbonte.github.io/haproxy-dconv/configuration-1.6.html#3.2-maxconn )。

要获取haproxy的故障切换,您可以使用vrrp/keepalived。(两者共享一个主IP地址。如果一个服务器发生故障,例如lb1,则另一个lb 2接管主ip)、https://github.com/acassen/keepalived

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57629946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档