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

4 分钟阅读
0

我想通过基于 Linux 的客户端测试与 Amazon ElastiCache Redis OSS 或 Amazon ElastiCache Memcached 集群的连接。

解决方案

**注意:**以下解决方法测试仅供计划外使用的连接。如需获取受支持的 Redis 客户端的列表,请参阅 Redis 网站上的连接 Redis 客户端

Amazon ElastiCache 支持 Redis OSS 和 Memcached 内存中键值引擎。请在启动 ElastiCache 缓存集群时,选择您的首选引擎。

对于搭载 Java、.NET 或 PHP 的 Memcached,最佳做法是使用具备 Auto Discovery 功能的 ElastiCache 客户端。具备 Auto Discovery 功能的 ElastiCache 客户端会自动识别添加到缓存集群的新 ElastiCache 节点。

创建 ElastiCache 集群

要创建 ElastiCache Redis OSS 集群,请参阅为 Valkey 或 Redis OSS 创建集群

要创建 Memcached 集群,请参阅为 Memcached 创建集群

连接到 ElastiCache Redis OSS 集群

ElastiCache 支持已禁用集群模式 (CMD) 和已启用集群模式 (CME) 的 Redis OSS 集群。要测试与这些集群的连接,请使用 redis-cli 或 redis6-cli 实用程序。最新版本的 redis-cli 和 redis6-cli 支持 SSL/TLS 连接到已开启加密或身份验证的集群。

在您希望连接的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上下载并编译 redis-cli 实用程序。有关详细信息,请参阅 Amazon EC2 入门

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

要连接到 ElastiCache Redis OSS 集群,请在您的操作系统中运行以下命令之一。

Amazon Linux 2023:

sudo yum install redis6 -y

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

当 Redis-cli 连接到 Redis 时,它使用未加密的 TCP 连接。当 redis-cli 编译时,BUILD_TLS=yes 选项会启用 SSL/TLS。如果您连接的集群对传输没有设置加密,则不需要 BUILD_TLS=yes 选项。

**注意:**当您安装 redis6 软件包时,您会自动安装默认支持 SSL/TLS 的 redis6-cli。

有关如何查找 Redis 端点的信息,请参阅在 ElastiCache 中查找连接端点

在以下步骤中,加密或未加密的集群是指是否对传输进行加密。

连接到 CMD 未加密的集群

**注意:**在以下示例命令中,将 change-node-type.54awdt.ng.0001.use1.cache.amazonaws.com 替换为您的集群端点,将 6379 替换为您的端口号。

为您的操作系统运行以下命令之一。

Amazon Linux 2023:

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

Amazon Linux 和 Amazon Linux 2:

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>

连接到集群后,您可以运行 Redis 命令。

命令示例:

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

有关详细信息,请参阅 Redis 网站上的命令

连接到 CME 未加密的集群

**注意:**在以下命令中,将 cluster-disable-rediscli.54awdt.clustercfg.use1.cache.amazonaws.com 替换为您的集群的配置端点,将 6379 替换为您的端口号。

为您的操作系统运行以下命令之一。

Amazon Linux 2023:

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

Amazon Linux 和 Amazon Linux 2:

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

**注意:**在前面的命令中,选项 -c-ASK-MOVED 重定向后启用集群模式。如果您未开启重定向,则该命令返回 MOVED 错误。有关详细信息,请参阅 Redis 网站上的 Redis 集群协议中的客户端和服务器角色以及 Redis 集群规范

前面的命令返回的 Redis 命令提示符类似于以下示例:

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

Redis 命令示例:

set x Hi-> Redirected to slot [16287] located at 172.31.28.122:6379OK
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"

在已开启加密或身份验证的情况下连接到集群

要启用 AUTH,您还必须开启传输中加密。有关详细信息,请参阅 ElastiCache 传输中加密 (TLS)

要同时连接到 CME 和集群 CMD 加密集群,请使用 redis-cli 中的 --tls 选项。如果集群设置了 AUTH 令牌,请使用选项 -a 提供 AUTH 密码。

**注意:**在 Redis 版本 7 和之后的版本中,会对现有 ElastiCache 集群开启传输中加密。您无需重建或重新预调配集群即可更改 Redis OSS 集群的 TLS 配置。应用程序可用性不受影响。

