

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

# 在中查找连接端点 ElastiCache
<a name="Endpoints"></a>

您的应用程序使用终端节点连接到您的 ElastiCache 集群。端点是节点或集群的唯一的地址。

您还可以通过创建接口 VPC 终端节点，在您的 VPC 和 ElastiCache API 终端节点之间建立私有连接 AWS PrivateLink。有关更多信息，请参阅 [ElastiCache API 和接口 VPC 终端节点 (AWS PrivateLink)](elasticache-privatelink.md)。

**在 Valkey 或 Redis OSS 上使用哪些端点**
+ 对于**独立节点**，使用该节点的端点进行读取和写入操作。

   
+ 对于 **Valkey 或 Redis OSS（已禁用集群模式）集群**，请使用*主终端节点*执行所有写入操作。使用*读取器端点* 将在所有只读副本之间均匀地分配指向端点的传入连接。使用单个*节点终端节点*进行读取操作（在API/CLI 这些端点中称为读取终端节点）。

   
+ 对于 **Valkey 或 Redis OSS（已启用集群模式）集群**，使用集群的*配置端点*执行所有支持已启用集群模式命令的操作。您必须使用支持 Valkey 集群或 Redis OSS 集群（运行 Redis OSS 3.2 及更高版本）的客户端。您仍然可以从单个节点端点读取（在 API/CLI 这些端点中称为读取终端节点）。

   

以下部分将引导您发现正在运行的引擎所需的端点。

**哪些端点可用于 Memcached。**

对于 **Memcached 的ElastiCache 无服务器缓存**，只需从控制台获取集群终端节点 DNS 和端口即可。

从中 AWS CLI，使用`describe-serverless-caches`命令获取端点信息。

Linux

```
aws elasticache describe-serverless-caches --serverless-cache-name CacheName
```

Windows

```
aws elasticache describe-serverless-caches --serverless-cache-name CacheName
```

上述操作的输出类似于以下内容（JSON 格式）：

```
{
    "ServerlessCaches": [
        {
            "ServerlessCacheName": "serverless-memcached",
            "Description": "test",
            "CreateTime": 1697659642.136,
            "Status": "available",
            "Engine": "memcached",
            "MajorEngineVersion": "1.6",
            "FullEngineVersion": "21",
            "SecurityGroupIds": [
                "sg-083eda453e1e51310"
            ],
            "Endpoint": {
                "Address": "serverless-memcached-01.amazonaws.com",
                "Port":11211
            },
            "ARN": "<the ARN>",
            "SubnetIds": [
                "subnet-0cf759df15bd4dc65",
                "subnet-09e1307e8f1560d17"
            ],
            "SnapshotRetentionLimit": 0,
            "DailySnapshotTime": "03:00"
        }
    ]
}
```

对于**基于实例的 Memcached 集群**，如果您使用自动发现，则可以使用集群的*配置终端节点来配置*您的 Memcached 客户端。这意味着您必须使用支持 Automatic Discovery 的客户端。

如果您不使用 Automatic Discovery，则必须对客户端进行配置，以便针对读取和写入使用不同的节点端点。此外，在添加或删除节点时，您还必须跟踪它们的情况。

## 查找 Valkey 或 Redis OSS（已禁用集群模式）集群端点（控制台）
<a name="Endpoints.Find.Redis"></a>

如果 Valkey 或 Redis OSS（已禁用集群模式）集群只有一个节点，则使用该节点的终端节点进行读取和写入。如果 Valkey 或 Redis OSS（已禁用集群模式）集群有多个节点，则有三种类型的终端节点：*主终端节点、读取器终**端节点和*节点*终端*节点。

主端点是一个 DNS 名称，始终解析为集群中的主节点。主端点不受集群更改的影响，如将只读副本提升为主角色。对于写入活动，我们建议您的应用程序连接到主端点。

读取器终端节点将在适用于 Redis OSS 集群的所有只读副本之间平均分配到该终端节点 ElastiCache 的传入连接。应用程序何时创建连接或应用程序如何（重复）使用连接等附加因素将决定流量分配。读取器端点会在添加或删除副本时实时跟踪集群更改。您可以将 For Redis OSS 集群的多个只读副本放在不同的 AWS 可用区 (AZ) 中，以确保读取器终端节点的高可用性。 ElastiCache 

**注意**  
读取器端点不是负载均衡器。它是一个 DNS 记录，将以循环方式解析为副本节点之一的 IP 地址。

