我有一个带有读取器和写入器实例的Aurora集群。读者实例具有很高的点击率,并时不时地达到100%。我想知道减少相同负载的可能选择。当前实例类型为db.r4.4xlarge。
我还阅读了有关添加多个使用相同端点的读取器实例的信息,AWS会自动平衡它们之间的流量。我想知道是否我需要做的就是添加另一个阅读器实例,并且所有负载平衡会自动发生?在创建新的读取器时,创建新的读取器是否会影响群集的性能?
如何使用Redis ElasticCache实例?如何与RDS一起使用以减少同一实例的负载。
以上2个中哪个是前进的最佳方式???请建议
答案 0 :(得分:0)
向Aurora群集添加更多读取器实例或扩展读取器实例是避免占用大量CPU的方法。使用仅限读者的端点时,您必须记住一些要点
Load Balancing with the Aurora Reader Endpoint
Aurora reader endpoint包含所有Aurora副本,它可以为新连接提供基于DNS的循环负载平衡。每次解析读取器端点时,都会获得一个可以循环连接的实例IP。
DNS负载平衡在连接级别(而不是单个查询级别)工作。您必须继续解析终结点而不缓存DNS,以在每个分辨率上获得不同的实例IP。如果只解析一次端点,然后将连接保留在池中,则该连接上的每个查询都将进入同一实例。如果缓存DNS,则每次解析端点时都会收到相同的实例IP。
DNS缓存
由于DNS缓存,Aurora副本可能会遇到利用率不均的情况。
除非使用智能数据库驱动程序,否则您将依赖DNS记录更新和DNS传播来进行故障转移,实例扩展以及跨Aurora副本进行负载平衡。 当前,Aurora DNS区域使用5秒钟的短生存时间(TTL)。确保您的网络和客户端配置不会进一步增加DNS缓存的TTL。 请记住,DNS缓存可以发生在从网络层到操作系统,再到应用程序容器的任何地方。例如,除非另行配置,否则Java虚拟机(JVM)会无限期地缓存DNS而臭名昭著。