设置 Redis 集群的可扩展性和高可用性

Amazon ElastiCache for Redis 集群模式设置、配置、安全和预置

在本教程中,您将了解如何使用 ElastiCache for Redis 创建和配置 Redis 集群。启用集群模式后,您的 Redis 集群将获得增强的可扩展性和高可用性。您可以从小入手,并随着应用的增长轻松扩展 Redis 数据,通过在不同可用区中设置副本,您还可以提高读取容量。通过学习本教程,您还将了解到 Redis 集群部署的一些最佳实践。

Redis 拥有丰富的客户端生态系统,并为集群模式功能提供支持。这样用户就可以轻松可靠地使用分区数据,因为客户端可以跟踪本地缓存中哈希操的位置,从而提高系统的总体性能。

本教程中创建的 ElastiCache 节点可使用免费套餐。

登录 Amazon ElastiCache 控制面板 »

要求

在本教程中,您需要连接到 Redis 集群才能抢先体验其部分功能。这意味着,您需要能够访问安装有 Redis 客户端的 EC2 实例。如果您已有安装了 Redis 客户端的 EC2 实例,可以跳至步骤 1。否则,请连接到 Amazon EC2 实例,并根据下面的说明操作以安装 Redis 客户端。

如果您没有可用的 C 编译器,请运行以下命令进行安装:

$ sudo yum install gcc

下载并编译 Redis 客户端:

$ curl -O http://download.redis.io/redis-stable.tar.gz
$ tar xvzf redis-stable.tar.gz
$ cd redis-stable
$ make distclean  # Ubuntu systems only
$ make

现在您已准备就绪,可以开始学习教程了。

关于本教程
时间 10 - 20 分钟                                           
费用 免费套餐资格
使用案例 扩展、高可用性、实时应用程序
产品 AWS ElastiCache for Redis、AWS 免费套餐
受众 开发人员
级别 新手
上次更新时间 2019 年 6 月 5 日

步骤 1:进入 ElastiCache 控制面板

打开 ElastiCache 控制面板,然后:

1.1 - 在右上角,选择要启动 Redis 集群的区域。

1.2 - 单击“立即开始使用”。

步骤 2:创建 Redis 集群

2.1 - 选择“Redis”作为“集群引擎”。

2.2 - 确认“集群模式已启用”。

步骤 3:配置 Redis 设置

3.1 - 为 Redis 集群选择一个名称,例如“elc-tutorial”。

3.2 - 将“节点类型”更改为 cache.t2.micro。对于本教程来说,此节点类型没有问题,但是对于生产集群而言,节点的大小应该取决于您的工作负载,您应该从 m5 或 r5 实例系列开始。

3.3 - 在“分区数量”中,选择 3。这表示数据将分区到三个不同的主节点中。

3.4 - 在“每个分区的副本数量”中,选择 2。这表示每个主节点将拥有两个副本。如果发生故障,将触发自动故障转移,其中一个副本将接管主节点的角色。

3.5 - 选择子网组。如需了解有关子网组的更多信息,请参阅文档

步骤 4:配置高级 Redis 设置

4.1 - 选中“具有自动故障转移功能的多可用区”对应的框。

每个主节点将在一个不同的可用区中创建,它的每个副本也将分配到一个不同的可用区。这是一项提高可靠性的最佳实践。

其他字段保留默认值。

步骤 5:配置安全设置

在本例中,我们不使用加密,但请记住,您可以为静态数据和传输中的数据配置加密。

5.1 - 为 Redis 集群选择安全组。

务必确保您选择的安全组允许来自 6379 端口上的传入 TCP 连接。如果不允许,您将无法连接到您的 Redis 节点。

步骤 6:将数据导入集群

在本例中,我们不加载任何种子 RDB 文件,因此可以完全跳过此配置步骤。只需记住,可以选择此选项。

步骤 7:配置备份

对于大多数使用案例而言,每日备份非常重要,但建议最好启用有保留期的备份,以便在发生意外情况时有足够的时间采取措施。在本教程中,我们不使用任何备份。

7.1 - 取消选中“启用自动备份”。

步骤 8:维护设置

8.1 - 根据您的需求指定维护时段。

在这个阶段,您可以考虑应用程序工作负载低的时间和日期。根据我们目前的需求,我们只需指明“无偏好”即可。

步骤 9:检查和创建

快速检查表单中的所有字段后,您可以点击“创建”。

9.1 - 单击“创建”。

Redis 集群将进行初始化,状态变为“可用”后,便能够继续执行步骤 10。

如果您倾向于使用 Amazon CL,下面的命令将会一次性创建整个 Redis 集群:

如果您倾向于使用 Amazon CL,下面的命令将会一次性创建整个 Redis 集群:

