使用适用于 Redis 的亚马逊 ElastiCache 和适用于 Redis 的亚马逊 MemoryDB 推出 99.99% 的可用性

托管云服务消除了管理基础架构的繁琐任务,并提供了多项关键优势,包括可扩展性、成本节约和安全性。这些好处使关键任务应用程序迁移到云端变得很有吸引力。高可用性对于这些应用程序尤其重要,因为任何停机都可能导致收入损失、影响团队工作效率并降低客户满意度。最近, 适用于 Redis 的 亚马逊 ElastiCache 和 适用 于 Redis 的亚马逊 MemoryDB 推出了一项 针对多可用区(多可用区)配置的 99.99% 的更高可用性服务等级协议 (SLA)。

此前,适用于 Redis 和 MemoryDB 的亚马逊 ElastiCache 为多可用区配置提供了 99.9% 的服务级别协议。与公共 SLA 相比,这些服务旨在提供更高的可用性级别。在过去的一年中,亚马逊云科技 在 ElastiCache 和 MemoryDB 的高可用性技术方面开发了更多创新,包括高级监控、减少主节点受损期间的故障转移时间以及加快恢复流程。凭借这些进步,我们为适用于 Redis 和 MemoryDB 多可用区配置的亚马逊 ElastiCache 引入了 99.99% 的服务级别协议。下表概述了这些服务提供的可用性等级。要了解更多信息,请参阅 ElastiCache 服务等级协议 和 M emor yDB 服务级别协议。

Configuration Type Availability SLA Max Downtime/Month
Single-AZ 99.50% 3h 37m 21s
Previous Generation
Multi-AZ
99.9% 43m 28s
Multi-AZ 99.99% 4m 21s

每分钟的不可用性都直接转化为应用程序无法为传入的请求提供服务,因此,最大限度地提高可用性成为高质量用户体验的要求。需要实时数据访问或处理、涉及大量数据或有严格正常运行时间要求的工作负载将受益于高度可用的内存数据库。以下是总部位于旧金山的领先身份和访问管理公司 ElastiCache 客户 Okta 提到的关于将可用性提高到 99.99% 的内容:

“超过17,000个组织信任Okta来帮助他们保护客户和员工的身份。为我们的客户提供关键任务服务需要在堆栈的每个层面建立稳定性和弹性。像 ElastiCache 这样原生提供 99.99% 可用性 SLA 的 亚马逊云科技 服务有助于我们简化复杂性并兑现我们对客户的承诺。” — Okta 产品高级副总裁 Cassio Sampaio。

更新后的 SLA 适用于我们最新的 ElastiCache for Redis 和 MemoryDB 引擎版本,适用于这些服务通常可用的所有适用区域。在这篇文章中,我们演示了如何开始使用 ElastiCache 和 MemoryDB 的 99.99% 的可用性 SLA。

使用适用于 Redis 的弹性缓存确保更高的可用性

启用 多可用区选项 可提高容错能力并增强集群的可用性。启用多可用区后,适用于 Redis 的 ElastiCache 会将每个集群分片的主节点和至少一个副本节点放在不同的可用区中。如果主节点受损,ElastiCache 将在几秒钟内自动将复制延迟最小的只读副本提升为新的主节点。然后,该服务会自我修复受损的主节点或将其替换为新的副本节点,并同步来自新主节点的数据。有关更多信息,请参阅 多可用区响应 的 故障场景

2023 年 1 月 13 日之后创建并运行适用于 Redis 版本 6.2 或更高版本的 ElastiCache 的 ElastiCache 多可用区集群自动符合更新后的 99.99% 服务级别协议的资格。对于在此日期之前创建的集群,您可以应用最新的引擎服务更新来确保 SLA 资格。

在以下部分中,我们将介绍如何通过控制台和 亚马逊云科技 CLI 确保适用于 Redis 集群的 ElastiCache 达到 99.99% 的 SLA 资格。

通过控制台验证适用于 Redis 的 ElastiCache 集群是否有资格获得 99.99% 的服务级别协议

要使用控制台验证您的 ElastiCache 是否符合使用 Redis 集群的资格,请完成本节中的步骤。

验证多可用区是否已启用

有两种方法可以使用控制台检查您的 ElastiCache 集群上是否启用了多可用区:

  1. 通过 可信顾问控制台
  2. 通过 ElastiCache 控制台

验证是否通过 亚马逊云科技 Trusted Advisor 控制台启用了多可用区

如果您有多个适用于 Redis 的 ElastiCache 集群,则检查集群上的多可用区是否处于非活动状态的最简单方法是登录 亚马逊云科技 Trusted Advisor 控制台并查看 容错 检查。 绿色状态表示多可用区在集群中处于活动状态。黄色状态表示多可用区处于非活动状态。

