pgbouncer-auroraDB集群无法正确负载均衡

时间:2019-05-09 06:12:56

标签: amazon-rds amazon-rds-aurora pgbouncer

我将AuroraDB集群与2个读取器和pgBouncer一起使用来维护连接池。

我的应用程序读取强度很高,并且会触发很多选择查询。

我面临的问题是我的2个只读副本没有完全并行使用。

我可以看到趋势,其中所有连接都移至1个副本,而其他副本正在为0个连接提供服务,一段时间后,情况发生了变化,即第二个副本为所有连接提供服务而第一个为0提供服务。

我对此进行了调查,发现auroraDB集群负载平衡是通过按时间间隔1秒的时间间隔完成的。

我的猜测是,当pgBouncer创建连接池时,所有连接都在1秒窗口内创建,并且所有连接最终都位于1个只读副本上。

有什么办法可以纠正这个问题?

1 个答案:

答案 0 :(得分:0)

DB端点是Route 53 DNS,每次解析DNS时,负载平衡基本上都是通过DNS循环完成的。当您使用pgBouncer时,它是否只解析DNS并尝试打开与已解析IP的连接?如果是,则可以预期所有连接都解析到同一实例。您可以通过多种方式从概念上解决此问题(我对pgBouncer不太熟悉),但是您基本上需要以某种方式使该库为每个连接显式解析DNS,或将所有实例端点显式添加到配置中。如果计划使用此连接池发布写入,则不建议使用后者。您无法控制谁留任作者,因此您可能会无意中最终将您的写入内容发送到副本。

  

AuroraDB集群负载平衡通过按时间间隔1秒的间隔进行   我不太确定你在哪里读的。你能分享一些参考吗?