开启传输中加密后,请更新您的客户端配置以使用新的特定于 TLS 的端点

连接到 CMD 加密集群

**注意:**在以下命令中,将 master.rediscli-cluster-disabled.54awdt.use1.cache.amazonaws.com 替换为您的集群的配置端点,将 6379 替换为您的端口号。

要连接到已开启加密和身份验证的 CMD 集群,请为您的操作系统运行以下命令之一。

Amazon Linux 2023:

redis6-cli -h master.rediscli-cluster-disabled.54awdt.use1.cache.amazonaws.com --tls -a PASSWORD -p 6379

Amazon Linux 和 Amazon Linux 2:

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

要连接到仅开启加密的 CMD 集群,请为您的操作系统运行以下命令之一:

Amazon Linux 2023:

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

Amazon Linux 和 Amazon Linux 2:

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

连接到 CME 加密集群

要连接到已开启加密和身份验证的 CME 集群,请为您的操作系统运行以下命令之一:

Amazon Linux 2023:

redis6-cli -h clustercfg.tlswithauth.54awdt.use1.cache.amazonaws.com --tls -c -a PASSWORD -p 6379

Amazon Linux 和 Amazon Linux 2:

src/redis-cli -h clustercfg.tlswithauth.54awdt.use1.cache.amazonaws.com --tls -c -a PASSWORD -p 6379

要连接到仅开启加密的 CME 集群,请为您的操作系统运行以下命令之一:

Amazon Linux 2023:

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

Amazon Linux 和 Amazon Linux 2:

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

Redis-cli 替代方案

要在不编译 redis-cli 的情况下运行简短的测试,请使用 telnet 或 openssl 连接到 CMD 集群。

连接后,您可以运行 Redis 命令。

以下示例命令可连接到加密或经过身份验证的 CMD 集群:

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

如果您为集群设置了密码,请先连接到集群。连接后,运行以下命令以对集群进行身份验证,然后按 Enter

Auth Password

**注意:**在之前的示例命令中,将 Password 替换为您的集群密码

以下示例命令可连接到未开启加密或身份验证的 CMD 集群:

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

连接到 ElastiCache Memcached 集群

要连接到 Memcached 集群,请使用 telnet 实用程序。

在不采用传输中加密的情况下连接到 Memcached 集群

完成以下步骤:

  1. 在要测试连接的实例上安装 telnet 实用程序。

    对于基于 CentOS 的系统,运行以下命令:

    sudo yum install telnet

    对于基于 Debian 的系统 (Ubuntu),运行以下命令:

    sudo apt-get install telnet

    要连接到实例,请参阅连接到 EC2 实例

  2. 要连接到端点,请运行以下命令:

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

    **注意:**将 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 命令。

    Memcached 命令示例:

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

在采用传输中加密的情况下连接到 MemCached 集群

运行 Memcached 版本 1.6.12 及更高版本的集群支持传输中加密。Telnet 不使用加密。要连接到已开启加密的 MemCached 集群,请使用 openssl。

**注意:**只有在创建集群时,您才能在该集群上开启传输中加密。您无法修改集群以开启或关闭传输中加密。有关详细信息,请参阅 ElastiCache 传输中加密 (TLS)

要连接到端点,请运行以下命令:

openssl s_client -quiet -crlf -connect testwithtls.qtyxq7.cfg.apse2.cache.amazonaws.com:11211

**注意:**将 testwithtls.qtyxq7.cfg.apse2.cache.amazonaws.com 替换为您的端点,将 11211 替换为您的节点端口。

输出示例:

depth=2 C = US, O = Amazon, CN = Amazon Root CA 1  verify return:1  depth=1 C = US, O = Amazon, CN = Amazon RSA 2048 M02  
verify return:1  
depth=0 CN = *.testwithtls.qtyxq7.apse2.cache.amazonaws.com  
verify return:1

您现在已连接到一个节点,您可以运行 Memcached 命令。

Memcached 命令示例:

set a 0 0 5helloSTORED
get a
VALUE a 0 5
hello
END
AWS 官方
AWS 官方已更新 23 天前