Amazon ElastiCache
用户指南 (API 版本 2015-02-02)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

第 5 步:连接到群集节点

在继续操作之前,请确保您已完成第 4 步:授权访问

此部分假设您已创建了 Amazon EC2 实例并可以连接到该实例。有关如何执行此操作的说明,请转到 Amazon EC2 入门指南

仅当您进行授权后,Amazon EC2 实例才能连接到群集节点。有关更多信息,请参阅 第 4 步:授权访问

步骤 5.1:查找您的节点终端节点

在您的群集处于可用 状态且您已授予对该群集的访问权 (第 4 步:授权访问) 后,您可以登录 Amazon EC2 实例并连接到该群集。为此,您必须先确定终端节点。

要查找您的终端节点,请参阅您正在运行的引擎和群集类型的相关主题。找到您所需的终端节点时,将其复制到您的剪贴板以在步骤 5.2 中使用。

步骤 5.2:连接到 Memcached 群集

在您的群集处于可用 状态且您已授予对该群集的访问权 (第 4 步:授权访问) 后,您可以登录 Amazon EC2 实例并连接到该群集。

连接到 Memcached 群集

  1. 登录 AWS 管理控制台并通过以下网址打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在 Amazon EC2 实例的命令提示符处,键入以下命令,并使用您的群集和端口的终端节点替换此示例中显示的相应内容。

    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 '^]'. >
  3. 运行 Memcached 命令。

    您现已连接至群集并且可以按以下方式运行 Memcached 命令。

    set a 0 0 5 // Set key "a" with no expiration and 5 byte value hello // Set value as "hello" STORED get a // Get value for key "a" VALUE a 0 5 hello END get b // Get value for key "b" results in miss END >

步骤 5.2:连接到 Redis 群集或复制组

现在您有了所需的终端节点,便可以登录 EC2 实例并连接到群集或复制组。

您需要使用启用了 SSL 的客户端访问启用了 ElastiCache 传输中加密的 Redis 节点中的数据。很遗憾,redis-cli 不支持 SSL。但是,有一个使用 stunnel 的变通方法。有关连接到启用了加密的 Redis 群集的说明,请参阅步骤 5.2.a:连接到加密 Redis 群集或复制组

步骤 5.2.a:连接到非加密 Redis 群集或复制组

在以下示例中,您使用 redis-cli 实用工具连接到未启用加密的运行 Redis 的群集。有关 Redis 以及可用 Redis 命令的更多信息,请参阅 Redis 命令网页。

使用 redis-cli 连接到未启用加密的 Redis 群集

  1. 使用您选择的连接实用工具连接到 Amazon EC2 实例。有关如何连接到 Amazon EC2 实例的说明,请参阅 Amazon EC2 入门指南

  2. 下载和安装 GNU Compiler Collection (gcc)。

    在 EC2 实例的命令提示符中键入下面的命令,然后在确认提示符处键入 y

    sudo yum install gcc

    此举将生成类似于下述内容的输出。

    Loaded plugins: priorities, security, update-motd, upgrade-helper Setting up Install Process Resolving Dependencies --> Running transaction check ...(output omitted)... Total download size: 27 M Installed size: 53 M Is this ok [y/N]: y Downloading Packages: (1/11): binutils-2.22.52.0.1-10.36.amzn1.x86_64.rpm | 5.2 MB 00:00 (2/11): cpp46-4.6.3-2.67.amzn1.x86_64.rpm | 4.8 MB 00:00 (3/11): gcc-4.6.3-3.10.amzn1.noarch.rpm | 2.8 kB 00:00 ...(output omitted)... Complete!
  3. 下载并编译 redis-cli 实用工具。此实用工具包含在 Redis 软件发布版中。

    在 EC2 实例的命令提示符处,键入以下命令:

    wget http://download.redis.io/redis-stable.tar.gz tar xvzf redis-stable.tar.gz cd redis-stable make distclean // Ubuntu systems only make
  4. 在 EC2 实例的命令提示符处,键入以下命令,并使用您的群集和端口的终端节点替换此示例中显示的相应内容。

    src/redis-cli -c -h mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com -p 6379

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

    redis mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com 6379>
  5. 运行 Redis 命令。

    您现已连接至群集并且可以按以下方式运行 Redis 命令。

    set a "hello" // Set key "a" with a string value and no expiration OK get a // Get value for key "a" "hello" get b // Get value for key "b" results in miss (nil) set b "Good-bye" EX 5 // Set key "b" with a string value and a 5 second expiration "Good-bye" get b // Get value for key "b" "Good-bye" // wait >= 5 seconds get b (nil) // key has expired, nothing returned quit // Exit from redis-cli

步骤 5.2.a:连接到加密 Redis 群集或复制组

Amazon ElastiCache 引入了传输中加密、静态加密和身份验证加密。要连接到启用了传输中加密的群集,我们需要使用支持 SSL 的客户端。很遗憾,redis-cli 不支持 SSL。

感谢 Jayakrishnan L 提供以下过程和代码。

redis-cli 不支持 SSL/TLS 连接。

redis-cli -h master.ssltest.xxxxxx.use1.cache.amazonaws.com -p 6379 master.ssltest.xxxxxx.use1.cache.amazonaws.com:6379>set key1 value

来自上述命令的输出:

Error: Connection reset by peer

由于 redis-cli 和 telnet 等工具对运行临时命令很有用,这一部分将向您演示如何创建和使用通向您的 Redis 群集的 SSL 隧道,然后使用 redis-cli 来运行命令。

我们可以使用 stunnel 创建 SSL 隧道,并使用 redis-cli 通过该隧道连接到加密 Redis。设置 stunnel 非常简单,因为大部分配置设置已在 ElastiCache 层完成。

  1. 安装 stunnel

    sudo yum install stunnel
  2. Configure stunnel. 您可以设置所需数量的连接。

    cat /etc/stunnel/redis-cli.conf fips=no setuid=root setgid=root pid=/var/run//stunnel.pid debug=7 options=NO_SSLv2 options=NO_SSLv3 [redis-cli] client = yes accept = 127.0.0.1:6379 connect = master.ssltest.xxxxxx.use1.cache.amazonaws.com:6379 [redis-cli-slave] client = yes accept = 127.0.0.1:6380 connect = ssltest-002.ssltest.xxxxxx.use1.cache.amazonaws.com:6379
  3. Start stunnel.

    sudo stunnel /etc/stunnel/redis-cli.conf

    来自上述命令的输出:

    # netstat -tulnp | grep -i stunnel tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 3189/stunnel tcp 0 0 127.0.0.1:6380 0.0.0.0:* LISTEN 3189/stunnel
  4. 通过隧道的本地终端节点,使用 redis-cli 连接到加密 redis 节点。

    使用 redis-cli:

    redis-cli -h localhost -p 6379 -a MySecretPassword

    运行 redis-cli 命令。

    set key1 value get key1 "value"

    使用 telnet:

    telnet localhost 6379 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. auth MySecretPassword +OK get key1 $5 value
  5. 通过终止 stunnel 过程,停止并关闭 SSL 隧道。

    sudo pkill stunnel