请注意,亚马逊云科技 Trusted Advisor 容错检查需要 24 小时才能准确反映多可用区在集群中处于活动状态还是非活动状态。此外,对于使用商务、企业入口或企业支持计划的客户,容错检查是可见的。有关更多信息,请参阅 亚马逊云科技 支持计划

验证是否已通过 ElastiCache 控制台启用多可用区

您可以通过以下步骤在 ElastiCache 控制台中检查多可用区是否已启用:

  1. 在 ElastiCache 控制台上,选择导航窗格 上 的 Redis 集群
  2. 资源 选项卡上,选择单个集群以查看其详细信息。
  3. 集群详细信息 下 ,查看 多可用区 下的集群是否已启用。

如果未启用多可用区,请确保在启用多可用区之前,将每个分片中的主集和副本集部署在至少两个不同的可用区中。然后,您可以通过修改集群来启用多可用区。有关此过程的更多信息,请参阅 修改 ElastiCache 集群 使用 亚马逊云科技 管理控制台 部分。

验证适用于 Redis 的 ElastiCache 集群是否正在运行适用于 Redis 的 ElastiCache 版本 6.2

在 ElastiCache 控制台的同一 Redis 集群 页面上,您还可以检查适用集群是否正在 引擎版本下的 Redis 6.2 版或更高版本的 ElastiCache 上运行。

如果引擎版本低于 Redis 版 ElastiCache 6.2,则可以通过修改集群来升级到更新的引擎版本。有关此过程的更多信息,请参阅 修改 ElastiCache 集群 使用 亚马逊云科技 管理控制台 部分。

验证 2023 年 1 月 13 日之后发布的最新引擎服务更新已安装在 Redis 多可用区集群上

如果您在 2023 年 1 月 13 日之后为运行 Redis 版本 6.2 或更高版本的 Redis 创建了 ElastiCache 集群,或者将现有集群升级到 Redis 6.2 版或更高版本,则可以跳过此步骤。

检查您的适用于 Redis 的 ElastiCache 集群是否正在运行 2023 年 1 月 13 日之后发布的最新引擎服务更新。

  1. Redis 集群 页面上选择适用的集群
  2. 在导航窗格中选择 服务更新 ,查看该集群的适用服务更新(如果有)。然后,您可以按发布日期进行筛选,查看 2023 年 1 月 13 之后的最新引擎服务更新。

如果控制台显示服务更新列表,则可以选择 1 月 13 日之后发布的引擎服务更新 ,然后选择 A pply now

如果控制台显示 “未找到服务更新”,则表示 ElastiCache for Redis 集群已经应用了最新的引擎服务更新,无需采取进一步的操作。

通过 亚马逊云科技 CLI 验证适用于 Redis 的 ElastiCache 集群是否有资格获得 99.99% 的服务级别协议可用性

在本节中,我们将使用 亚马逊云科技 CLI 完成三步验证过程。

验证多可用区是否已启用

您可以运行以下命令,通过 亚马逊云科技 CLI 检查您的复制组是否启用了多可用区:

aws elasticache describe-replication-groups

此命令的 JSON 输出应与以下示例代码类似。 MultiAZ 标志表明您是否启用了多可用区以增强容错能力。有关更多信息,请参阅 亚马逊云科技 CLI 描述复制组命令

{
...
            "AutomaticFailover": "enabled",
			"MultiAZ": "enabled",
            "SnapshotRetentionLimit": 0,
            "SnapshotWindow": "07:30-08:30",
            "ClusterEnabled": false,
            "CacheNodeType": "cache.r5.xlarge",
            "AuthTokenEnabled": false,
            "TransitEncryptionEnabled": false,
            "AtRestEncryptionEnabled": false,
            "ARN": "arn:aws:elasticache:us-west-2:xxxxxxxxxxx152:replicationgroup:my-cluster",
        }
        ...
    ]
}

如果您在运行 describe 命令后发现多可用区被禁用, 确保在启用多可用区之前,将每个分片中的主可用区和副本集部署在至少两个不同的可用区中。然后,您可以通过修改集群来启用多可用区。有关此过程的更多信息,请参阅 启用多可用区 (亚马逊云科技 CLI)

验证适用于 Redis 的 ElastiCache 集群是否正在运行适用于 Redis 的 ElastiCache 版本 6.2

你可以通过运行以下命令来检查适用于 Redis 的 ElastiCache 集群是否正在运行适用于 Redis 的 ElastiCache 版本 6.2 或更高版本:

aws elasticache describe-cache-clusters

此命令的 JSON 输出应与以下代码类似。 engineVersion 属性是指运行集群的缓存引擎版本。有关更多信息,请参阅 亚马逊云科技 CLI describe-c ache-clusters 命令

