如何测试与 Amazon ElastiCache Redis 或 Memcached 集群的连接?

上次更新日期:2021 年 2 月 10 日

如何使用客户端 (例如 redis-cli) 或来自 Linux 客户端的 telnet 测试与 Amazon ElastiCache for Redis 或 Amazon ElastiCache for Memcached 的连接?

简短描述

Amazon ElastiCache 目前支持两个不同的内存中键值引擎:Redis 和 Memcached。您可以在启动 ElastiCache 缓存集群时选择更喜欢使用的引擎。

注意:此解决方法涵盖测试仅供计划外使用的连接。有关受支持 Redis 客户端的列表,请参阅 Redis 文档

对于使用 Java、.NET 或 PHP 的 Memcached,最佳实践是将 ElastiCache 客户端与 Auto Discovery 功能结合使用。带有 Auto Discovery 功能的 ElastiCache 客户端支持自动发现添加到缓存集群的新 ElastiCache 节点。

解决方法

连接到 Redis 集群

ElastiCache 支持禁用集群模式和启用集群模式的 Redis 集群。要测试与这些集群的连接,可以使用 redis-cli 实用工具。最新版本的 redis-cli 还支持用于连接启用加密/身份验证的集群的 SSL/TLS。

在从中建立连接的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上下载并编译 redis-cli 实用工具。有关如何连接到 Amazon EC2 实例的说明,请参阅教程:开始使用 Amazon EC2 Linux 实例

注意:以下示例使用运行 Amazon Linux 和 Amazon Linux 2 的 EC2 实例。有关使用其他 Linux 发行版安装和编译 redis-cli 的文档,请参阅特定操作系统的文档。

Amazon Linux 2

$sudo amazon-linux-extras install epel -y
$sudo yum install gcc jemalloc-devel openssl-devel tcl tcl-devel -y
$sudo wget http://download.redis.io/redis-stable.tar.gz
$sudo tar xvzf redis-stable.tar.gz
$cd redis-stable
$sudo make BUILD_TLS=yes

Amazon Linux

$sudo yum install gcc jemalloc-devel openssl-devel tcl tcl-devel clang wget
$sudo wget http://download.redis.io/redis-stable.tar.gz
$sudo tar xvzf redis-stable.tar.gz
$cd redis-stable
$sudo CC=clang make BUILD_TLS=yes

注意:如果您要连接的集群未加密,则不需要 Build_TLS=yes 选项。

有关查找 Redis 终端节点的信息,请参阅查找连接终端节点

连接到已禁用集群模式的未加密集群

1.    运行以下命令以连接到该集群。在以下示例命令中,将 change-node-type.54awdt.ng.0001.use1.cache.amazonaws.com6379 替换为集群的终端节点和端口号。

src/redis-cli -h change-node-type.54awdt.ng.0001.use1.cache.amazonaws.com -p 6379

以下是上述命令返回的 Redis 命令提示符的示例:

change-node-type.54awdt.ng.0001.use1.cache.amazonaws.com:6379>

2.    运行 Redis 命令。

连接到集群后,您可以运行 Redis 命令。以下是 Redis 命令示例:

set a "hello"
OK
get a
"hello"
quit

连接到已启用集群模式的未加密集群

1.    运行以下命令以连接到该集群。在以下示例命令中,将 cluster-disable-rediscli.54awdt.clustercfg.use1.cache.amazonaws.com6379 替换为集群的终端节点和端口号。

src/redis-cli -h cluster-disabled-rediscli.54awdt.clustercfg.use1.cache.amazonaws.com -c -p 6379

注意:在上述命令中,选项 -c 按照 -ASK 和 -MOVED 重定向启用集群模式。

Redis 命令提示符中的结果类似于以下内容:

cluster-disabled-rediscli.54awdt.clustercfg.use1.cache.amazonaws.com:6379>

2.    您现在可以运行 Redis 命令。请注意,发生重定向的原因是您使用 -c 选项启用了重定向。如果未启用重定向,该命令将返回 MOVED 错误。有关 MOVED 错误的更多信息,请参阅 redis.io 网站上的 Redis 集群规范

