我想解决适用于 Valkey 的 Amazon ElastiCache 和 Amazon ElastiCache for Redis OSS 自行设计集群的连接问题。
解决方法
检查集群的状态
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
如果您最近创建了集群,则如果集群未处于 Available(可用)状态,您可能会遇到连接问题。要确认创建是否已完成,请检查集群以及连接到集群的每个节点的状态:
- 如果 Status(状态)列显示为 Available(可用),则集群已准备好接受连接。
- 如果 Status(状态)列显示 Creating(正在创建)或 Modifying(正在修改),则集群创建正在进行或更新中。等待几分钟,直到状态更新为 Available(可用)。
检查集群的运行状况
要检查集群的运行状况,请查看以下来源以获取有关您的集群的信息:
查看您的安全组和网络 ACL 配置
查看您启动连接的群集和资源上的安全组和网络访问控制列表(网络 ACL)的配置。必须配置安全组和网络 ACL 才能访问资源。有关详细信息,请参阅访问您的 ElastiCache 集群或复制组。
以下是客户端资源的示例:
- Amazon Elastic Compute Cloud (Amazon EC2) 实例
- AWS Lambda 函数
- Amazon Elastic Container Service(Amazon ECS)容器
- Amazon Elastic Kubernetes Service (Amazon EKS) 容器
要查看集群的安全组,请完成以下步骤:
- 打开 ElastiCache 控制台。
- 在导航窗格中的 Resources(资源)下,选择 Valkey caches(Valkey 缓存)或 Redis OSS caches(Redis OSS 缓存),然后选择集群。
- 在集群详细信息页面上,选择 Connectivity and security(连接和安全)选项卡。
- 检查至少一个关联的安全组允许从客户端资源到集群端口上集群的入站连接。
- 要查找端口号,请查看任何集群端点。端点采用 domain_name:port 格式。
**注意:**默认情况下,集群的端口为 6379/TCP。创建集群时,您可以覆盖此端口号。
- 在客户端资源上,检查安全组是否允许从集群的端口到集群子网的 CIDR 块的出站连接。
- 检查网络 ACL 是否允许客户端和集群之间的出站和入站连接。另外,请检查路由表中是否有相应的路由。
**注意:**默认情况下,网络 ACL 允许所有连接。
要进一步对网络配置进行故障排除,请使用 Amazon Virtual Private Cloud (Amazon VPC) 网络访问分析器。
检查使用正确的端点进行连接
确保将客户端应用程序配置为使用正确的端点。有关详细信息,请参阅查找连接端点。
查看 Valkey 或 Redis OSS 集群与客户端之间的 TCP 连接
确保 Valkey 或 Redis OSS 集群与客户端资源之间有 TCP 连接。要确认 ElastiCache 集群和客户端之间的连接,请从客户端资源运行 curl 命令:
$ curl -v telnet://example-cluster-endpoint:6379
**注意:**将 example-cluster-endpoint 替换为您集群的端点。
输出示例:
* Trying 172.31.1.242:6379...* Connected to example-cluster-endpoint (172.31.1.242) port 6379
在前面的示例中,输出中的 Connected(已连接)确认 TCP 连接成功。
查看与具有传输中加密的集群的连接情况
要通过 TLS 发送 Valkey 或 Redis OSS 集群流量,必须使用传输中加密。要与客户端建立连接,客户端必须支持 TLS。
如果您有支持 TLS 的 valkey-cli 或 redis-cli,您可以在命令中添加 --tls 参数来开启 TLS 支持。
redis-cli 示例:
$ redis-cli -h example-encrypted-cluster-endpoint -p 6379 --tls
valkey-cli 示例:
$ valkey-cli -h example-encrypted-cluster-endpoint -p 6379 --tls
**注意:**将 example-encrypted-cluster-endpoint 替换为您集群的加密端点。
输出示例:
example-encrypted-cluster-endpoint:6379>
如果您的 valkey-cli 或 redis-cli 不支持 TLS,则您会得到以下错误:
"Unrecognized option or bad number of args for: '--tls' "
要解决上述错误,请安装支持 TLS 的 valkey-cli 或 redis-cli。
通过身份验证查看与集群的连接
要通过身份验证查看与集群的连接,请使用 valkey-cli 或 redis-cli。有关详细信息,请参阅连接到集群的节点中的连接到启用加密/身份验证的集群部分。
redis-cli 示例:
redis-cli -h your-cluster-endpoint -p 6379 --tls -c --user your-user --askpass # Enter the password when prompted
valkey-cli 示例:
valkey-cli -h your-cluster-endpoint -p 6379 --tls -c --user your-user --askpass # Enter the password when prompted
**注意:**valkey-cli 和 redis-cli 命令同时需要 --tls 和 --askpass 或 -a 参数。如果未提供这些参数或者您使用的密码不正确,则会显示 NOAUTH 或 AUTH failed 消息。如果您仅将 valkey-cli 或 redis-cli 与 --tls 参数配合使用,请在您连接完成身份验证之后使用 AUTH <password>。
更新您的客户端资源上的 DNS 属性
如果您遇到 DNS 问题,则可能会收到“Name or service not known”(未知名称或服务)或“NXDOMAIN”错误。当通过您的自定义 DNS 服务器进行的 DNS 查询失败时,将会发生这些错误。要解决这些错误,请确保您在 Amazon VPC 客户端资源上具有正确的 DNS 属性。
**注意:**最佳做法是将 Amazon DNS 服务器用于您的虚拟私有云 (VPC)。
查看您的客户端连接
要查看 ElastiCache 集群的客户端连接详细信息,您可以使用 Valkey 和 Redis OSS 的指标,例如 CurrConnections 和 **NewConnections。**ElastiCache 使用四到六个连接来监控集群。
要查找您的客户端连接详细信息,请运行以下 valkey-cli 或 redis-cli 命令:
$ CLIENT LIST
该命令的输出列出了所有连接的客户端,包括其 IP 地址、空闲时间和其他信息。有关详细信息,请参阅 Valkey 网站上的 CLIENT LIST 和 Redis OSS 网站上的 CLIENT LIST。
查看您的集群和客户端资源之间的网络连接
根据您访问 ElastiCache 集群的方式,您可能会遇到延迟问题。为了最大限度地减少延迟,最佳做法是从 Amazon EC2 或同一 Amazon VPC 中的资源访问 ElastiCache。有关详细信息,请参阅访问 Amazon VPC 中 ElastiCache 缓存的访问模式和访问您的 ElastiCache 集群或复制组。
相关信息
持续的连接问题
连接到 Valkey 或 Redis OSS 集群或复制组 (Linux)