问题:对 AWS Aurora RDS 的活动 TCP 会话进行负载平衡

我目前在正确负载平衡打开的 TCP 会话(由 RoR 应用程序创建)以动态创建 Aurora Postgresql 只读副本时遇到问题。

这个问题是当 TCP 连接已经建立到一个只读副本时,另一个只读副本被创建。之后,来自第一个副本的流量将不会平均分配到第二个副本,因为 TCP 连接已经与第一个副本建立。

所附图表代表当前的基础设施设置。请注意,在只读副本(服务器)和应用程序(客户端)之间有一个负载均衡器,由 Aurora 服务提供,它基于 DNS 循环。

在此处输入图像描述

我已经尝试了ZWZ100008 PGBOUNCER ZWZ100009 ZWZ100007,ZWZ100011 PGPOOL ZWZ100012 ZWZ10001010101010101010和多个Ruby Gems(ZWZ100014 Makara(https://www.pgpool.net/mediawiki/index.php/Main_Page)0015 zwz15015(https://github.com/instacart/makara),(https://github.com/instacart/makara),[forls zwz17 tos zwz17 000 000 000千零件

我浏览了很多文章,他们帮助调查和确认了这个问题;但是,它们都没有提出解决方案。

所以......正如你所看到的,我已经尝试从应用程序和网络的角度来解决这个问题,不幸的是没有运气。有没有人有同样的问题?

解答

最后我发现了这一点,并且必须在应用程序级别上应用修复程序,以停止保持长期有效的 TCP 连接。

特别是在 Ruby 中,我必须设置idle_timeout和reaping_frequency参数。但是在这里你可以找到其他编程语言的参数。

希望它对将来的人有所帮助。干杯!

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