在中查找连接端点 ElastiCache - Amazon ElastiCache

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

在中查找连接端点 ElastiCache

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

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

在 Valkey 或 Redis OSS 上使用哪些终端节点。

  • 对于独立节点,请使用该节点的终端节点进行读取和写入操作。

     

  • 对于 Valkey、Valkey 或 Redis OSS(已禁用集群模式)集群,请使用主终端节点进行所有写入操作。使用读取器端点 将在所有只读副本之间均匀地分配指向端点的传入连接。使用单独的节点端点 进行读取操作(在 API/CLI 中,它们被称作读取端点)。

     

  • 对于 Valkey 或 Redis OSS(已启用集群模式)集群,请使用集群的配置终端节点执行所有支持启用集群模式的命令的操作。在 Redis OSS 3.2 及更高版本上,你必须使用支持 Valkey Cluster 或 Redis OSS 集群的客户端。您仍可以从独立的节点端点进行读取(在 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、Valkey 或 Redis OSS(已禁用集群模式)集群只有一个节点,则使用该节点的终端节点进行读取和写入。如果 Valkey、Valkey 或 Redis OSS(已禁用集群模式)集群有多个节点,则有三种类型的终端节点:主终端节点、读取器终端节点和节点终端节点。

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

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

注意

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

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

查找 Valkey、Valkey 或 Redis OSS(已禁用集群模式)集群的终端节点
  1. 登录 AWS Management Console 并打开 ElastiCache 控制台,网址为 https://console.aws.amazon.com/elasticache/

  2. 在导航窗格中,选择 Valkey 集群Redis OSS 集群

    集群屏幕将出现 Valkey、Valkey 或 Redis OSS(已禁用集群模式)以及 Valkey 或 Redis OSS(已启用集群模式)集群的列表。

  3. 要查找集群的主端点和/或读取器端点,请选中集群的名称(而不是其左侧的按钮)。

    图片:Valkey、Valkey 或 Redis OSS(已禁用集群模式)集群的主终端节点

    Valkey、Valkey 或 Redis OSS(已禁用集群模式)集群的主终端节点和读取器终端节点

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

  4. 如果 Valkey、Valkey 或 Redis OSS(已禁用集群模式)集群有副本节点,则可以通过选择集群的名称然后选择节点选项卡来找到集群的副本节点终端节点。

    此时会显示节点屏幕,其中列出了集群中的每个节点(主节点和副本节点)及其端点。

    图片:Valkey、Valkey 或 Redis OSS(已禁用集群模式)集群的节点终端节点

    Valkey、Valkey 或 Redis OSS(已禁用集群模式)集群的节点终端节点

  5. 将端点复制到剪贴板:

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

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

    端点现已复制到剪贴板。有关使用端点连接到节点的信息,请参阅 连接到 Memcached 节点

Valkey、Valkey 或 Redis OSS(已禁用集群模式)主终端节点如下所示。根据是否已启用传输中加密而有所不同。

未启用传输中加密

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

已启用传输中加密

master.clusterName.xxxxxx.regionAndAz.cache.amazonaws.com:port master.ncit.ameaqx.use1.cache.amazonaws.com:6379

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

查找 Valkey 或 Redis OSS(已启用集群模式)集群的端点
  1. 登录 AWS Management Console 并打开 ElastiCache 控制台,网址为 https://console.aws.amazon.com/elasticache/

  2. 在导航窗格中,选择 Valkey 集群Redis OSS 集群

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

  3. 要查找集群的配置端点,请选择集群的名称(不是单选按钮)。

  4. Cluster details(集群详细信息)下将显示 Configuration endpoint(配置端点)。要复制它,请选择位于端点左侧的 copy(复制)图标。

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

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

要复制端点,请直接选择端点地址前面的复制图标。有关使用端点连接到节点的信息,请参阅 连接到 Memcached 节点

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

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.

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

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

查找节点和集群的端点(AWS CLI)

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

以下命令会检索 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

对于 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主题。

查找 Valkey 或 Redis OSS 复制组的端点(AWS CLI)

您可以使用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

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

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

查找节点和集群的终端节点 (ElastiCache API)

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

对于 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

您可以通过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