步骤 4:连接到集群节点 - Amazon ElastiCache for Redis
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

步骤 4:连接到集群节点

在继续之前,请完成步骤 3:授予对集群的访问权限

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

仅当您进行授权后,Amazon EC2 实例才能连接到集群节点。

查找您的节点端点

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

查找 Redis(已禁用集群模式)集群的端点(控制台)

如果 Redis(已禁用集群模式)集群只有一个节点,则使用该节点的端点进行读取和写入操作。如果该集群具有多个节点,则有三种类型的端点,即主端点读取器终端节点节点端点

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

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

注意

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

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

查找 Redis(已禁用集群模式)集群的端点

  1. 登录 Amazon Web Services Management Console 并打开 ElastiCache 控制台 (https://console.aws.amazon.com/elasticache/)。

  2. 从导航窗格中,选择 Redis

    集群屏幕将显示 Redis(已禁用集群模式)和 Redis(已启用集群模式)集群的列表。选择在 创建 Redis(已禁用集群模式)集群(控制台) 部分中创建的集群。

  3. 要查找集群的主终端节点和/或读取器终端节点,请选中集群名称左侧的框。

    图像:Redis(已禁用集群模式)集群的主端点

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

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

  4. 如果 Redis(已禁用集群模式)集群有副本节点,您可以通过选择此集群的名称找到集群副本的节点端点。

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

    图像:Redis(已禁用集群模式)集群的节点端点

    Redis(已禁用集群模式)集群的节点端点

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

    1. 找到并突出显示要复制的终端节点,每次一个终端节点。

    2. 右键单击突出显示的终端节点,然后从上下文菜单中选择 Copy

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

Redis(已禁用集群模式)主端点类似以下内容。根据是否已启用传输中加密而有所不同。

未启用传输中加密

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

找到您所需的端点后,将其复制到您的剪贴板以在下一步中连接到集群时使用。

为进一步了解如何查找您的端点,请参阅您正在运行的引擎和集群类型的相关主题。

现在您有了所需的终端节点,便可以登录 EC2 实例并连接到集群或复制组。在以下示例中,您使用 redis-cli 实用工具连接到集群。最新版本的 redis-cli 还支持 SSL/TLS 用于连接启用加密/身份验证的集群。

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

注意

此过程包括使用仅供计划外使用的 redis-cli 实用工具测试连接。有关受支持 Redis 客户端的列表,请参阅 Redis 文档。有关通过 ElastiCache 使用 Amazon 开发工具包的示例,请参阅 ElastiCache 和 Amazon 开发工具包入门

下载并安装 redis-cli

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

  2. 通过运行以下命令下载并安装 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 选项。

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

  1. 运行以下命令以连接到集群,并将 cluster-endpoint(集群端点)port number(端口号) 替换为您的集群端点和您的端口号。(Redis 的默认端口为 6379。)

    src/redis-cli -h cluster-endpoint -c -p port number
    注意

    在上述命令中,选项 -c 可遵循 -ASK 和 -MOVED 重新导向启用集群模式。

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

    cluster-endpoint:port number
  2. 现在您就可以运行 Redis 命令了。请注意,重新导向发生是因为您使用 -c 选项启用了它。如果未启用重新导向,则命令将返回 MOVED 错误。有关 MOVED 错误的更多信息,请参阅 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-cli 部分所示。启用 AUTH 是可选的。但是,您必须启用传输过程中的加密才能启用 AUTH。有关 ElastiCache 加密和身份验证的更多详细信息,请参阅 Redis for ElastiCache 传输中加密 (TLS)

注意

您可以通过 redis-cli 使用选项 --tls 连接到已启用和已禁用集群模式的加密集群。如果集群设置了 AUTH 令牌,则可以使用选项 -a 以提供 AUTH 密码。

在以下示例中,确保将 cluster-endpoint(集群端点)port number(端口号) 替换为您的集群端点和您的端口号。(Redis 的默认端口为 6379。)

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

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

src/redis-cli -h cluster-endpoint --tls -a your-password -p port number

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

src/redis-cli -h cluster-endpoint --tls -p port number

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

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

src/redis-cli -h cluster-endpoint --tls -a your-password -p port number

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

src/redis-cli -h cluster-endpoint --tls -p port number

连接到集群后,您可以为未加密集群运行上述示例中的 Redis 命令。

Redis-cli 替代方案

如果集群未启用集群模式,并且您需要与集群建立连接以进行短期测试(但不经过 redis-cli 编译),则可以使用 telnet 或 openssl。在以下示例命令中,确保将 cluster-endpoint(集群端点)port number(端口号) 替换为您的集群端点和您的端口号。(Redis 的默认端口为 6379。)

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

openssl s_client -connect cluster-endpoint:port number

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

Auth your-password

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

telnet cluster-endpoint port number

要使用 Redis CLI 从 EC2 Windows 实例连接到 Redis 集群,您必须下载 redis-cli 软件包并使用 redis-cli.exe 从 EC2 Windows 实例连接到 Redis 集群。

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

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

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

  2. 复制链接 https://github.com/microsoftarchive/redis/releases/download/win-3.0.504/Redis-x64-3.0.504.zip 并将其粘贴到互联网浏览器中,以便从 GitHub https://github.com/microsoftarchive/redis/releases/tag/win-3.0.504 提供的可用版本中下载 Redis 客户端的 zip 格式文件

    将 zip 文件提取到您指定的文件夹/路径。

    打开命令提示符并更改为 Redis 目录,然后运行命令 c:\Redis>redis-cli -h Redis_Cluster_Endpoint -p 6379

    例如:

    c:\Redis>redis-cli -h cmd.xxxxxxx.ng.0001.usw2.cache.amazonaws.com -p 6379
  3. 运行 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
  1. 运行以下命令以连接到集群,并将 cluster-endpoint(集群端点)port number(端口号) 替换为您的集群端点和您的端口号。(Redis 的默认端口为 6379。)

    src/redis-cli -h cluster-endpoint -c -p port number
    注意

    在上述命令中,选项 -c 可遵循 -ASK 和 -MOVED 重新导向启用集群模式。

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

    cluster-endpoint:port number
  2. 现在您就可以运行 Redis 命令了。请注意,重新导向发生是因为您使用 -c 选项启用了它。如果未启用重新导向,则命令将返回 MOVED 错误。有关 MOVED 错误的更多信息,请参阅 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-cli 部分所示。启用 AUTH 是可选的。但是,您必须启用传输过程中的加密才能启用 AUTH。有关 ElastiCache 加密和身份验证的更多详细信息,请参阅 Redis for ElastiCache 传输中加密 (TLS)

注意

您可以通过 redis-cli 使用选项 --tls 连接到已启用和已禁用集群模式的加密集群。如果集群设置了 AUTH 令牌,则可以使用选项 -a 以提供 AUTH 密码。

在以下示例中,确保将 cluster-endpoint(集群端点)port number(端口号) 替换为您的集群端点和您的端口号。(Redis 的默认端口为 6379。)

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

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

src/redis-cli -h cluster-endpoint --tls -a your-password -p port number

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

src/redis-cli -h cluster-endpoint --tls -p port number

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

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

src/redis-cli -h cluster-endpoint --tls -a your-password -p port number

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

src/redis-cli -h cluster-endpoint --tls -p port number

连接到集群后,您可以为未加密集群运行上述示例中的 Redis 命令。