$ aws elasticache create-replication-group \
--replication-group-id elc-tutorial \
--replication-group-description "Tutorial example" \
--num-node-groups 3 \
--cache-node-type cache.t2.micro \
--cache-parameter-group default.redis5.0.cluster.on \
--engine redis \
--engine-version 5.0.3 \
--cache-subnet-group-name sn-value \
--security-group-ids sg-value \
--node-group-configuration \
"ReplicaCount=2,PrimaryAvailabilityZone='us-east-1a',ReplicaAvailabilityZones='us-east-1b','us-east-1c',Slots=0-5460" \
"ReplicaCount=2,PrimaryAvailabilityZone='us-east-1b',ReplicaAvailabilityZones='us-east-1c','us-east-1a',Slots=5461-10921" \
"ReplicaCount=2,PrimaryAvailabilityZone='us-east-1c',ReplicaAvailabilityZones='us-east-1a','us-east-1b',Slots=10922-16383"

对于 --security-group-ids 的参数,您需要将 sg-value 替换为您想要使用的安全组的 ID。

而对于 --cache-subnet-group-name 的参数,请将 sn-value 替换为子网组的名称。如果需要创建子网组,请使用以下命令:

$ aws elasticache create-cache-subnet-group \
--cache-subnet-group-name elc-tutorial-subnet \
--cache-subnet-group-description "Tutorial Subnet Group" \
--subnet-ids sn-ids

sn-ids 的值必须是子网 ID 列表。

如果您倾向于使用 Amazon API,下面的请求可创建 Redis 集群:

https://elasticache.us-east-1.amazonaws.com/
?Action=CreateReplicationGroup 
&CacheParameterGroup=default.redis5.0.cluster.on
&Engine=redis
&EngineVersion=5.0.3
&ReplicationGroupDescription=Tutorial%20example
&ReplicationGroupId=elc-tutorial
&NumNodeGroups=3
&PrimaryClusterId=elc-primary
&ReplicasPerNodeGroup=2
&Version=<version>
&SignatureVersion=4
&SignatureMethod=HmacSHA256
&Timestamp=<timestamp>
&X-Amz-Credential=<credential>

在上一个请求中,您需要提供 Version、Timestamp 和 X-Amz-Credential 的值。

步骤 10:连接 Redis

找到 Redis 集群的配置终端节点。

10.1 - 单击箭头以显示 Redis 集群详细信息。

10.2 - 复制配置终端节点。

在示例中,每次提到终端节点时,都应使用配置终端节点的主机名。

10.4 - 使用 redis-cli 实用工具连接 Redis 节点。

$ ./src/redis-cli -c -h endpoint

10.5 - 通过 PING 测试连接。

endpoint:6379> PING
	PONG

步骤 11:触发故障转移

现在,您已有了正常工作、状态良好的 Redis 集群。集群模式的一种功能是如果一个节点发生故障,集群可以自我修复。为了测试这一功能,您可以手动触发故障转移,这样将发生以下事件:系统将选择只读副本来接管主节点的角色,在系统执行故障转移后,您就能够连接到新的主节点。同时,系统会自动添加新的只读副本,以便集群仍拥有一个主节点和两个副本。

使用步骤 10 中的终端节点来检查节点的角色。

11.1 - 检查终端节点的角色。

	endpoint:6379> ROLE
	1) "master"
 	...

您想要连接到主节点。如果没有连接到主节点,尝试其他终端节点。您有三次尝试机会。

找到主节点后:

11.2 - 选择任意节点,单击“操作”并选择“故障转移主节点”。

阅读消息,了解当前正在发生的事件,然后单击“继续”。其中一个副本成为新的主节点后,系统将会恢复每个主节点的副本数量。您可以运行 CLUSTER NODES 命令验证正在发生的事件。

步骤 12:删除集群

为完成此实验,您将学习当不再需要 Redis 集群时如何将其删除。

要删除 Redis 集群,请转到 ElastiCache 控制面板,然后按照以下说明执行操作:

12.1 - 在左侧窗格中选择“Redis”。

这将显示您的所有 Redis 集群列表。

12.2 - 选择您为此教程创建的 Redis 集群。

12.3 - 单击“删除”。

12.4 - 系统将询问您是否要创建最终备份。通常情况下建议您创建快照,但在本教程中没有必要这样做。选择“否”,然后单击“删除”。

集群的状态将更改为“正在删除”。

恭喜

您已创建启用了集群模式的 Redis 集群。节点分散在各个可用区中,并配置有自动故障转移功能。您还学习了关于 Redis 集群部署的最佳实践。

本教程对您是否有帮助?

谢谢
请告知我们您喜欢什么。
关闭
很抱歉让您失望了
是否存在过时、令人困惑或不准确的内容? 请向我们提供反馈,帮助我们改进本教程。
关闭

了解更多

如果您想进一步了解 Redis 集群,请阅读 Redis 集群 101 博客文章。 如需阅读更多入门内容、开发者指南和使用案例技术博客,请访问我们的资源页面

选择合适的节点大小

确定 Redis 节点的大小似乎并不容易,但我们编写了一些准则来帮助您根据需要选择合适的节点大小

缓存策略

最后,您可以继续阅读缓存策略和最佳实践来提高性能和可靠性。