我有 1 个 VPC - 在 1 个 EC2 实例(亚马逊 ami )和 1 个 Redis(已启用集群模式)集群下,具有身份验证(密码)并且安全组对所有 IP:端口开放(仅用于测试目的) - 所以设置非常简单。
telnet 在我的 EC2 实例的端口 6379 上工作 - 配置端点 - Shard>eachNode EndPoint
无法使用 Redis CLI 连接到 Redis 服务器 - 无论端点是配置端点还是节点端点;使用 v.5.0.4 的 Redis CLI ;
请注意 - AWS ElastiCache Redis 集群(已禁用集群)或单服务器节点提供主端点,工作正常。仅当启用集群并获取 ConfigEndpoint/NodeEndPoints 时,才会出现问题。
配置端点:
[root@ip-xx-xx-xx-xx src]# ./redis-cli -h clustercfg.xxxx.xxxxx.use1.cache.amazonaws.com -p 6379
Run Code Online (Sandbox Code Playgroud)
节点端点:
[root@ip-xx-xx-xx-xx src]# ./redis-cli -h xxxx-0001-0-01.xxxx.xxxxx.use1.cache.amazonaws.com -p 6379
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!
谢谢
我想为 AWS Elasticache (Redis) 创建安全组。
据我所知,我有两个选择:
在端口 6379 上打开自定义 TCP 连接,并定义可以到达 Redis 作为源的 IP 地址。
或者,当前有效的方法:我将 6379 端口打开到任何位置(以便我的 EC2 实例可以连接到它),并在 EC2 之前保护组件。
这里最好的方法是什么?
amazon-web-services redis amazon-elasticache amazon-vpc aws-security-group
我尝试设置 PHP 会话处理程序 Redis。
session.save_handler = redis
session.save_path = "tcp://xxx.cache.amazonaws.com:6379"
Run Code Online (Sandbox Code Playgroud)
这效果很好,但是当启用传输中加密时,它会失败
读取会话数据失败:redis
在这种情况下,连接字符串包含身份验证参数
?auth=12345
有什么我错过的技巧吗
我正在编写一个 CF 模板来创建 Elasticache 复制组。其中,我有一个名为SnapshotsofCommaDelimitedList类型的参数,用于将存储在 s3 中的 RDB 快照文件作为 ARN 列表传递 -
Snapshots:
Description: >-
List of ARNs of Redis RDB snapshot files to populate the Elasticache
cluster (optional)
Type: CommaDelimitedList
Run Code Online (Sandbox Code Playgroud)
我正在尝试有一个如下所示的条件,它将检查是否Snapshots为空 -
Conditions:
HasSnapshots: !Not
- !Equals
- !Ref Snapshots
- ''
Run Code Online (Sandbox Code Playgroud)
当我尝试在 CloudFormation Designer 中验证我的模板时,它会抛出错误 -
29/07/2020, 22:50:33 - Template contains errors.: Template error: every Fn::Equals object requires a list of 2 string parameters.
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?我必须使用 String 类型而Snapshots 不是 CommaDelimitedList 吗?或者还有其他更好的方法吗?
我需要如下所示的 …
作为 Elasticache 的新手,我正在尝试从在不同 VPC 中运行的实例连接到它。当客户端位于基于 TLS 的 VPC 内时,它工作得很好,因为不需要传递 TLS 证书。(我们只需要向 redis-cli 传递“--tls”选项)。同样,当我尝试从另一个 VPC 中运行的 redis-cli 执行操作时,它不会工作。
注意:-在这里,我已使用 VPC 对等互连建立连接,如其文档中所述。通过将“--insecure”选项传递给 redis-cli 来验证它。
root@e142187efd96:/data# redis-cli -c --tls -h HOST -a asdfghjklzxcvbnm --insecure
警告:在命令行界面上使用带“-a”或“-u”选项的密码可能不安全。主机:6379>
openssl我使用以下命令获得了我的 elasticache 服务器的证书-
openssl s_client -showcerts -connect HOST:6379
Run Code Online (Sandbox Code Playgroud)
将获得的证书传递给 redis-client 作为 -
redis-cli -c --tls -h HOST -a asdfghjklzxcvbnm --cacert cert.crt
Run Code Online (Sandbox Code Playgroud)
它抛出以下错误 -
Could not negotiate a TLS connection: Invalid CA Certificate File/Directory
Could not negotiate a TLS connection: Invalid CA Certificate File/Directory
not connected>
Run Code Online (Sandbox Code Playgroud)
根据我的理解,我还需要通过证书和密钥。但我不知道在哪里可以找到它以及如何通过它。
我在任何地方都找不到答案,悬停时的描述字段对我来说是相同的:
“多可用区自动故障转移的状态。如果启用,在主节点丢失的情况下,将自动故障转移到只读副本”
“自动故障转移的状态。如果启用,在主节点丢失的情况下,将自动故障转移到只读副本”
那么开启或关闭多可用区有什么关系吗?我的猜测是,启用多可用区后,它将允许故障转移以从其他可用区读取复制。
谢谢
我在 AWS 中有一个 VPC。此 VPC 中有一个 EKS 和一个 ElastiCache/Redis。ElastiCahce 的安全组有一个入口规则,允许从 EKS 的安全组到端口 6379 的流量。EKS 的安全组有一个入口规则,允许传出流量到具有任何协议的任何 IP。
我尝试使用以下命令从 EKS 集群内的 pod 连接到 ElastiCache 节点redis-cli:
redis-cli -h my-cache-instance.xxxx.yyyy.zzzz.cache.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
连接有效,但是如果我尝试运行任何 Redis 命令,它将失败:
my-cache-instance.xxxx.yyyy.zzzz.cache.amazonaws.com:6379> KEYS *
Error: Server closed the connection
(1.00s)
Run Code Online (Sandbox Code Playgroud)
问题:如何配置 ElastiCache 以允许从 EKS 连接?
注意:我可以使用redis-cliVPN 从本地计算机进入 VPC。ElastiCahce 的安全组具有与 EKS 的入口规则相同的入口规则,以允许来自 VPN 安全组的访问。
amazon-web-services redis amazon-elasticache kubernetes amazon-eks
我正在使用CloudFormation在VPC内创建AWS堆栈,并且需要在其上创建ElastiCache集群.我已经调查过,CloudFormation不支持在VPC中创建缓存集群.我们的"解决方法"是使用CloudInit和AWS AmazonElastiCacheCli工具(elasticache-create-cache-subnet-group,elasticache-create-cache-cluster)在一些"固定"实例(例如堡垒)引导时创建缓存集群.然后,当前端机器引导程序(我们使用自动扩展)时,它们使用elasticache-describe-cache-clusters来获取缓存集群节点并更新配置.
我想知道你是否有不同的解决方案来解决这个问题.
amazon-web-services amazon-elasticache aws-cloudformation amazon-vpc
我在亚马逊上运行了ElastiCache redis,并且在测试了一个月后忘了将其关闭.今天,他们向我收取了230美元.
由于这是我第一次使用亚马逊,甚至没有使用大量内存,我只是想知道它是否那么昂贵.如果是,想象一下运行完整的16GB redis.
我们已经使用AWS Elasticache大约6个月了,没有任何问题.每天晚上我们都有一个Java应用程序运行,它将刷新我们的redis缓存的DB 0,然后用更新的数据重新填充它.但是我们在7月31日到8月5日之间有3个实例,我们的数据库成功刷新,然后我们无法将新数据写入数据库.
我们在应用程序中遇到以下异常:
redis.clients.jedis.exceptions.JedisDataException:redis.clients.jedis.exceptions.JedisDataException:READONLY您无法针对只读从属进行写入.
当我们查看Elasticache中的缓存事件时,我们可以看到
完成从主节点prod-redis-001到副本节点prod-redis-002的故障转移
我们无法诊断问题,因为应用程序在过去6个月内运行良好,我想知道它是否与最近在6月30日发布的Elasticache版本有关. https://aws.amazon.com/releasenotes/Amazon-ElastiCache
我们一直在写我们的主节点,我们只有1个副本节点.
如果有人可以提供任何见解,那将非常感激.
编辑:这似乎是一个间歇性的问题.有些日子它会在其他日子里运行正常.
redis ×7
amazon-vpc ×2
amazon-eks ×1
kubernetes ×1
openssl ×1
php ×1
redis-cli ×1
ssl ×1
tls1.2 ×1