我目前正在运行一个通过Elasticache使用Redis的网站。我们希望移动到具有更多RAM的更大实例,因为我们在当前实例类型上达到了大约70%。
有没有办法按照扩展RDS实例的方式扩展Elasticache实例?
替代方案,我想创建一个副本组并向其添加更大的实例。然后,一旦它被复制并运行,就将新实例提升为主实例。这似乎不可能通过AWS控制台实现,因为副本是使用与主节点相同的实例类型创建的。
我错过了什么,或者只是一个无法实现的用例。我知道我可以启动一个更大的实例并手动处理复制,然后移动Web服务器以使用新服务器,但由于DNS迁移等原因需要一些停机时间。
谢谢! 艾伦
答案 0 :(得分:9)
Elasticache在memcached的意义上更像是一个缓存解决方案,这意味着要扩展,你确实会启动一个新的集群并将你的应用程序切换到它。性能会暂时降低,因为必须重建缓存,但仅此而已。
对于许多人(我怀疑你包括在内),Redis更像是NoSQL数据库解决方案,其中数据丢失是不可接受的。亚马逊提供了读取副本作为解决该问题的“解决方案”,但它仍然有点不确定。当然,它提供了复制以降低数据丢失的风险,但它仍然远不如Redis 数据库的RDS那样安全(或成熟)(而不是缓存,因为它是非常完美),它提供备份和恢复程序,以及结构良好的变更管理,以支持扩展。据我所知,ElastiCache 不支持更改正在运行的集群的实例类型。这表明它只是一个内存解决方案,会在重启时丢失所有数据。
我会说,如果数据丢失问题,您应该查看自动Redis解决方案而不是简单地使用ElastiCache。它不仅运行起来稍微便宜,它还可以让您像在任何其他EC2实例上一样更改实例类型(当然,在停止之后)。它还可以使您使用RDB或AOF持久性。
答案 1 :(得分:2)
现在,您可以扩展到更大的节点类型,而ElastiCache会保留:
https://aws.amazon.com/blogs/aws/elasticache-for-redis-update-upgrade-engines-and-scale-up/
答案 2 :(得分:1)
是的,您可以立即将正在运行的Elasticache实例类型扩展为更大的大小。我已经对它进行了测试,并且经历了非常少的实际停机时间(我想起初几秒钟,但很快就会恢复在线状态,即使控制台显示该过程需要大约几分钟才能完成。)我从t2开始.micro到m3.medium没有问题。
答案 3 :(得分:0)