set x Hi
-> Redirected to slot [16287] located at 172.31.28.122:6379
OK
set y Hello
OK
get y
"Hello"
set z Bye
-> Redirected to slot [8157] located at 172.31.9.201:6379
OK
get z
"Bye"
get x
-> Redirected to slot [16287] located at 172.31.28.122:6379
"Hi"

连接至启用加密/身份验证的群集

默认情况下,redis-cli 在连接到 Redis 时使用未加密的 TCP 连接。选项 Build_TLS=Yes 在 redis-cli 编译期间启用 SSL/TLS,如前面的连接到 Redis 集群部分所示。启用 AUTH 是可选的操作。但是,您必须启用传输中加密才能启用 AUTH。有关 ElastiCache 加密和身份验证的更多详细信息,请参阅适用于 Redis 传输中加密 (TLS) 的 ElastiCache

注意:您可以结合使用选项 --tls 和 redis-cli 来同时连接到已启用和禁用集群模式的加密集群。如果集群设置了 AUTH 令牌,则可以使用选项 -a 提供身份验证密码。

在以下示例中,请确保替换集群的终端节点和端口。

连接到已禁用集群模式的加密集群

以下示例连接到已启用加密和身份验证的集群:

src/redis-cli -h master.rediscli-cluster-disabled.54awdt.use1.cache.amazonaws.com --tls -a <Password> -p 6379

以下示例连接到仅启用了加密的集群:

src/redis-cli -h master.cluster-disabled-noauth.54awdt.use1.cache.amazonaws.com --tls -p 6379

连接到已启用集群模式的加密集群

以下示例连接到已启用加密和身份验证的加密集群:

src/redis-cli -h master.rediscli-cluster-disabled.54awdt.use1.cache.amazonaws.com --tls -c -a <Password> -p 6379

以下示例连接到仅启用了加密的集群:

redis-cli -h clustercfg.tlswithoutauth.54awdt.use1.cache.amazonaws.com --tls -c -p 6379

连接到集群后,您可以运行 Redis 命令,如前面的未加密集群示例所示。

redis-CLI 替代解决方案

如果集群未启用集群模式,并且您需要连接到集群进行短期测试,但不进行 redis-cli 编译,则可以使用 telnet 或 openssl。在以下示例命令中,确保根据需要替换集群的终端节点和端口。

连接后,您可以运行 Redis 命令,如前面的示例所示。

以下示例连接到已禁用加密和/或身份验证集群模式的集群:

openssl s_client -connect master.rediscli-cluster-disabled.54awdt.use1.cache.amazonaws.com:6379

如果集群设置了密码,请先连接到集群。连接后,使用以下命令对集群进行身份验证,然后按 Enter 键。在以下示例中,将密码替换为集群的密码。

Auth Password

以下示例连接到已禁用集群模式且未启用加密或身份验证的集群:

telnet change-node-type.54awdt.ng.0001.use1.cache.amazonaws.com 6379

连接到 MemCached 集群

要连接到 MemCached 集群,请使用 telnet 实用工具。有关 Memcached 和可用 Memcached 命令的更多信息,请参阅 Memcached 网站。有关查找 Memcached 终端节点的详细信息,请参阅查找连接终端节点

1.    在从中测试连接的 EC2 实例上安装 telnet 实用工具。

基于 CentOS 的系统:

$sudo yum install telnet

基于 Debian 的系统 (Ubuntu):

$sudo apt-get install telnet

有关如何连接到 Amazon EC2 实例的说明,请参阅教程:开始使用 Amazon EC2 Linux 实例

2.    使用以下命令连接到终端节点。将 eaogs8.0001.usw2.cache.amazonaws.com 替换为您的终端节点,将 11211 替换为节点的端口。

telnet mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com 11211

输出应与以下类似:

Trying 128.0.0.1...
Connected to mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com.
Escape character is '^]'.
>

您现在已连接到节点。现在可以运行 Memcached 命令,如以下示例所示:

set a 0 0 5
hello
STORED
get a
VALUE a 0 5
hello
END

这篇文章对您有帮助吗?


您是否需要账单或技术支持?