{
    "CacheClusters": [
    ...
    {
            "CacheClusterId": "my-cluster-003",
            "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:",
            "CacheNodeType": "cache.r5.large",
            "Engine": "redis",
			"EngineVersion": "6.2.6",
            "CacheClusterStatus": "available",
            "NumCacheNodes": 1,
            "PreferredAvailabilityZone": "us-west-2a",
            "CacheClusterCreateTime": "2023-01-16T01:22:52.396Z",
            "PreferredMaintenanceWindow": "mon:17:30-mon:18:30",
            "PendingModifiedValues": {},
            "NotificationConfiguration": {
                "TopicArn": "arn:aws:sns:us-west-2:xxxxxxxxxxx152:My_Topic",
                "TopicStatus": "active"
            },
            ...
    ]
}

如果引擎版本低于 Redis 版 ElastiCache 6.2,则可以通过使用 亚马逊云科技 CLI 修改集群或复制组并指定更新的引擎版本来启动集群或复制组的版本升级。有关更多信息,请参阅 如何升级引擎版本

验证最新的引擎服务更新是否已安装在 Redis 多可用区集群上

如果您在 2023 年 1 月 13 日之后为运行 Redis 版本 6.2 或更高版本的 Redis 创建了 ElastiCache 集群,或者将现有集群升级到 Redis 6.2 版或更高版本,则可以跳过此步骤。

要检索使用适用于 Redis 的 ElastiCache 6.2 或更高版本的复制组可用的服务更新的描述,请在 亚马逊云科技 CLI 上运行以下命令:

aws elasticache describe-update-actions --replication-group-ids ReplicationGroupID --service-update-status available

请参阅 s erviceUpdateReleaseDate 和 s erviceUpdateTy pe 属性,以验证你是否正在应用 2023 年 1 月 13 日之后发布的引擎服务更新。此外,您可以使用 updateActionSt atus 属性来确定是否尚未应用适用的服务更新。如果您有待处理的引擎服务更新要应用到复制组,则输出将与以下代码类似:

{
    "UpdateActions": [
        {
            "ReplicationGroupId": "my-replication-cluster",
			"ServiceUpdateName": "elasticache-redis-6-2-6-update-20230109",
      		"ServiceUpdateReleaseDate": "2023-01-17T08:00:00+00:00",
      		"ServiceUpdateSeverity": "medium",
      		"ServiceUpdateStatus": "available",
      		"ServiceUpdateRecommendedApplyByDate": "2023-03-18T07:59:59+00:00",
      		"ServiceUpdateType": "engine-update",
      		"UpdateActionAvailableDate": "2023-01-17T08:40:38.319000+00:00",
      		"UpdateActionStatus": "not-applied",
      		"NodesUpdated": "0/2",
      		"UpdateActionStatusModifiedDate": "2023-01-17T08:40:38.374000+00:00",
      		"SlaMet": "no",
      		"EstimatedUpdateTime": "30 minutes per node",
      		"Engine": "redis"
 		}
	]
}

如果您的复制组在最新的引擎服务更新上运行,并且没有待应用的服务更新,您将得到与以下代码类似的输出:

{
    "UpdateActions": []
}

您可以通过运行以下命令将适用的服务更新应用到您的复制组:

aws elasticache batch-apply-update-action --service-update-name ServiceUpdateName --replication-group-ids ReplicationGroupID

有关这些 亚马逊云科技 CLI 命令的更多信息,请参阅描述更新操作和批量应用更新操作文档。

使用 MemoryDB 确保更高的可用性

启动 MemoryDB 集群时,当每个分片至少有一个副本时,多可用区选项将自动启用。如果主节点受损,MemoryDB 将在几秒钟内自动将延迟最低的副本节点升级为新的主节点。 如果无法自我修复受损节点,MemoryDB 将配置一个新节点,并使用其 分布式事务日志同步来自新主节点的数据。 要详细了解 MemoryDB 的行为和操作 ,请参阅 具有多可用区响应的 故障场景 。所有 MemoryDB 多可用区集群都自动符合更新后的 SLA 的资格,无需执行任何操作。

在以下部分中,我们将演示如何确保通过控制台和 亚马逊云科技 CLI 为 MemoryDB 集群配置多可用区。

通过控制台验证您现有的 MemoryDB 集群是否正在使用多可用区

在 亚马逊云科技 控制台上,您可以通过 Trusted Advisor 控制台或 MemoryDB 控制台验证您的 MemoryDB 集群是否启用了多可用区。亚马逊云科技 Trusted Advisor 容 错检查 可 确定您的集群是否在单可用区配置中运行,并就如何在 MemoryDB 集群中启用具有自动故障转移功能的多可用区提供建议。要了解更多信息,请参阅上面关于 验证是否已通过 亚马逊云科技 Trusted Advisor 控制台启用多可用区的部分。

要使用 MemoryDB 控制台进行验证,请执行以下步骤。

  1. 在 MemoryDB 控制台上, 在导航 窗格中选择集群
  2. 选择要检查的适用集群。
  3. 分片和节点 选项卡上,检查 每个分片的 节点数列

如果该值为 2,则启用多可用区。在配置群集时,当节点数 2 时,MemoryDB 代表客户在选定区域的多个可用区中复制节点。所有 MemoryDB 多可用区集群都有资格获得 99.99% 的可用性 SLA。

通过 亚马逊云科技 CLI 验证您现有的 MemoryDB 集群是否正在使用多可用区

要通过 亚马逊云科技 CLI 验证您的 MemoryDB 多可用区集群是否符合条件,您必须检查每个集群是否启用了多可用区。在 亚马逊云科技 CLI 上配置您的 亚马逊云科技 账户后,运行以下命令:

aws memorydb describe-clusters --show-shard-details

这将返回与以下示例代码类似的 JSON 输出。您在每个集群中寻找的属性是 NumberOfNodes 。如果该值为 2,则启用多可用区。 正如我们之前所说,在配置集群时,当节点数 ≥ 2 时,MemoryDB 会在选定区域的多个可用区中复制节点 。 所有 MemoryDB 多可用区集群都有资格获得 99.99% 的可用性 SLA。

{
    "Clusters": [
        {
            "Name": "test2",
            "Status": "available",
            "NumberOfShards": 1,
            "Shards": [
                {
                    "Name": "0001",
                    "Status": "available",
                    "Slots": "0-16383",
                    "Nodes": [
                        {
                            "Name": "test2-0001-001",
                            "Status": "available",
                            "AvailabilityZone": "us-east-2a",
                            "CreateTime": "2023-01-28T21:52:02.703000-08:00",
                            "Endpoint": {
                                "Address": "xxxxxxxxxxx.memorydb.us-east-2.amazonaws.com",
                                "Port": 6379
                            }
                        },
                        ...
                    ],
                    "NumberOfNodes": 3
                }
            ]
}

提高可用性的最佳实践

即使使用像 ElastiCache 或 MemoryDB 这样提供 99.99% 可用性的服务,在构建应用程序时也必须遵循最佳实践。遵循 ElastiCache 缓存策略 Redis 客户端 和 M emoryDB 的最佳实践 ,可 进一步增强整个应用程序的可用性和弹性。您可以通过测试适用 于 Redis 集群的 ElastiCache 自动故障转移和 测试 Redis 集群的 MemoryDB 自动故障转移来 测试应用程序有效处理故障转移 的能力。

摘要

亚马逊云科技 致力于通过持续增强我们的监控和内部恢复机制来为我们的服务提供更高的可用性。这将极大地帮助您通过 亚马逊云科技 云中的高可用性和灵活性来增强关键应用程序。在这篇文章中,我们重点介绍了使用适用于 Redis 和 MemoryDB 的 ElastiCache 获得 99.99% 的可用性意味着什么。我们还展示了如何为 Redis 和 MemoryDB 集群配置 ElastiCache,以获得 99.99% 的增强可用性。 要详细了解可用性的提高,请参阅 ElastiCache 服务级别协议 和 M emoryDB SLA


作者简介

CJ Chittajallu 是亚马逊 ElastiCache 和亚马逊 MemoryDB 的技术项目经理。他在管理咨询、云迁移、云工程和数字战略方面拥有丰富的背景。他对云计算、人工智能/机器学习充满热情,并在客户的数字化转型之旅中与他们密切合作。

Mahesh Cherukumilli 是亚马逊 ElastiCache 和 Amazon MemoryDB 的软件开发经理,他在那里管理一个开发团队,重点是创建一个维护高度可用的内存数据库的监控和修复系统。Mahesh 表现出强烈的热情,希望构建一个既具有高可用性又具有成本效益的数据库,同时还要提供卓越的性能,以帮助客户处理需要实时数据访问或处理且涉及大量数据的工作负载。

Shirish Kulkarni 是一名解决方案架构师,专门研究内存中 NoSQL 数据库,总部位于澳大利亚悉尼。他在使用各种 NoSQL 数据库以及使用分布式技术架构高度可扩展的应用程序方面拥有十多年的经验。他对 NoSQL 数据库充满热情,喜欢帮助客户为其用例选择合适的数据库。在他的空闲时间,你可以看到他在户外和他的双胞胎孩子一起玩耍。

玛德琳·奥尔森 是 OSS Redis 项目的维护者,也是亚马逊 ElastiCache 和亚马逊 MemoryDB 的软件开发工程师,专注于为 Redis 引擎构建安全和高度可靠的功能。在空闲时间,她喜欢长途徒步旅行和宁静地骑自行车,欣赏太平洋西北部的自然美景。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。