本页面介绍了如何使用 Telnet 和 redis-cli 连接到 Redis 实例。此外,本页面还提供了在使用读取副本、AUTH
和传输加密等功能时如何连接的说明。
最后,本页面还提供了有关如何从 Google Kubernetes Engine 环境进行连接的说明。
如需查看 Memorystore for Redis 支持的 Google Cloud 环境列表,请参阅 支持的环境。Memorystore 支持的某些无服务器环境需要无服务器 VPC 访问通道连接器。如需了解详情,请参阅无服务器 VPC 访问通道连接器要求 。
使用 telnet 从 Compute Engine 虚拟机连接到 Redis 实例
您可以从任何具有支持的 RFC 1918 IP 地址且使用实例的授权网络的 Compute Engine 虚拟机连接到 Memorystore for Redis 实例。
如果您没有与实例使用同一授权网络的 Compute Engine 虚拟机,请创建一个虚拟机并使用 SSH 连接到该虚拟机。为 此,请按照在 Compute Engine 中创建 Linux 虚拟机实例中的步骤操作。
使用
apt-get安装telnet:sudo apt-get install telnet在终端窗口中,使用 telnet 命令建立与实例 IP 地址的连接。将 VARIABLES 替换为适当的值。
telnet INSTANCE_IP_ADDRESS 6379
如果您可以连接到实例,则该命令会返回以下结果:
Trying INSTANCE_IP_ADDRESS… Connected to INSTANCE_IP_ADDRESS
在 telnet 会话中,输入一些 Redis 命令:
请输入:
PING
结果:
PONG
输入
SET HELLO WORLD
结果:
+OK
请输入:
GET HELLO
结果:
$5 WORLD
使用 redis-cli 从 Compute Engine 虚拟机连接到 Redis 实例
您可以从任何具有支持的 RFC 1918 IP 地址且使用 Redis 实例的授权网络的 Compute Engine 虚拟机 连接到 Redis 实例。
如果您还没有与 Redis 实例使用同一授权 网络的 Compute Engine 虚拟机,请创建一个虚拟机并按照 在特定子网中创建虚拟机实例中的说明连接到该虚拟机。
从 Compute Engine SSH 终端运行以下命令,以在 Compute Engine 虚拟机上安装
redis-cli:sudo apt-get install redis-tools
在 Compute Engine 终端中运行以下命令,将 variables 替换为适当的值。
redis-cli -h redis-instance-ip-address
您现在已使用
redis-cli连接到 Redis 实例。完成与 Redis 实例的连接测试后,您应该考虑删除用于连接到 Redis 实例的 Compute Engine 虚拟机。这样做有助于避免系统向您的 Cloud Billing 帐号收取费用。
连接到使用 AUTH 的 Redis 实例
本部分介绍如何连接到启用了 AUTH 功能的 Redis 实例。
如果您还没有与 Redis 实例使用同一授权网络的 Compute Engine 虚拟机,请创建一个虚拟机并按照 Linux 虚拟机使用快速入门中的说明连接到该虚拟机。
从 Compute Engine SSH 终端运行以下命令,以在 Compute Engine 虚拟机上安装
redis-cli:sudo apt-get install redis-tools
获取实例的 AUTH 字符串
运行以下命令以使用
redis-cli进行身份验证并连接到您的实例,将 variables 替换为适当的值:redis-cli -h instance-ip-address -a auth-string
或:
redis-cli -h instance-ip-address AUTH auth-string
运行 Redis
SET和GET命令以验证是否与实例建立了经过身份验证的连接。完成与 Redis 实例的连接测试后,您应该考虑删除用于连接到 Redis 实例的 Compute Engine 虚拟机。这样做有助于避免系统向您的 Cloud Billing 帐号收取费用。
使用读取端点连接到 Redis 实例
如果实例已启用读取副本 ,您可以按照以下说明连接到读取端点:
如果您还没有与 Redis 实例使用同一授权网络的 Compute Engine 虚拟机,请创建一个虚拟机并按照 Linux 虚拟机使用快速入门中的说明连接到该虚拟机。
使用
apt-get安装telnet:sudo apt-get install telnet如需查找实例的读取端点的 IP 地址,请查看实例的读取副本信息。
在终端窗口中,使用 telnet 命令建立与 Redis 实例读取端点 IP 地址的连接,并将 variables替换为适当的值。
telnet read-endpoint-ip 6379
如果成功,该命令将返回以下结果:
Trying read-endpoint-ip… Connected to read-endpoint-ip
在 telnet 会话中,输入一些 Redis 命令:
请输入:
PING
结果:
PONG
使用 Stunnel 和 telnet 安全地连接到 Redis 实例
本部分提供了一个示例,说明如何使用 Stunnel 连接到启用了传输加密的 Redis 实例。Stunnel 是一个代理,可为客户端和服务器添加传输层安全协议 (TLS) 加密功能,而无需更改其代码。如需了解详情,请参阅 Stunnel文档。
如果您没有启用传输加密的 Redis 实例,请创建一个。如需了解详情,请参阅创建启用传输加密的 Redis 实例。
如果您没有与上一步中的 Redis 实例使用同一授权网络的 Compute Engine 虚拟机,请创建一个虚拟机并连接到该虚拟机。如需了解详情,请参阅在 Compute Engine 中创建 Linux 虚拟机实例。
运行以下命令,安装此过程所需的工具:
sudo apt-get install stunnel4
sudo apt-get install telnet
除非另有说明,否则此过程中的其余步骤将在您创建并连接到的 Compute Engine 虚拟机的 SSH 终端中进行。
配置 Compute Engine 虚拟机,以便与安全通道配合使用:
运行以下命令,为您的 证书授权机构 (CA) 创建文件:
sudo vim /tmp/server_ca.pem
在用于管理资源的 标准终端 Google Cloud (而非 Compute Engine 终端)中运行以下命令,以查看 Redis 实例的 CA:
gcloud redis instances describe INSTANCE_ID --region=REGION
进行以下替换:
- INSTANCE_ID:Redis 实例的 ID
- REGION:实例所在的区域
最多可以有三个 CA。
复制所有 CA,包括
-----BEGIN CERTIFICATE-----行和
-----END CERTIFICATE-----行,然后将内容粘贴并保存到您创建的server_ca.pem文件中。确保 CA 的文本完全左对齐,并且 CA 的任何行都没有前导空格。
运行以下命令,为您的 Stunnel 配置信息创建文件:
sudo vim /etc/stunnel/redis-client.conf
将以下文本粘贴到文件中,并将 REDIS_INSTANCE_IP 替换为实例的 IP 地址:
output=/tmp/stunnel.log CAfile=/tmp/server_ca.pem client=yes pid=/var/run/stunnel.pid verifyChain=yes sslVersion=TLSv1.2 [redis] accept=127.0.0.1:6378 connect=REDIS_INSTANCE_IP:6378
运行以下命令,启动 Stunnel:
sudo stunnel /etc/stunnel/redis-client.conf
验证 Stunnel 是否正在运行:
ps aux | grep stunnel
运行以下命令,重启 Stunnel:
sudo systemctl restart stunnel4
您可以在重启 Stunnel 之前和之后使用
ps aux | grep stunnel命令,以确认重启是否成功。 如果ps aux | grep stunnel命令显示的 Stunell 进程 ID 不同,则表示 Stunell 已成功重启。
如需使用 telnet 连接到 Redis 实例,请运行以下命令:
telnet localhost 6378
在 telnet 会话中,测试您的连接。
可选:如果您的实例启用了 Redis AUTH,则必须先进行身份验证,然后才能测试连接。
运行以下命令:
AUTH AUTH_STRING
将 AUTH_STRING 替换为实例的身份验证字符串。
结果:
OK
运行以下命令:
PING
结果:
PONG
可选:除了 telnet 之外,您还可以通过本地 Stunnel 端口使用
redis-cli进行连接,并传递 AUTH 字符串。运行以下命令:
redis-cli -h 127.0.0.1 -p 6378 -a AUTH_STRING
使用端口转发从本地机器进行连接
在开发过程中,从本地机器连接到 Redis 实例会很有帮助。为此,您必须创建一个 Compute Engine 实例以用于将端口转发到 Redis 实例。
运行以下命令,创建 Compute Engine 实例:
gcloud compute instances create COMPUTE_VM_NAME --machine-type=f1-micro --zone=ZONE
其中:
- COMPUTE_VM_NAME 是您为 Compute Engine 虚拟机指定的名称。
- ZONE 是您要预配虚拟机的可用区。
此命令可使用
f1-micro机器 类型 创建 Compute Engine 虚拟机,以提高成本效益。您可以选择其他机器类型。在本地机器上打开一个新终端。
如需创建通过 Compute Engine 虚拟机转发流量的 SSH 隧道,请运行以下命令:
gcloud compute ssh COMPUTE_VM_NAME --zone=ZONE -- -N -L 6379:REDIS_INSTANCE_IP_ADDRESS:6379
其中:
- COMPUTE_VM_NAME 是 Compute Engine 虚拟机的名称。
- ZONE 是 Compute Engine 虚拟机所在的同一可用区 。
- REDIS_INSTANCE_IP_ADDRESS 是 Redis 实例的 IP 地址。
如要测试连接,请打开一个新的终端窗口并运行以下命令:
redis-cli ping
如果运行正常,则结果应返回:
PONG
您现已连接到 Redis 实例,可以使用此打开的 SSH 隧道将命令发送到 Redis 实例。如果您尚未安装
redis-cli,请安装,以便运行此命令。只要您保持带有 SSH 隧道连接的终端窗口打开并运行,SSH 隧道仍保持打开状态。
从 Google Kubernetes Engine 集群连接到 Redis 实例
如需验证集群是否使用 IP 别名,请使用 gcloud container clusters describe。
您可以从与 Redis 实例使用相同授权网络的 Google Kubernetes Engine 集群连接到该 Redis 实例。
从运行 bash shell 的 pod 进行连接
- 进入控制台中的 GKE 页面。 Google Cloud
GKE - 点击您要从中连接的 GKE 集群。如果您还没有集群,请创建一个启用 IP 别名的集群。如需了解如何创建已启用 IP 别名的集群,请参阅创建 VPC 原生集群。
- 点击集群名称右侧的连接按钮,然后点击所显示的窗口中的在 Cloud Shell 中运行按钮。
- 通过运行以下命令来配置
kubectl命令行访问权限:gcloud container clusters get-credentials CLUSTER_NAME --zone=CLUSTER_ZONE --project=PROJECT_ID
CLUSTER_NAME是集群的名称。CLUSTER_ZONE是集群所在的地区。它还必须是 Redis 实例所在的地区。PROJECT_ID是集群和 Redis 实例所在的项目。
kubeconfig generated for CLUSTER_NAME - 如果您的集群是版本 1.8 或更高版本且启用了 IP 别名,请跳过此步骤。如果您的集群是版本 1.7 或更低版本,或者集群为版本 1.8 或更高版本但未启用 IP 别名,请在尝试连接到实例之前,按照以下解决方法步骤操作: 如需详细了解 IP 别名(包括如何创建启用了此设置的集群),请参阅创建 VPC 原生集群。
- 使用以下命令连接到 bash shell:
kubectl run -i --tty busybox --image=busybox -- sh
- 使用主机地址和端口号建立与 Redis 实例的 telnet 连接:
telnet HOST-IP PORT
- 输入基本 Redis 命令来验证连接:
PING +PONG
- 要关闭 telnet 连接,请按 Control+C(在 Mac 上按 Command+C)。要退出 pod 中的 bash shell,请输入 return。如果您已完成操作,不再需要连接到 Redis,请从
/k8s-custom-iptables/目录运行以下命令:./uninstall.sh
从 Google Kubernetes Engine pod 连接到 Redis 实例
开始之前,您需要一个 GKE 集群。如果您还没有集群,请创建一个启用 IP 别名的集群。如需了解如何创建已启用 IP 别名的集群,请参阅创建 VPC 原生集群。
- 在控制台的右上角,点击 激活 Cloud Shell
按钮。 - 通过运行以下命令来配置
kubectl命令行访问权限:gcloud container clusters get-credentials CLUSTER_NAME --zone CLUSTER_ZONE --project PROJECT_ID
CLUSTER_NAME是集群的名称。CLUSTER_ZONE是集群所在的地区。它还必须是 Redis 实例所在的地区。PROJECT_ID是集群和 Redis 实例所在的项目。
kubeconfig generated for CLUSTER_NAME - 如果您的集群是版本 1.8 或更高版本且启用了 IP 别名,请跳过此步骤。如果您的集群是版本 1.7 或更低版本,或者集群为版本 1.8 或更高版本但未启用 IP 别名,请在尝试连接到实例之前,按照以下解决方法步骤操作: 如需详细了解 IP 别名(包括如何创建启用了此设置的集群),请参阅创建 VPC 原生集群。
- 使用以下命令启动运行
redis-cli的 Redis pod:kubectl run -i --tty redisbox --image=redis:7.2 -- sh
- 运行
redis-cli命令,将HOST-IP替换为 Redis 实例的主机 IP 地址:redis-cli -h HOST-IP info
- (可选)运行 Redis benchmark 命令,再次将
HOST-IP替换为 Redis 实例的主机 IP 地址:redis-benchmark -c 100 -n 100000 -d 1024 -r 100000 -t PING,SET,GET,INCR,LPUSH,RPUSH,LPOP,RPOP,SADD,SPOP,MSET -h HOST-IP -q
- 要退出 Redis pod,请输入
return。如果您已完成操作,不再需要连接到 Redis,请从/k8s-custom-iptables/目录运行以下命令:./uninstall.sh
后续步骤
使用在以下位置运行的示例应用连接到 Redis 实例: