AWS是否在主数据库和只读副本数据库之间平衡连接的负载

时间:2019-07-25 14:09:34

标签: amazon-web-services amazon-rds database-replication

我为RDS实例创建了一个只读副本,AWS是否自动处理负载平衡,还是需要代码中的其他配置或实现?如果可以的话,有参考吗?

编辑以获取更多说明 当我创建一个只读副本时,它将如何工作并处理请求? 我问是因为它给了我一个端点,所以必须有某种实现方式才能正常工作,对吗? (与主RDS一起)

3 个答案:

答案 0 :(得分:1)

AWS自动处理RDS 故障转移,而不在复制时进行负载平衡。您可以使用以下方法配置只读副本之间的负载平衡方式:

答案 1 :(得分:0)

Amazon通过特定的负载平衡终端节点提供连接load balancing for RDS Aurora数据库集群。对于任何其他RDS数据库配置,您都必须自己处理连接。

  

编辑以得到更多说明当我创建只读副本时   去上班并处理请求?我问是因为它给了我一个   端点,因此必须有一种实现方式   对不对? (与主RDS一起)

那时,您只有2个数据库服务器,每个服务器都有一个可以连接的单独的端点URL。亚马逊仅为您保持这些服务器之间的数据同步。这里没有负载平衡发生。您似乎在假设这里发生的事情比实际发生的更多。如果您使用的是Aurora以外的RDS数据库引擎,则必须自己实现负载平衡。

答案 2 :(得分:0)

不幸的是,Aurora群集的负载平衡非常有限。首先,它会在建立连接时平衡连接,并且在任何情况下都不会重新平衡它们,除非断开并重新打开连接(但这也有限制,请参见下文)。

第二,但是,当Aurora确实分发连接时,它没有考虑到已为每个只读副本建立的连接数。

第三,它使用DNS切换过程(TTL为1秒)来完成。综上所述,不幸的是,很常见的情况是某些副本比其他副本收到更多的连接。更不用说没有关闭实例以关闭实例的机制了。

由于上述所有限制和高度不平衡的负载,我们为MySQL和PostgreSQL开发了fairlink JDBC驱动程序(或更确切地说是信封驱动程序)。您可以在这里找到它:https://github.com/DiceTechnology/dice-fairlink