标签: amazon-elasticache

Amazon Elasticache Redis 集群 - 无法获取端点

我需要获取 Amazon Elasticache 中 Redis 集群的终端节点。以下代码适用于 Memcached 集群,但不适用于 Redis:

import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;

import com.amazonaws.services.elasticache.AmazonElastiCacheClient;
import com.amazonaws.services.elasticache.model.DescribeCacheClustersRequest;
import com.amazonaws.services.elasticache.model.DescribeCacheClustersResult;
import com.amazonaws.services.elasticache.model.CacheNode;
import com.amazonaws.services.elasticache.model.CacheCluster;
import com.amazonaws.services.elasticache.model.Endpoint;

public class Redis {
    public static void main(String[] args) {
        AWSCredentials credentials = 
            new ProfileCredentialsProvider("default").getCredentials();
        AmazonElastiCacheClient amazonClient = new AmazonElastiCacheClient(credentials);
        amazonClient.setRegion(Regions.EU_WEST_1);
        DescribeCacheClustersRequest dccRequest = new DescribeCacheClustersRequest();
        dccRequest.setShowCacheNodeInfo(true);
        dccRequest.withCacheClusterId("app-001");
        DescribeCacheClustersResult clusterResult = 
            amazonClient.describeCacheClusters(dccRequest);

        CacheCluster cacheCluster = clusterResult.getCacheClusters().get(0);
        System.out.println("cluster: " + cacheCluster);
        System.out.println("endpoint: " + cacheCluster.getConfigurationEndpoint());
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

cluster: {CacheClusterId: app-001,ClientDownloadLandingPage: https://console.aws.amazon.com/elasticache/home#client-download:,CacheNodeType: cache.r3.large,Engine: redis,EngineVersion: …
Run Code Online (Sandbox Code Playgroud)

java amazon-web-services redis amazon-elasticache

5
推荐指数
1
解决办法
2875
查看次数

从对等 VPC 连接到 Elasticache Redis 集群

我的公司设置目前主要有 2 个对等 VPC。我们想要配置 Elasticache(用于 Redis),以便 2 个 EC2 IIS Web 服务器(两个 VPC 中各一个)可以连接到同一个 Elasticache 集群,这可能吗?

目前,我可以从配置 Elasticache 集群的同一 VPC 中的 EC2 实例成功连接到集群,但对等 VPC 中的其他 EC2 实例无法连接。

我尝试通过安全组允许所有访问,关闭防火墙等......但没有任何效果。

如果您能提供任何帮助,我们将不胜感激。

amazon-ec2 amazon-web-services amazon-elasticache amazon-vpc

5
推荐指数
1
解决办法
2667
查看次数

AWS ElastiCache:是否可以与Redis兼容的Elasticache来存储Json文件

是否可以将 json 文件存储在与 Amazon Web Services Redis 兼容的 Elasticache 中?如果可能,完成相同任务的最佳方法是什么?

json amazon-web-services redis amazon-elasticache

5
推荐指数
1
解决办法
4270
查看次数

从 Java 连接到 AWS Elasticache(Redis 集群)的正确方法是什么?

我是AWS Elasticache redis的新手,并且低于端点。

图像

我对使用JedisRedisson感到困惑,因为两者都提供单连接和集群连接类。

就像在Jedis中一样,对于单个连接我们可以使用:

Jedis conn = new Jedis("endpoint_address");
Run Code Online (Sandbox Code Playgroud)

对于集群连接,我们使用:

Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
jedisClusterNodes.add(new HostAndPort("redis_cluster_ip", 7379));
JedisCluster jc = new JedisCluster(jedisClusterNodes);
Run Code Online (Sandbox Code Playgroud)

当我想使用Redisson时,也会出现这些选项。我不想比较这两个库,我的问题是:当您只有一个端点并且仍然可以使用 AWS 自动扩展功能时,哪一种是连接到AWS Redis Elasticache集群的正确方法?

预期的答案是:使用单机或集群模式。

谢谢 :)

java amazon-web-services jedis amazon-elasticache redisson

5
推荐指数
1
解决办法
2万
查看次数

使用 RDB 文件启动 Redis 集群

我正在尝试使用从单实例 Redis 服务器获取的 RDB 文件创建 Redis 集群。这是我尝试过的:

#! /usr/bin/env bash
for i in 6000 6001 6002 6003
do
  redis-server --port $i --cluster-config-file "node-$i.cconf" --cluster-enabled yes --dir "$(pwd)" --dbfilename dump.rdb &
done
Run Code Online (Sandbox Code Playgroud)

该脚本启动 4 个启用集群的 Redis 进程。它还使用转储文件初始化每个节点。

然后我运行redis-trib.rb以便 4 个节点可以找到彼此:

redis-trib.rb create 127.0.0.1:6000 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

>>> Creating cluster
[ERR] Node 127.0.0.1:6060 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
Run Code Online (Sandbox Code Playgroud)

我还尝试了一种变体,其中仅使用 RDB 文件初始化第一个节点/进程,而其他节点/进程为空。我可以将 3 个空节点加入到一个集群中,但不能将预先填充数据的节点加入到集群中。 …

redis amazon-elasticache redis-cluster

5
推荐指数
0
解决办法
1954
查看次数

在 AWS ElastiCache Redis 集群上启用集群模式

我有一个 ElastiCache Redis(已禁用集群模式)集群,​​并且想要更改为 ElastiCache Redis(已启用集群模式)集群。我还没有找到一种方法来做到这一点,但也没有找到一个声明说这是不可能的。由于围绕“集群”和“集群模式”的令人困惑的语言,情况变得更加复杂。

亚马逊的这份文件指出:

目前,Redis(已启用集群模式)不支持使用可用的单节点集群创建带有副本的集群。

这在某种程度上意味着它可以从具有多个节点的集群来完成。

同样,这篇关于修改集群的文档说:

您可以使用 ElastiCache 控制台、AWS CLI 或 ElastiCache API 修改 Redis(已禁用集群模式)集群的设置。目前,ElastiCache 不支持修改 Redis(启用集群模式)复制组,除非创建当前复制组的备份,然后使用该备份为新的 Redis(启用集群模式)复制组做种。

同样,这意味着您可以更改 Redis(已禁用集群模式)集群,​​但实际上并没有以某种方式进行更改。不过,我从这个声明中得到的想法是,我需要备份当前的 Redis(已禁用集群模式)集群,​​然后使用它来播种新的 Redis(已启用集群模式)集群。

amazon-web-services redis amazon-elasticache

5
推荐指数
1
解决办法
4383
查看次数

错误:使用 stunnal 方法连接到弹性缓存时对等连接重置

我正在使用弹性缓存单节点分片 redis 4.0 更高版本。

我启用了传输中加密并提供了 redis 身份验证令牌。

我使用此链接创建了一个带有 stunnal 的堡垒主机

https://aws.amazon.com/premiumsupport/knowledge-center/elasticache-connect-redis-node/

我可以使用以下方式连接到弹性缓存 redis 节点

redis-cli -h 主机名 -p 6379 -a mypassword

我也可以做telnet。 但是 当我在连接后在 redis-cli 上 ping(预期响应“PONG”)时,它给出了

“错误:对等方重置连接”

我检查了双方的安全组。任何的想法 ?堡垒主机 ubuntu 16.04 机器

redis amazon-elasticache

5
推荐指数
1
解决办法
1万
查看次数

有没有办法在 AWS (ElastiCache) 上的 Redis 中启用延迟监视器阈值?

我想为 AWS 中的托管 Redis 实例启用 redis 延迟监视器。这些是 Redis 延迟监视器的官方详细信息:https : //redis.io/topics/latency-monitor

不幸的是,我latency-monitor-threshold在 AWS 中创建参数组时看不到选择。

performance latency monitor redis amazon-elasticache

5
推荐指数
0
解决办法
381
查看次数

AWS CDK:部署 Redis ElastiCache 时出错:子网组与 CacheCluster 属于不同的 VPC

概括

我正在尝试使用 CDK 在 AWS 上部署 Redis ElastiCache 集群。

出于安全原因,我希望集群位于 VPC 内。

我的代码(见上文)定义了一个 VPC、一个安全组、一个缓存子网组(链接到 vpc 私有子网)和缓存集群(链接到缓存子网组和安全组)。

使用cdk deploy,部署顺利,直到我收到此错误:

ACL_redis (ACLredis) Subnet group [default] belongs to a different VPC [vpc-326ce55b] than [vpc-0c45b593f3a5fdc4d] (Service: AmazonElastiCache; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: 901398f4-c355-418d-921b-65e6c52dfe3a)
Run Code Online (Sandbox Code Playgroud)

我试过的

禁用回滚时,似乎缓存集群是在该区域的默认 VPC 中创建的,而不是在我的堆栈中定义的 VPC。我不明白 Cloud Formation 为什么要这样做,因为安全组和缓存子网组都链接到堆栈的 VPC。

根本没有对区域默认 VPC 的引用。

一些代码

这是CDK代码

from aws_cdk import (
    core,
    aws_stepfunctions,
    aws_lambda,
    aws_stepfunctions_tasks,
    aws_sqs,
    aws_elasticache,
    aws_ec2,
)

PROJECT_CODE = 'ACL'


class AclAwsCdkLearningStack(core.Stack):

    def __init__(self, scope: core.Construct, id: …
Run Code Online (Sandbox Code Playgroud)

python amazon-web-services amazon-elasticache amazon-vpc aws-cdk

5
推荐指数
1
解决办法
1886
查看次数

从 EKS 集群访问 ElastiCache

我已经设置了一个 EKS 集群,并且正在尝试将应用程序 pod 连接到 ElastiCache 端点。我将它们放在同一个 VPC 中并为它们配置了输入/输出安全组。不幸的是,在尝试从 pod telnet 到缓存端点时,它显示“xxx.yyy.zzz.amazonaws.com:未知主机”。甚至有可能建立这样的联系吗?

amazon-web-services amazon-elasticache amazon-eks

5
推荐指数
1
解决办法
1161
查看次数