AWS ElastiCache 集群和 AWS ElastiCache 复制组有啥区别?

Posted

技术标签:

【中文标题】AWS ElastiCache 集群和 AWS ElastiCache 复制组有啥区别?【英文标题】:What is the difference between AWS ElastiCache Cluster and AWS ElastiCache Replication Group?AWS ElastiCache 集群和 AWS ElastiCache 复制组有什么区别? 【发布时间】:2020-02-09 21:46:32 【问题描述】:

在 terraform/cloudformation 文档中,有两种不同的资源可用于创建 ElastiCache Redis 实例:

    aws_elasticache_cluster (https://www.terraform.io/docs/providers/aws/r/elasticache_cluster.html) aws_elasticache_replication_group (https://www.terraform.io/docs/providers/aws/r/elasticache_replication_group.html)

这两者有什么区别?我应该选择哪一个?

【问题讨论】:

【参考方案1】:

简单来说,复制组是给 Redis 集群的,缓存集群是给 Memcache 的。您不能将命令应用于其他命令,即 Redis 集群的缓存集群,反之亦然。

redis 也可以使用aws_elasticache_cluster,但前提是redis 有节点1,那不是集群模式。

num_cache_nodes – (除非提供了 replication_group_id,否则是必需的)缓存集群将拥有的初始缓存节点数。对于 Redis,此值必须为 1。对于 Memcache,此值必须介于 1 到 20 之间。如果在后续运行中减少此数字,则将删除编号最高的节点。

【讨论】:

为什么可以在engine 参数上为aws_elasticache_cluster 指定redis? terraform.io/docs/providers/aws/r/… 当redis不是节点1的集群模式时,可以使用cluster命令,非常特别。 将选择aws_elasticache_replication_group 导致集群redis 具有一个分片,choosing aws_elasticache_cluster 将导致标准redis 默认具有一个分片。如果这是正确的,任何人都可以帮忙吗?【参考方案2】:

复制组是缓存集群的集合,其中一个集群是主读写集群,其他集群是只读副本。

AWS::ElastiCache::CacheCluster

AWS::ElastiCache::ReplicationGroup

【讨论】:

我已经阅读了文档,但说实话我并没有完全理解其中的区别,我应该选择哪一个?

以上是关于AWS ElastiCache 集群和 AWS ElastiCache 复制组有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用用于 memcached 的 Membase 客户端库连接到 AWS ElastiCache 集群

如何将 AWS Elasticache Redis 集群连接到 Spring Boot 应用程序?

动态更改terraform中aws_elasticache_replication_group的配置

在使用 AWS Elasticache 的 Spring 引导中,集群异常 (JedisNoReachableClusterNodeException) 中没有可达节点

使用 Predis 使用 Laravel-5.4.32 配置 AWS Elasticache redis Cluster-3.2.4

以最短的停机时间将 Redis 迁移到 AWS Elasticache