

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为 ElastiCache 选择区域和可用区
<a name="RegionsAndAZs"></a>

您可以通过使用对应的端点指定区域和可用区，为您的 ElastiCache 集群提供更高的可扩展性和可靠性。

AWS 云计算资源存储在具有高度可用性的数据中心设施中。为了提供额外的扩展性和可靠性，这些数据中心设施位于不同的物理位置。这些位置按照*区域*和*可用区*进行分类。

AWS 区域是指大型、分布范围广泛的单独地理位置。可用区是 AWS 区域中的不同位置，旨在隔离其他可用区中的故障。它们提供与同一 AWS 区域中不同可用区之间的低成本、低延迟网络连接。

**重要**  
每一个区域都是完全独立的。您启动的任何 ElastiCache 活动（例如，创建集群）仅可在您当前的默认区域中运行。

若要在特定地区创建或使用集群，请使用相应的区域服务端点。有关服务端点，请参阅[支持的区域和端点](#SupportedRegions)。

![\[图片： 区域和可用区\]](http://docs.aws.amazon.com/zh_cn/AmazonElastiCache/latest/dg/images/ElastiCache-RegionsAndAZs.png)


*区域和可用区*

**Topics**
+ [可用区注意事项（Memcached）](#CacheNode.Memcached.AvailabilityZones)
+ [找到您的节点](#RegionsAndAZs.AZMode)
+ [支持的区域和端点](#SupportedRegions)
+ [将 Local Zones 与 ElastiCache 结合使用](Local_zones.md)
+ [将 Outposts 与 ElastiCache](ElastiCache-Outposts.md)

## 可用区注意事项（Memcached）
<a name="CacheNode.Memcached.AvailabilityZones"></a>

将 Memcached 节点分配到一个区域内的多个可用区有助于保护您免受灾难性故障（如可用区内断电）的影响。

**无服务器缓存**

ElastiCache 无服务器缓存会创建跨多个可用区的高可用性缓存。在创建无服务器集群时，您可以指定来自不同可用区和相同 VPC 的子网，否则 ElastiCache 会自动从您的默认 VPC 中选择子网。

**设计您自己的 ElastiCache for Memcached 集群**

一个 Memcached 集群最多可拥有 300 个节点。向 Memcached 集群创建节点或添加节点时，您可以为所有节点指定单一可用区、允许 ElastiCache 为所有节点选择单一可用区、为每个节点指定可用区或允许 ElastiCache 为每个节点选择一个可用区。当您将新节点添加到现有 Memcached 群集时，可以在不同的可用区中创建新节点。创建缓存节点后，无法修改其可用区。

如果您希望单一可用区集群中的集群将其节点分配到多个可用区中，ElastiCache 可以在各个可用区中创建新节点。然后，您可以删除部分或全部原始缓存节点。我们建议采用此方法。

**将 Memcached 节点从单一可用区迁移到多个可用区**

1. 通过在所需的可用区中创建新的缓存节点来修改您的集群。在您的请求中，执行以下操作：
   + 将 `AZMode`（CLI：`- -az-mode`）设置为 `cross-az`。
   + 将 `NumCacheNodes`（CLI：`- -num-cache-nodes`）设置为当前活动缓存节点数加上您要创建的新缓存节点数。
   + 将 `NewAvailabilityZones`（CLI：`- -new-availability-zones`）设置为要在其中创建新缓存节点的区域列表。要让 ElastiCache 确定每个新节点的可用区，请不要指定列表。
   +  将 `ApplyImmediately`（CLI：`- -apply-immediately`）设置为真。
**注意**  
如果您未使用自动发现，请确保使用新的缓存节点端点更新客户端应用程序。

   继续执行下一步之前，请确保 Memcached 节点已完全创建且可用。

1. 通过删除原始可用区中不再需要的节点来修改您的集群。在您的请求中，执行以下操作：
   + 将 `NumCacheNodes`（CLI：`- -num-cache-nodes`）设置为应用此修改后所需的活动缓存节点数。
   + 将 `CacheNodeIdsToRemove`（CLI：`- -nodes-to-remove`）设置为要从集群中删除的缓存节点列表。

     列出的缓存节点 ID 的数量必须等于当前活动节点的数量减去`NumCacheNodes`。
   + （可选）将 `ApplyImmediately`（CLI：`- -apply-immediately`）设置为真。

     如果您未将 `ApplyImmediately`（CLI：`- -apply-immediately`）置为真，则将在您的下一个维护时段中进行节点删除。

## 找到您的节点
<a name="RegionsAndAZs.AZMode"></a>

Amazon ElastiCache 支持在单一或多个可用区（AZ）中找到集群的所有节点。此外，如果您选择在多个可用区中找到节点（建议方式），ElastiCache 将允许您为每个节点选择可用区，也可以让 ElastiCache 为您选择可用区。

通过在不同的可用区内放置节点，可排除某个可用区内的故障（如停电）导致整个系统失败的可能性。测试表明，将所有节点放置在同一个可用区与跨多个可用区放置节点相比并不存在显著延迟。

您可以在创建集群时为每个节点指定可用区，或在修改现有集群时通过添加节点来指定可用区。在创建集群期间为每个节点指定可用区时，该可用区必须在该子网组中可用。有关更多信息，请参阅下列内容：
+ [为 Memcached 创建集群](Clusters.Create-mc.md)
+ [创建 Valkey 或 Redis OSS 集群](Clusters.Create.md)
+ [修改 ElastiCache 集群](Clusters.Modify.md)
+ [向 ElastiCache 集群添加节点](Clusters.AddNode.md)

## 支持的区域和端点
<a name="SupportedRegions"></a>

Amazon ElastiCache 提供多个 AWS 区域。这意味着，您可在满足您要求的位置启动 ElastiCache 集群。例如，您可以在最靠近您客户的 AWS 区域或者满足某些法律要求的特定 AWS 区域中启动。

从设计而言，每个区域都与其他区域完全隔离。在每个区域中有多个可用区（AZ）。ElastiCache 无服务器缓存可自动跨多个可用区复制数据（`us-west-1` 除外，此时在两个可用区中复制数据），以实现高可用性。在设计自己的 ElastiCache 集群时，您可以选择在不同可用区中启动节点，从而实现容错能力。有关区域和可用区的更多信息，请参阅此主题顶部的[为 ElastiCache 选择区域和可用区](#RegionsAndAZs)。


**支持 ElastiCache 的区域**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonElastiCache/latest/dg/RegionsAndAZs.html)

某些区域只支持部分节点类型。有关 AWS 区域支持的节点类型的表，请参阅 [AWS区域支持的节点类型](CacheNodes.SupportedTypes.md#CacheNodes.SupportedTypesByRegion)。

大多数区域支持通过创建接口 VPC 端点（使用 AWS PrivateLink）在您的 VPC 与 ElastiCache API 端点之间建立私有连接。有关更多信息，请参阅 [ElastiCache API 和接口 VPC 终端节点 (AWS PrivateLink)](elasticache-privatelink.md)。

有关按区域划分的 AWS 产品和服务表，请参阅[按区域划分的产品和服务](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。

# 将 Local Zones 与 ElastiCache 结合使用
<a name="Local_zones"></a>

*本地扩展区* 是在地理位置上靠近用户的 AWS 区域的扩展。您可以通过创建新子网并将其分配到 Local Zones，将任何 Virtual Private Cloud (VPC) 从 AWS 父区域扩展到 Local Zones。当您在本地扩展区中创建子网时，VPC 也会扩展到该本地扩展区。本地扩展区中的子网与 VPC 中其他子网的运行相同。

通过使用 Local Zones，您可以将 ElastiCache 集群等资源放置在靠近用户的多个位置。

创建 ElastiCache 集群时，您可以选择 Local Zones 中的子网。Local Zones 有自己的 Internet 连接并支持 Direct Connect。因此，在本地扩展区中创建的资源可以通过非常低延迟的通信为本地用户提供服务。有关更多信息，请参阅 [AWSLocal Zones](https://aws.amazon.com/about-aws/global-infrastructure/localzones/)。

本地扩展区由 AWS 区域代码后跟一个指示位置的标识符表示，例如 `us-west-2-lax-1a`。

目前，可用的 Local Zones 是 `us-west-2-lax-1a` 和 `us-west-2-lax-1b`。

以下限制适用于 Local Zones 的 ElastiCache：
+ 不支持全局数据存储。
+ 不支持在线迁移。
+ Local Zones 目前支持以下节点类型：
  + 最新一代：

    **M5 节点类型：**、`cache.m5.large`、`cache.m5.xlarge`、`cache.m5.2xlarge`、`cache.m5.4xlarge`、`cache.m5.12xlarge``cache.m5.24xlarge`

    **R5 节点类型：**、`cache.r5.large`、`cache.r5.xlarge`、`cache.r5.2xlarge`、`cache.r5.4xlarge`、`cache.r5.12xlarge``cache.r5.24xlarge`

    **T3 节点类型：**、`cache.t3.micro`、`cache.t3.small``cache.t3.medium`

## 启用本地区域
<a name="Local_zones-using"></a>

1. 在 Amazon EC2 控制台中启用本地扩展区。

   有关更多信息，请参阅 *Amazon EC2 用户指南（适用于 Linux 实例）* 中的[启用 Local Zones](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#enable-zone-group)。

1. 在本地扩展区中创建子网。

   有关更多信息，请参阅 *Amazon VPC 用户指南* 中的[在 VPC 中创建子网](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#AddaSubnet)。

1. 在 Local Zones 中创建 ElastiCache 子网组。

   创建 ElastiCache 子网组时，请为 Local Zones 选择可用区组。

   有关更多信息，请参阅 [创建子网组](SubnetGroups.Creating.md)。

1. 创建一个使用 Local Zones 中的 ElastiCache 子网的 ElastiCache for Memcached 集群。

    有关更多信息，请参阅 [创建 Memcached 集群（控制台）](Clusters.Create-mc.md#Clusters.Create.CON.Memcached)。

1. 创建一个使用 Local Zones 中的 ElastiCache 子网的 ElastiCache for Redis OSS 集群。有关更多信息，请参阅下列主题之一：
   +  [创建 Valkey（已禁用集群模式）集群（控制台）](SubnetGroups.designing-cluster-pre.valkey.md#Clusters.Create.CON.valkey-gs)
   +  [创建 Valkey 或 Redis OSS（已启用集群模式）集群（控制台）](Clusters.Create.md#Clusters.Create.CON.RedisCluster)

# 将 Outposts 与 ElastiCache
<a name="ElastiCache-Outposts"></a>

你可以将AWS Outposts 与配合使用。 ElastiCacheOutposts 是一项完全托管的服务，可将AWS基础架构 APIs、服务和工具扩展到客户驻地。通过提供对AWS托管基础设施的本地访问权限，AWS Outposts使客户能够使用与AWS区域相同的编程接口在本地构建和运行应用程序，同时使用本地计算和存储资源来降低延迟和满足本地数据处理需求。Outpost 是部署在客户现场的AWS计算和存储容量池。AWS将此容量作为AWS区域的一部分进行运营、监控和管理。您可以在 Outpost 上创建子网，并在创建集群等AWS ElastiCache 资源时指定子网。

**注意**  
在此版本中，以下限制适用：  
ElastiCache for Outposts 仅支持 M5 和 R5 节点系列。
多可用区（不支持跨站点复制）。
不支持实时迁移。
不支持本地快照。
无法启用引擎日志和慢速日志。
ElastiCache on Outposts 不支持 CoIP。
ElastiCache 以下区域不支持 for Outposts：cn-northeast-1、cn-northeast-1 和 ap-northeast-3。

## 在主机上使用 Outposts ElastiCache
<a name="Outposts.Details"></a>

1. 登录AWS 管理控制台并打开 ElastiCache 控制台，网址为[ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)。

1. 在导航窗格中，选择 **Valkey 缓存**、**Redis OSS 缓存**或 **Memcached 缓存**。

1.  如果您选择了 **Valkey 缓存**，请选择**创建 Valkey 缓存**。如果您选择了 **Redis OSS 缓存**，请选择**创建 Redis OSS 缓存**。如果您选择了 **Memcached 缓存**，请选择**创建 Memcached 缓存**。

1. 在**集群设置**下，选择**设计自己的缓存**和**集群缓存**。将**集群模式**设置为**已禁用**。然后输入缓存的名称和可选描述。

1. 对于位置，选择**本地**。

1. 在“本地”部分中，您将看到 **Outpost ID** 字段。输入集群运行位置的 ID。

   **集群设置**下的所有其他设置都可以保持默认状态。

1. 在**连接**中，选择**创建新的子网组**，然后输入 **VPC ID**。其余内容保留默认状态，然后选择**下一步**。

### 配置本地选项
<a name="Outposts.Creating.Console.RedisMultiAZ.Details"></a>

 您可以选择一个可用的 Outpost 来添加集群，如果没有可用的 Outposts，您也可以选择使用以下步骤创建一个新的集群：

**在 **On-Premises options（本地选项）**下：**

1. 根据您的首选引擎，在 **Valkey 设置**、**Redis OSS 设置**或 **Memcached 设置**下，进行以下设置：

   1. **名称**：为集群输入名称。

   1. **描述**：输入集群的描述。

   1. **引擎版本兼容性**：引擎版本基于 Outpost 区域AWS

   1. **端口**：对于 Valkey 或 Redis OSS，接受默认端口 6379。对于 Memcached，接受默认端口 11211。如果您想使用其他端口，请键入相应的端口号。

   1. **Parameter group（参数组）**：使用下拉菜单选择默认或自定义参数组。

   1. **Node Type（节点类型）**：可用实例基于 Outposts 可用性。如果使用 Valkey 或 Redis OSS，适用于 Outposts 的 Porting Assistant for .NET 仅支持 M5 和 R5 节点系列。从下拉列表中，选择 **Outposts**，然后选择要用于此集群的可用节点类型。然后选择 **Save（保存）**。

   1. **Number of Replicas（副本数）**：输入要为此复制组创建的只读副本数。您必须至少有一个只读副本，但不超过五个。默认值是 2。

      只读副本的自动生成的名称与主群集名称的模式相同，末尾添加一个破折号和连续三位数字，并以 `-002` 开头。例如，如果您的复制组名为 `MyGroup`，辅助集群的名称将为 `MyGroup-002`、`MyGroup-003`、`MyGroup-004`、`MyGroup-005`、`MyGroup-006`。

1. 在**连接**下：

   1. **Subnet Group（子网组）**：从列表中选择 **Create new（创建新子网组）**。
      + **Name（名称）**：输入子网组的名称
      + **Description（描述）**：输入子网组的描述
      + **VPC ID**：VPC ID 应与 Outpost VPC 一致。如果您选择的 VPC 在 Outpost IDs s 上没有子网，则列表将返回空白。
      + **Availability Zone or Outpost（可用区或 Outpost）**：选择您正在使用的 Outpost。
      + **Subnet ID（子网 ID）**：选择可用于 Outpost 的子网 ID。如果没有可 IDs 用的子网，则需要创建子网。有关更多信息，请参阅[创建子网](https://docs.aws.amazon.com/outposts/latest/userguide/launch-instance.html#create-subnet)。

   1. 选择**创建**。

### 查看 Outpost 集群详细信息
<a name="Outposts.Creating.Console.Outpost-Details-Redis"></a>

在列表页面上，选择属于AWS Outpost 的集群，并在查看**集群详细信息**时注意以下事项：
+ **可用区域**：这将使用 ARN（Amazon 资源名称）和AWS资源编号表示前哨基地。
+ **前哨基地名称**：前AWS哨基地的名称。

## 在 CLI 中使用 Outposts AWS
<a name="Outposts.Using.CLI"></a>

您可以使用AWS Command Line Interface(AWS CLI) 从命令行控制多项AWS服务，并通过脚本自动执行这些服务。您可以使用AWS CLI 进行临时（一次性）操作。

### 正在下载和配置AWS CLI
<a name="Redis-Global-Clusters-Downloading-CLI"></a>

它们可以在 Windows、macOS 或 Linux 上AWS CLI运行。按照以下步骤下载和并对其进行配置。

**下载、安装和配置 CLI**

1. 在[AWS命令行界面](https://aws.amazon.com/cli)网页上下载AWS CLI。

1. 按照*AWS Command Line Interface用户指南*中有关[安装AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) 和[配置AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) 的说明进行操作。

### 在 Outposts 中使用AWS CLI
<a name="Outposts-Using-CLI"></a>

使用以下 CLI 操作创建使用 Outposts 的集群：
+  [create-cache-cluster](https://docs.aws.amazon.com/AmazonElastiCache/latest/CommandLineReference/CLIReference-cmd-CreateCacheCluster.html)— 使用此操作，`outpost-mode`参数接受一个值，该值指定集群中的节点是在单个 Outpost 中创建的，还是在多个 Outposts 中创建的。
**注意**  
目前仅支持 `single-outpost` 模式。

  ```
  aws elasticache create-cache-cluster \
     --cache-cluster-id cluster id \
     --outpost-mode single-outpost \
  ```