本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设计你自己的 ElastiCache (RedisOSS) 集群
以下是设计自己的 ElastiCache (RedisOSS) 集群时必须执行的一次性操作。
有关设置的更多信息, ElastiCache 请参阅正在设置 ElastiCache。
步骤 1:创建子网组
在您创建集群之前,请先创建子网组。缓存子网组是您可能要在中为缓存集群指定的子网集合。VPC在中启动缓存集群时VPC,您需要选择一个缓存子网组。然后 ElastiCache 使用该缓存子网组将该子网内的 IP 地址分配给群集中的每个缓存节点。
当您创建新的子网组时,请记下可用 IP 地址的数量。如果子网拥有的空闲 IP 地址寥寥无几,则您还可以向集群中添加的节点数可能会受限制。要解决此问题,您可以对某一子网组分配一个或多个子网,这样集群的可用区中便会有充足数量的 IP 地址。之后,便可向您的集群中添加更多节点。
以下过程演示如何创建名为 mysubnetgroup
的子网组(控制台)和 AWS CLI。
以下过程介绍如何创建子网组(控制台)。
创建子网组(控制台)
-
登录到 AWS 管理控制台,然后在上打开 ElastiCache 控制台https://console.aws.amazon.com/elasticache/
。 -
在导航列表中,选择 Subnet Groups。
-
选择 Create Subnet Group。
-
在 Create Subnet Group(创建子网组)向导中,执行以下操作。根据需要完成所有设置后,选择 Yes, Create。
-
在 Name 框中,为子网组键入名称。
-
在 Description 框中,为子网组键入描述。
-
在 VPCID 框中,选择您创建VPC的 Amazon。
-
在 Availability Zone(可用区)和 Subnet ID(子网 ID)列表中,选择可用区或 Local Zone(本地区域)和您的私有子网 ID,然后选择 Add(添加)。
-
-
在出现的确认信息中,选择 Close。
您的新子网组显示在 ElastiCache 控制台的子网组列表中。您可以在窗口底部选择子网组以查看详细信息,例如与此组关联的所有子网。
在命令提示符处,使用命令 create-cache-subnet-group
创建子网组。
对于 Linux、macOS 或 Unix:
aws elasticache create-cache-subnet-group \ --cache-subnet-group-name
mysubnetgroup
\ --cache-subnet-group-description"Testing"
\ --subnet-idssubnet-53df9c3a
对于 Windows:
aws elasticache create-cache-subnet-group ^ --cache-subnet-group-name
mysubnetgroup
^ --cache-subnet-group-description"Testing"
^ --subnet-idssubnet-53df9c3a
该命令应该生成类似于下述信息的输出:
{
"CacheSubnetGroup": {
"VpcId": "vpc-37c3cd17",
"CacheSubnetGroupDescription": "Testing",
"Subnets": [
{
"SubnetIdentifier": "subnet-53df9c3a",
"SubnetAvailabilityZone": {
"Name": "us-west-2a"
}
}
],
"CacheSubnetGroupName": "mysubnetgroup"
}
}
有关更多信息,请参阅 AWS CLI 主题 create-cache-subnet-group.
步骤 2:创建集群
在创建用于生产使用的集群之前,您显然需要考虑如何配置集群以满足您的业务需求。这些问题在 在中准备集群 ElastiCache 部分中解决。就本入门练习而言,您将创建一个禁用集群模式的集群,并且您可以在其适用时接受默认配置值。
您所创建的集群将是活动的,不会在沙盒中运行。在您删除实例之前,您需要为其支付标准 ElastiCache 使用费。如果您一鼓作气完成此处描述的练习并在使用完毕后删除集群,则产生的全部费用将非常少(通常不到一美元)。有关 ElastiCache 使用费率的更多信息,请参阅 Amazon ElastiCache
您的集群将在基于 Amazon VPC 服务的虚拟私有云 (VPC) 中启动。
创建 Redis OSS (已禁用集群模式) 集群(控制台)
使用控制台创建 Redis OSS (已禁用集群模式) 集群 ElastiCache
-
登录 AWS Management Console 并打开 Amazon ElastiCache 控制台,网址为https://console.aws.amazon.com/elasticache/
。 -
从右上角的列表中,选择要在其中启动此集群的 AWS 区域。
-
从导航窗格中,选择 Get started(入门)。
选择 “创建”,VPC然后按照创建虚拟私有云 (VPC) 中概述的步骤进行操作。
在 ElastiCache 控制面板页面上,选择 Valkey 缓存或 Redis OSS 缓存。在本练习中,我们将选择 Redis OSS 缓存,然后选择创建 Redis OSS 缓存。
-
在 Cluster settings(集群设置)下,执行以下操作:
选择 Configure and create a new cluster(配置和创建新集群)。
对于 Cluster mode(集群模式),选择 Disabled(已禁用)。
-
对于 Cluster info(集群信息),为 Name(名称)输入一个值。
-
(可选)为 Description(描述)输入一个值。
在 Location(位置)下:
一旦您的集群状态变为可用,您就可以向 Amazon 授予EC2访问权限、连接集群并开始使用它。有关更多信息,请参阅第 3 步。授权访问集群 和第 4 步。Connect 连接到集群的节点。
重要
您的集群变为可用状态后,您便需要为集群处于活动状态的每个小时或分钟支付费用(即使您并未主动使用集群)。要停止此集群产生的费用,您必须将其删除。请参阅 删除中的集群 ElastiCache。
例
以下CLI代码创建了一个没有副本的 RedisOSS(已禁用集群模式)缓存集群。
对于 Linux、macOS 或 Unix:
aws elasticache create-cache-cluster \ --cache-cluster-id
my-cluster
\ --cache-node-typecache.r4.large
\ --engineredis
\ --num-cache-nodes1
\ --snapshot-arnsarn:aws:s3:::my_bucket/snapshot.rdb
对于 Windows:
aws elasticache create-cache-cluster ^ --cache-cluster-id
my-cluster
^ --cache-node-typecache.r4.large
^ --engineredis
^ --num-cache-nodes1
^ --snapshot-arnsarn:aws:s3:::my_bucket/snapshot.rdb
要在启用集群模式的情况下工作,请参阅以下主题:
要使用控制台,请参阅创建 Valkey 或 RedisOSS(已启用集群模式)集群(控制台)。
要使用 AWS CLI,请参阅创建 Valkey 或 RedisOSS(已启用集群模式)集群 ()AWS CLI。
步骤 3:授予对集群的访问权限
本节假设您熟悉启动和连接 Amazon EC2 实例。有关更多信息,请参阅 Amazon EC2 入门指南。
所有 ElastiCache 集群均设计为可从 Amazon EC2 实例进行访问。最常见的情况是从同一个亚马逊虚拟私有云 (AmazonVPC) 中的亚马逊EC2实例访问 ElastiCache 集群,本练习就是这种情况。
原定设置情况下,对您的集群的网络访问仅限于用于创建集群的账户。必须先授权该EC2实例访问集群,然后才能从EC2实例连接到集群。所需的步骤取决于您是将集群启动到 EC2-VPC 还是 EC2-Classic。
最常见的用例是部署在EC2实例上的应用程序需要连接到同一个集群VPC。在同一个EC2实例和集群之间管理访问权限的最简单方法VPC是执行以下操作:
-
为您的集群创建VPC安全组。此安全组可用于限制对集群实例的访问权限。例如,您可以为此安全组创建自定义规则,允许使用您在创建集群时分配给集群的端口和用于TCP访问集群的 IP 地址进行访问。
Redis OSS 集群和复制组的默认端口为
6379
。重要
Amazon ElastiCache 安全组仅适用于未在 Amazon Virtual Private Cloud 环境中运行的集群 (VPC)。如果您正在 Amazon Virtual Private Cloud 中运行,安全组将在控制台导航窗格中将不可用。
如果您在 Amazon 中运行 ElastiCache 节点VPC,则可以使用不同于安全组的 Amazon VPC 安全组来控制对集群的 ElastiCache 访问。有关在 Amazon ElastiCache 中使用的更多信息VPC,请参阅 Amazon VPCs 与 ElastiCache 安全
-
为您的EC2实例(Web 和应用程序服务器)创建VPC安全组。如果需要,此安全组可以允许通过的路由表从 Internet 访问EC2实例。VPC例如,您可以在此安全组上设置规则,允许TCP通过端口 22 访问EC2实例。
-
在集群的安全组中创建自定义规则,允许来自您为EC2实例创建的安全组的连接。这将允许安全组的任何成员均可访问集群。
注意
如果您打算使用将本地区域与 ElastiCache,请确保已启用它们。当您在该本地区域中创建子网组时,您的VPC子网将扩展到该本地区域,并且VPC会将该子网视为任何其他可用区域中的任何子网。所有相关网关和路由表都将自动调整。
在安全组中创建允许来自其他VPC安全组的连接的规则
-
登录 AWS 管理控制台并在 https://console.aws.amazon.com/v
pc 上打开亚马逊VPC控制台。 -
在导航窗格中,选择安全组。
-
选择或创建一个要用于集群实例的安全组。在入站规则下,选择编辑入站规则,然后选择添加规则。此安全组将允许访问其他安全组的成员。
-
从 “类型” 中选择 “自定义TCP规则”。
-
对于 Port Range,指定在创建集群时使用的端口。
Redis OSS 集群和复制组的默认端口为
6379
。 -
在 Source 框中,开始键入安全组的 ID。从列表中选择您将用于 Amazon EC2 实例的安全组。
-
-
完成后选择 Save。
启用访问后,您现在就可以连接到节点,如下一部分中所述。
有关从其他 Amazon VPC、不同 AWS 地区甚至企业网络访问您的ElastiCache 集群的信息,请参阅以下内容:
步骤 4:连接到集群节点
在继续之前,请完成步骤 3:授予对集群的访问权限。
本节假设您已经创建了一个 Amazon EC2 实例并且可以连接到该实例。有关如何执行此操作的说明,请参阅《Amazon EC2 入门指南》。
只有在您授权后,Amazon EC2 实例才能连接到集群节点。
查找您的节点端点
当您的集群处于可用状态并且您已获得访问权限时,您可以登录 Amazon EC2 实例并连接到该集群。为此,您必须先确定端点。
查找 Valkey 或 RedisOSS(已禁用集群模式)集群的终端节点(控制台)
如果 RedisOSS(已禁用集群模式)集群只有一个节点,则该节点的终端节点用于读取和写入。如果该集群具有多个节点,则有三种类型的端点,即主端点、读取器端点和节点端点。
主终端节点是一个始终解析为集群中主节点的DNS名称。主端点不受集群更改的影响,如将只读副本提升为主角色。对于写入活动,我们建议您的应用程序连接到主端点。
读取器终端节点将在 ElastiCache (RedisOSS) 集群中的所有只读副本之间均匀分配到该终端节点的传入连接。应用程序何时创建连接或应用程序如何(重复)使用连接等附加因素将决定流量分配。读取器端点会在添加或删除副本时实时跟踪集群更改。您可以将 ElastiCache (RedisOSS) 集群的多个只读副本放在不同的 AWS 可用区 (AZ) 中,以确保读取器终端节点的高可用性。
注意
读取器端点不是负载均衡器。该DNS记录将以循环方式解析为其中一个副本节点的 IP 地址。
对于读取活动,应用程序还可以连接到集群中的任何节点。与主端点不同,节点端点会解析为特定端点。如果您在您的集群中进行更改(例如添加或删除副本),则必须在您的应用程序中更新节点端点。
查找 Redis OSS (已禁用集群模式) 集群的终端节点
-
登录 AWS Management Console 并打开 ElastiCache 控制台,网址为 https://console.aws.amazon.com/elasticache/
。 -
从导航窗格中选择 Redis OSS 缓存。
集群屏幕将显示一个列表,其中包括所有现有的 Valkey 或 Redis OSS 无服务器缓存、Redis(已禁用集群模式)集群和 Redis OSSOSS(已启用集群模式)集群。选择在 创建 Redis OSS (已禁用集群模式) 集群(控制台) 部分中创建的集群。
-
要查找集群的主端点和/或读取器端点,请选中集群的名称(不是单选按钮)。
RedisOSS(已禁用集群模式)集群的主终端节点和读取器终端节点
如果该集群只有一个节点,则没有主端点,您可以继续下一步。
-
如果 RedisOSS(已禁用集群模式)集群具有副本节点,则可以通过选择集群的名称然后选择 “节点” 选项卡来找到集群的副本节点终端节点。
此时会显示节点屏幕,其中列出了集群中的每个节点(主节点和副本节点)及其端点。
Redis OSS (已禁用集群模式) 集群的节点终端节点
-
将端点复制到剪贴板:
-
逐一找到要复制的端点。
-
直接选择端点前面的复制图标。
端点现已复制到剪贴板。有关使用端点连接到节点的信息,请参阅 连接到节点。
-
RedisOSS(已禁用集群模式)主终端节点如下所示。根据是否已启用传输中加密而有所不同。
未启用传输中加密
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实例并连接到集群或复制组。在以下示例中,您将使用 valkey-cli 实用程序连接到集群。最新版本的 valkey-cli 还支持SSL/TLS用于连接启用加密/身份验证的集群。
以下示例使用运行亚马逊 Linux 和亚马逊 Linux 2 的亚马逊EC2实例。有关使用其他 Linux 发行版安装和编译 valkey-cli 的详细信息,请参阅您的特定操作系统的文档。
注意
此过程包括使用 valkey-cli 实用程序测试连接,仅供计划外使用。有关支持的客户端列表,请参阅 Valkey 文档
连接到已禁用集群模式的未加密的集群
运行以下命令以连接到集群并替换
primary-endpoint
以及port number
包含您的集群的终端节点和您的端口号。(Valkey 和 Redis 的默认端口OSS为 6379。)src/valkey-cli -h
primary-endpoint
-pport number
命令提示符中的结果类似于以下内容:
primary-endpoint
:port number
你现在可以运行 Valkey 和 Redis 命令了OSS。
set x Hello OK get x "Hello"
连接到已启用集群模式的未加密集群
运行以下命令以连接到集群并替换
configuration-endpoint
以及port number
包含您的集群的终端节点和您的端口号。(Valkey 和 Redis 的默认端口OSS为 6379。)src/valkey-cli -h
configuration-endpoint
-c -pport number
注意
在前面的命令中,选项-c 启用集群模式跟随-ASK和-MOVED 重定向
。 命令提示符中的结果类似于以下内容:
configuration-endpoint
:port number
你现在可以运行 Valkey 和 Redis 命令了OSS。请注意,重新导向发生是因为您使用 -c 选项启用了它。如果未启用重定向,则该命令将返回MOVED错误。有关MOVED错误的更多信息,请参阅集群规范
。 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"
连接到启用加密/身份验证的集群
默认情况下,valkey-cli 在连接 Valkey 和 Redis 时使用未加密的TCP连接。OSS该选项TLS在编译 valkey-cli 时BUILD_TLS=yes
启用SSL/,如上一节所示。下载并设置命令行访问权限启用AUTH是可选的。但是,您必须启用传输中加密才能启用AUTH。有关 ElastiCache 加密和身份验证的更多详细信息,请参阅ElastiCache 传输中加密 () TLS。
注意
您可以将该选项--tls
与 valkey-cli 配合使用,以连接到启用集群模式和禁用的加密集群。如果集群设置了AUTH令牌,则可以使用该选项-a
提供AUTH密码。
在以下示例中,请务必更换 cluster-endpoint
以及 port number
包含您的集群的终端节点和您的端口号。(Redis 的默认端口OSS为 6379。)
连接到已禁用集群模式的加密群集
以下示例连接到已启用加密和身份验证的集群:
src/valkey-cli -h
cluster-endpoint
--tls -ayour-password
-pport number
以下示例连接到仅启用加密的集群:
src/valkey-cli -h
cluster-endpoint
--tls -pport number
连接到已启用集群模式的加密群集
以下示例连接到已启用加密和身份验证的集群:
src/valkey-cli -c -h
cluster-endpoint
--tls -ayour-password
-pport number
以下示例连接到仅启用加密的集群:
src/valkey-cli -c -h
cluster-endpoint
--tls -pport number
连接到集群后,您可以运行 Valkey 或 Redis OSS 命令,如前面的未加密集群示例所示。
valkey-cli 或 redis-CLI 的替代方案
如果集群未启用集群模式,并且您需要连接到集群进行简短测试,但无需完成 valkey-cli 或 redis-cli 编译,则可以使用 telnet 或 openssl。在以下示例命令中,请务必替换 cluster-endpoint
以及 port number
包含您的集群的终端节点和您的端口号。(Redis 的默认端口OSS为 6379。)
以下示例连接到已启用加密和/或身份验证且已禁用集群模式的集群:
openssl s_client -connect
cluster-endpoint
:port number
如果集群已设置密码,请先连接到集群。连接后,使用以下命令对集群进行身份验证,然后按 Enter
键。在以下示例中,替换 your-password
使用您的集群的密码。
Auth
your-password
以下示例连接到未启用加密或身份验证的已禁用集群模式的集群:
telnet
cluster-endpoint
port number
要使用 Valkey 或 Redis 从 EC2 Windows 实例连接到集群 OSSCLI,你必须下载 v alkey-cli 软件包并使用 valkey-cli.exe 从 Windows 实例连接到 Valkey 或 Redis OSS 集群。EC2
在以下示例中,您将使用 valkey-cli 实用程序连接到未启用加密且运行 Valkey 或 Redis 的集群。OSS有关 Valkey 和可用命令的更多信息,请参阅 Valkey 网站上的 Valkey 命令
使用 valkey-cli 连接到未启用加密的 Valkey 或 Redis OSS 集群
-
使用您选择的连接实用程序连接到您的 Amazon EC2 实例。有关如何连接亚马逊EC2实例的说明,请参阅《亚马逊EC2入门指南》。
将链接复制并粘贴到 Internet 浏览器https://github.com/microsoftarchive/redis/releases/download/win-3.0.504/Redis-x64-3.0.504.zip
中,即可从可用版本中下载 Redis OSS 客户端的 zip 文件,网址为 GitHub https://github.com/microsoftarchive/redis/releases/tag/win-3.0.504 将 zip 文件提取到您指定的文件夹/路径。
打开命令提示符并切换到 Valkey 目录并运行命令
c:\Valkey>valkey-cli -h
。Valkey_Cluster_Endpoint
-p 6379例如:
c:\Valkey>valkey-cli -h cmd.xxxxxxx.ng.0001.usw2.cache.amazonaws.com -p 6379
-
运行 Valkey 或 Redis OSS 命令。
现在,您已连接到集群,可以运行如下所示的 Valkey 或 Redis OSS 命令。
set a "hello"
// Set key "a" with a string value and no expiration OKget 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 secondsget b
(nil) // key has expired, nothing returnedquit
// Exit from valkey-cli