我想了解 Amazon Aurora for MySQL 或 Amazon Aurora for PostgreSQL 如何在读取器节点之间分配工作负载。
解决方案
使用读取器端点连接到 Amazon Aurora 集群中的读取器端点。
要验证连接的轮换分配,请运行 Shell 命令。若要查看 Aurora 如何尝试对与读取器端点的连接进行负载均衡,请运行与以下示例类似的命令:
while sleep 5; do dig xxx-cluster.cluster-ro-xxxxxx.us-east1.rds.amazonaws.com|grep CNAME; done
您每次解析读取器端点时,都会获得一个可以连接的实例 IP 地址。基于轮换分配,选择此 IP 地址。
在以下情况下,与每个只读副本的数据库连接可能分配不均匀:
- 客户端缓存 DNS 信息。在客户端使用缓存连接设置连接到同一 Aurora 副本时,就会出现分配不均衡。DNS 缓存可以发生在任何地方,包括网络层、操作系统或应用程序容器。
- 如果数据库实例出现故障,则读取器端点可能会重定向连接。读取器端点可能会暂时将连接定向到数据库集群的主数据库实例。在 Aurora 副本提升为主数据库实例时,会发生这种情况。
- 只读副本不可用或未通过运行状况检查。
- 该应用程序是用 Java 编写的,您无需关闭或调整 TTL 缓存。在不关闭或调整 TTL 缓存时,Java 虚拟机(JVM)可能会无限期地缓存 DNS。有关详细信息,请参阅 Setting the JVM TTL for DNS name lookups。
- 如果多个连接同时发生,则将其发送到同一个读取器端点。
在管理工作负载分布时,使用自定义端点以获得更大的灵活性。例如,如果您在集群内使用不同的数据库实例大小,则可以使用自定端点。
相关信息
Amazon Aurora 连接管理