设置 Redis 集群以实现可扩展性和高可用性
可通过 免费套餐 试用。
扩展、高可用性和实时应用程序
开发人员
在本教程中,您将学习如何使用启用了 TLS 加密的 ElastiCache for Redis 7.0 版本创建和配置 Redis 集群。启用集群模式后,Redis 集群将获得增强的可扩展性和高可用性。您可以从小规模开始,并随着应用程序的增长轻松扩展 Redis 数据,通过在不同可用区设置副本,还可以提高读取能力。通过学习本教程,您还将了解有关部署 Redis 集群的一些最佳实践。
Redis 客户端生态系统非常丰富,支持集群模式功能。客户端可以在本地缓存中跟踪哈希槽的位置,因此可以很容易且可靠地处理分片数据,从而提高整个系统的性能。
本教程中创建的 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
现在您已经准备好开始本教程了。
步骤 1:进入 ElastiCache 控制面板
打开 ElastiCache 控制面板,然后:
1.1 — 在右上角,选择要启动 Redis 集群的区域。
1.2 — 点击 Get Started Now(立即开始)。
步骤 2:创建 Redis 集群
2.1 — 选择 Redis 作为集群引擎。
2.2 — 勾选 Cluster Mode enabled(启用集群模式)。
步骤 3:配置 Redis 设置
3.1 — 为 Redis 集群选择一个名称,例如 elc-tutorial。
3.2 — 将 Node type(节点类型)更改为 cache.t2.micro。在本教程中可以使用这种节点类型,但对于生产集群而言,节点的大小应取决于您的工作负载,您应该从 m5 或 r5 实例系列开始。
3.3 — 在 Number of Shards(分片数)中,选择 3。这意味着数据将被划分到三个不同的主节点中。
3.4 — 在 Replicas per Shard(每个分片的副本数)中,选择 2。这意味着每个主节点将有两个副本。如果出现故障,将触发自动故障转移,其中一个副本将接管主节点的角色。
步骤 4:配置高级 Redis 设置
4.1 — 勾选 Multi-AZ with Auto-Failover(具有自动故障转移功能的多可用区)复选框。
每个主节点将在不同的可用区中创建,其每个副本也将分配到不同的可用区。这是提高可靠性的最佳实践。
其他字段保留默认值
步骤 5:配置安全设置
在本例中,我们将不使用加密,但请记住,您可以同时为静态数据和传输中的数据配置加密。
5.1 — 为 Redis 集群选择安全组。
这一点很重要:请确保您选择的安全组允许端口 6379 上的传入 TCP 连接。否则,您将无法连接到 Redis 节点。
步骤 6:将数据导入集群
在本例中,我们不会加载任何 RDB 种子文件,因此可以完全跳过此配置步骤。只需记住,该选项是可用的。
步骤 7:配置备份
对于大多数使用场景,每日备份都很重要,一种较好的做法是启用具有保留期的备份,以便在出现任何问题时有足够的时间采取行动。在本教程中,我们不会使用任何备份。
7.1 — 取消选中 Enable automatic backups(启用自动备份)。
步骤 8:维护设置
8.1 — 指定适合您需求的维护时间窗口。
在这里,您可以考虑应用程序工作负载较低的时间和日期。对于我们目前的需求,我们可以选择 No preference(无首选项)。
步骤 9:检查并创建
快速检查表单中的所有字段后,您可以点击 Create(创建)。
9.1 — 点击 Create(创建)。
Redis 集群将被初始化,一旦其状态变为可用 (Available),您就可以继续执行步骤 10。
如果您偏好使用 Amazon CLI,以下命令将一次性创建 Redis 集群:
如果您偏好使用 Amazon CLI,以下命令将一次性创建 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 — 选择任一节点,点击 Action(操作)并选择 Failover primary(对主集群进行故障转移)。
阅读消息以了解正在发生的情况,然后点击 Continue(继续)。其中一个副本将成为新的主节点,每个主节点的副本数量也将恢复。您可以运行 CLUSTER NODES 命令来验证正在发生的情况。
步骤 12:删除集群
为了完成本实验,您将了解如何在不再需要 Redis 集群时将其删除。
要删除 Redis 集群,请转到 ElastiCache 控制面板并按照以下说明操作:
12.1 — 在左侧栏中点击 Redis。
系统将为您显示所有 Redis 集群的列表。
12.2 — 选择您为本教程创建的 Redis 集群。
12.3 — 点击 Delete(删除)。
12.4 — 系统会询问您是否要创建最终备份。这通常是个好主意,但对于本教程而言没有必要。选择 No(否),然后点击 Delete(删除)。
集群的状态将变为 deleting(正在删除)。