对于读取活动，应用程序还可以连接到集群中的任何节点。与主端点不同，节点端点会解析为特定端点。如果您在您的集群中进行更改（例如添加或删除副本），则必须在您的应用程序中更新节点端点。

**查找 Valkey 或 Redis OSS（已禁用集群模式）集群的终端节点**

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

1. 在导航窗格中，选择 **Valkey 集群**或 **Redis OSS 集群**。

   集群屏幕将出现，其中列出了 Valkey 或 Redis OSS（已禁用集群模式）以及 Valkey 或 Redis OSS（已启用集群模式）集群。

1. 要查找集群的主 and/or 读取器终端节点，请选择集群的名称（而不是其左边的按钮）。  
![图片：Valkey 或 Redis OSS（已禁用集群模式）集群的主终端节点](http://docs.aws.amazon.com/zh_cn/AmazonElastiCache/latest/dg/images/Reader-Endpoint.png)

   *Valkey 或 Redis OSS（已禁用集群模式）集群的主终端节点和读取器终端节点*

   如果该集群只有一个节点，则没有主端点，您可以继续下一步。

1. 如果 Valkey 或 Redis OSS（已禁用集群模式）集群具有副本节点，则可以通过选择集群的名称然后选择 “节点” 选项卡来找到集群的副本**节点**终端节点。

   此时会显示节点屏幕，其中列出了集群中的每个节点（主节点和副本节点）及其端点。  
![图片：Valkey 或 Redis OSS（已禁用集群模式）集群的节点终端节点](http://docs.aws.amazon.com/zh_cn/AmazonElastiCache/latest/dg/images/ElastiCache-Endpoints-Redis-Node.png)

   *Valkey 或 Redis OSS（已禁用集群模式）集群的节点终端节点*

1. 将端点复制到剪贴板：

   1. 逐一找到要复制的端点。

   1. 直接选择端点前面的复制图标。

   端点现已复制到剪贴板。有关使用端点连接到节点的信息，请参阅 [连接到 Memcached 节点](nodes-connecting.md#nodes-connecting.mem)。

Valkey 或 Redis OSS（已禁用集群模式）的主终端节点如下所示。根据是否启用 In-Transit 加密会有所不同。

**In-transit 未启用加密**

```
{{clusterName.xxxxxx}}.{{nodeId}}.{{regionAndAz}}.cache.amazonaws.com:{{port}}
			
redis-01.7abc2d.0001.usw2.cache.amazonaws.com:6379
```

**In-transit 已启用加密**

```
master.{{clusterName}}.{{xxxxxx}}.{{regionAndAz}}.cache.amazonaws.com:{{port}}

master.ncit.ameaqx.use1.cache.amazonaws.com:6379
```

## 查找 Valkey 或 Redis OSS（已启用集群模式）集群的端点（控制台）
<a name="Endpoints.Find.RedisCluster"></a>

Valkey 或 Redis OSS（已启用集群模式）集群有一个单配置端点。通过连接到配置端点，您的应用程序可以查找集群中每个分片的主端点和读取端点。

**查找 Valkey 或 Redis OSS（已启用集群模式）集群的端点**

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

1. 在导航窗格中，选择 **Valkey 集群**或 **Redis OSS 集群**。

   集群屏幕随即出现，其中显示集群的列表。选择您想要连接到的集群。

1. 要查找集群的配置端点，请选择集群的名称（不是单选按钮）。

1. **Cluster details**（集群详细信息）下将显示 **Configuration endpoint**（配置端点）。要复制它，请选择位于端点左侧的 *copy*（复制）图标。

## 查找集群的端点（控制台）（Memcached）
<a name="Endpoints.Find.Memcached"></a>

所有 Memcached 端点都是 read/write 端点。要连接到 Memcached 集群中的节点，您的应用程序可以使用每个节点的端点或将集群的配置端点与 Automatic Discovery 结合使用。要使用 Automatic Discovery，您必须使用支持 Automatic Discovery 的客户端。

在使用 Automatic Discovery 时，您的客户端应用程序将使用配置端点连接到 Memcached 集群。当您通过添加或移除节点来扩展集群，应用程序将自动“获知”集群中的所有节点并能够连接到其中任一节点。如果没有 Automatic Discovery，应用程序将必须执行此操作，否则，您在每次添加或移除节点时，必须手动更新应用程序中的端点。

要复制端点，请直接选择端点地址前面的复制图标。有关使用端点连接到节点的信息，请参阅 [连接到 Memcached 节点](nodes-connecting.md#nodes-connecting.mem)。

配置端点和节点端点看上非常相似。不同之处以**粗体** 形式突出显示。

```
{{myclustername.xxxxxx}}.cfg.usw2.cache.amazonaws.com:{{port}}   # configuration endpoint contains "cfg"
{{myclustername.xxxxxx}}.0001.usw2.cache.amazonaws.com:{{port}}  # node endpoint for node 0001
```

**重要**  
如果您选择为 Memcached 配置端点创建别名记录，以使自动发现客户端可以识别别名记录作为配置端点，则必须在别名记录中包含 `.cfg.`。

## 查找端点 (AWS CLI)
<a name="Endpoints.Find.CLI"></a>

对于 Memcached，您可以使用 f AWS CLI or Amazon ElastiCache 来发现节点和集群的终端节点。

对于 Redis OSS，您可以使用 AWS CLI 适用于 Amazon 的 ElastiCache 来发现节点、集群和复制组的终端节点。

**Topics**
+ [查找节点和集群的终端节点 (AWS CLI)](#Endpoints.Find.CLI.Nodes)
+ [查找 Valkey 或 Redis OSS 复制组的终端节点 (AWS CLI)](#Endpoints.Find.CLI.ReplGroups)

### 查找节点和集群的终端节点 (AWS CLI)
<a name="Endpoints.Find.CLI.Nodes"></a>

您可以使用`describe-cache-clusters`命令 AWS CLI 来发现集群及其节点的终端节点。对于 Valkey 或 Redis OSS 集群，此命令将返回集群端点。对于 Memcached 集群，此命令将返回配置端点。如果包含可选参数 `--show-cache-node-info`，则此命令还将返回集群中的单个节点的端点。

**Example**  
以下命令会检索 Memcached 集群 *mycluster* 的配置端点（`ConfigurationEndpoint`）和单个节点端点（`Endpoint`）。  
对于 Linux、macOS 或 Unix：  

```
aws elasticache describe-cache-clusters \
    --cache-cluster-id {{mycluster}} \
    --show-cache-node-info
```
对于 Windows：  

```
aws elasticache describe-cache-clusters ^
    --cache-cluster-id {{mycluster}} ^
    --show-cache-node-info
```
上面的操作输出类似以下的内容（JSON 格式）。  

```
{
   "CacheClusters": [
   {
       "Engine": "memcached", 
       "CacheNodes": [
          {
             "CacheNodeId": "0001", 
             "Endpoint": {
                "Port": 11211, 
                "Address": "mycluster.amazonaws.com"
             }, 
                "CacheNodeStatus": "available", 
                "ParameterGroupStatus": "in-sync", 
                "CacheNodeCreateTime": "2016-09-22T21:30:29.967Z", 
                "CustomerAvailabilityZone": "us-west-2b"
          }, 
          {
             "CacheNodeId": "0002", 
             "Endpoint": {
                "Port": 11211, 
                "Address": "mycluster.amazonaws.com"
             }, 
                "CacheNodeStatus": "available", 
                "ParameterGroupStatus": "in-sync", 
                "CacheNodeCreateTime": "2016-09-22T21:30:29.967Z", 
                "CustomerAvailabilityZone": "us-west-2b"
          }, 
          {
                "CacheNodeId": "0003", 
                "Endpoint": {
                   "Port": 11211, 
                   "Address": "mycluster.amazonaws.com"
                }, 
                   "CacheNodeStatus": "available", 
                   "ParameterGroupStatus": "in-sync", 
                   "CacheNodeCreateTime": "2016-09-22T21:30:29.967Z", 
                   "CustomerAvailabilityZone": "us-west-2b"
          }
       ], 
       "CacheParameterGroup": {
       "CacheNodeIdsToReboot": [], 
       "CacheParameterGroupName": "default.memcached1.4", 
       "ParameterApplyStatus": "in-sync"
            }, 
            "CacheClusterId": "mycluster", 
            "PreferredAvailabilityZone": "us-west-2b", 
            "ConfigurationEndpoint": {
                "Port": 11211, 
                "Address": "mycluster.amazonaws.com"
            }, 
            "CacheSecurityGroups": [], 
            "CacheClusterCreateTime": "2016-09-22T21:30:29.967Z", 
            "AutoMinorVersionUpgrade": true, 
            "CacheClusterStatus": "available", 
            "NumCacheNodes": 3, 
            "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:", 
            "CacheSubnetGroupName": "default", 
            "EngineVersion": "1.4.24", 
            "PendingModifiedValues": {}, 
            "PreferredMaintenanceWindow": "mon:09:00-mon:10:00", 
            "CacheNodeType": "cache.m4.large",
             "DataTiering": "disabled"
        }
    ]   
}
```
如果您选择为 Memcached 配置端点创建别名记录，以使自动发现客户端可以识别别名记录作为配置端点，则必须在别名记录中包含 `.cfg.`。例如，php.ini 文件中的 `session.save_path` 参数的 `mycluster{{.cfg.}}local`。

**Example**  
对于 Valkey 和 Redis OSS，以下命令会检索单节点集群 *mycluster* 的集群信息。  
参数 `--cache-cluster-id` 可与 Redis 复制组中的单节点 Valkey 或 Redis OSS（已禁用集群模式）集群 ID 或特定节点 ID 配合使用。复制组的 `--cache-cluster-id` 是一个四位值，例如 `0001`。如果 `--cache-cluster-id` 是复制组中集群（节点）的 ID，输出中会包含 `replication-group-id`。
对于 Linux、macOS 或 Unix：  

```
aws elasticache describe-cache-clusters \
    --cache-cluster-id {{redis-cluster}} \
    --show-cache-node-info
```
对于 Windows：  

```
aws elasticache describe-cache-clusters ^
    --cache-cluster-id {{redis-cluster}} ^
    --show-cache-node-info
```
上面的操作输出类似以下的内容（JSON 格式）。  

```
{
    "CacheClusters": [
        {
            "CacheClusterStatus": "available",
            "SecurityGroups": [
                {
                    "SecurityGroupId": "sg-77186e0d",
                    "Status": "active"
                }
            ],
            "CacheNodes": [
                {
                    "CustomerAvailabilityZone": "us-east-1b",
                    "CacheNodeCreateTime": "2018-04-25T18:19:28.241Z",
                    "CacheNodeStatus": "available",
                    "CacheNodeId": "0001",
                    "Endpoint": {
                        "Address": "redis-cluster.amazonaws.com",
                        "Port": 6379
                    },
                    "ParameterGroupStatus": "in-sync"
                }
            ],
            "AtRestEncryptionEnabled": false,
            "CacheClusterId": "redis-cluster",
            "TransitEncryptionEnabled": false,
            "CacheParameterGroup": {
                "ParameterApplyStatus": "in-sync",
                "CacheNodeIdsToReboot": [],
                "CacheParameterGroupName": "default.redis3.2"
            },
            "NumCacheNodes": 1,
            "PreferredAvailabilityZone": "us-east-1b",
            "AutoMinorVersionUpgrade": true,
            "Engine": "redis",
            "AuthTokenEnabled": false,
            "PendingModifiedValues": {},
            "PreferredMaintenanceWindow": "tue:08:30-tue:09:30",
            "CacheSecurityGroups": [],
            "CacheSubnetGroupName": "default",
            "CacheNodeType": "cache.t2.small",
             "DataTiering": "disabled"
            "EngineVersion": "3.2.10",
            "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:",
            "CacheClusterCreateTime": "2018-04-25T18:19:28.241Z"
        }
    ]
}
```

有关更多信息，请参阅主题 [describe-cache-clusters](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-cache-clusters.html)。

### 查找 Valkey 或 Redis OSS 复制组的终端节点 (AWS CLI)
<a name="Endpoints.Find.CLI.ReplGroups"></a>

您可以使用`describe-replication-groups`命令 AWS CLI 来发现复制组及其集群的终端节点。此命令将返回复制组的主端点、复制组中所有集群（节点）及其端点的列表以及读取器端点。

以下操作检索复制组 `myreplgroup` 的主端点和读取器端点。将主端点用于所有写入操作。

```
aws elasticache describe-replication-groups \
    --replication-group-id {{myreplgroup}}
```

对于 Windows：

```
aws elasticache describe-replication-groups ^
    --replication-group-id {{myreplgroup}}
```

该操作输出类似以下的内容（JSON 格式）。

```
{
   "ReplicationGroups": [
     {
       "Status": "available", 
       "Description": "test", 
       "NodeGroups": [
         {
            "Status": "available", 
               "NodeGroupMembers": [
                  {
                     "CurrentRole": "primary", 
                     "PreferredAvailabilityZone": "us-west-2a", 
                     "CacheNodeId": "0001", 
                     "ReadEndpoint": {
                        "Port": 6379, 
                        "Address": "myreplgroup-001.amazonaws.com"
                     }, 
                     "CacheClusterId": "myreplgroup-001"
                  }, 
                  {
                     "CurrentRole": "replica", 
                     "PreferredAvailabilityZone": "us-west-2b", 
                     "CacheNodeId": "0001", 
                     "ReadEndpoint": {
                        "Port": 6379, 
                        "Address": "myreplgroup-002.amazonaws.com"
                     }, 
                     "CacheClusterId": "myreplgroup-002"
                  }, 
                  {
                     "CurrentRole": "replica", 
                     "PreferredAvailabilityZone": "us-west-2c", 
                     "CacheNodeId": "0001", 
                     "ReadEndpoint": {
                        "Port": 6379, 
                        "Address": "myreplgroup-003.amazonaws.com"
                     }, 
                     "CacheClusterId": "myreplgroup-003"
                  }
               ], 
               "NodeGroupId": "0001", 
               "PrimaryEndpoint": {
                  "Port": 6379, 
                  "Address": "myreplgroup.amazonaws.com"
               },
               "ReaderEndpoint": {
                  "Port": 6379, 
                  "Address": "myreplgroup-ro.amazonaws.com"
               }
            }
         ], 
         "ReplicationGroupId": "myreplgroup", 
         "AutomaticFailover": "enabled", 
         "SnapshottingClusterId": "myreplgroup-002", 
         "MemberClusters": [
            "myreplgroup-001", 
            "myreplgroup-002", 
            "myreplgroup-003"
         ], 
         "PendingModifiedValues": {}
      }
   ]
}
```

有关更多信息，请参阅 *AWS CLI 命令参考*中的 [describe-replication-groups](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-replication-groups.html)。

## 查找终端节点 (ElastiCache API)
<a name="Endpoints.Find.API"></a>

对于 Memcached，您可以使用 Amazon ElastiCache API 来发现节点和集群的终端节点。

对于 Redis OSS，您可以使用 Amazon ElastiCache API 来发现节点、集群和复制组的终端节点。

**Topics**
+ [查找节点和集群的终端节点 (ElastiCache API)](#Endpoints.Find.API.Nodes)
+ [为 Valkey 或 Redis OSS 复制组查找终端节点 (API) ElastiCache](#Endpoints.Find.API.ReplGroups)

### 查找节点和集群的终端节点 (ElastiCache API)
<a name="Endpoints.Find.API.Nodes"></a>

您可以通过`DescribeCacheClusters`操作使用 ElastiCache API 来发现集群及其节点的终端节点。对于 Valkey 或 Redis OSS 集群，此命令将返回集群端点。对于 Memcached 集群，此命令将返回配置端点。如果包含可选参数 `ShowCacheNodeInfo`，则此操作还将返回集群中的各个节点的端点。

**Example**  
对于 Memcached，以下命令会检索 Memcached 集群 *mycluster* 的配置端点（`ConfigurationEndpoint`）和单个节点端点（`Endpoint`）。  

```
https://elasticache.us-west-2.amazonaws.com/
    ?Action=DescribeCacheClusters
    &CacheClusterId=mycluster
    &ShowCacheNodeInfo=true
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20150202T192317Z
    &Version=2015-02-02
    &X-Amz-Credential=<credential>
```
如果您选择为 Memcached 配置端点创建别名记录，以使自动发现客户端可以识别别名记录作为配置端点，则必须在别名记录中包含 `.cfg.`。例如，php.ini 文件中的 `session.save_path` 参数的 `mycluster{{.cfg.}}local`。

### 为 Valkey 或 Redis OSS 复制组查找终端节点 (API) ElastiCache
<a name="Endpoints.Find.API.ReplGroups"></a>

您可以通过`DescribeReplicationGroups`操作使用 ElastiCache API 来发现复制组及其集群的终端节点。此操作将返回复制组的主端点、复制组中所有集群及其端点的列表以及读取器端点。

以下操作检索复制组`myreplgroup`的主终端节点 (PrimaryEndpoint)、读取器终端节点 (ReaderEndpoint) 和单个节点终端节点 (ReadEndpoint)。将主端点用于所有写入操作。

```
https://elasticache.us-west-2.amazonaws.com/
    ?Action=DescribeReplicationGroups
    &ReplicationGroupId=myreplgroup
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20150202T192317Z
    &Version=2015-02-02
    &X-Amz-Credential=<credential>
```

有关更多信息，请参阅 [DescribeReplicationGroups](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReplicationGroups.html)。