草庐IT

集群NoSQL

全部标签

amazon-web-services - AWS + Celery + ElastiCache(Redis 集群)错误 : CROSSSLOT Keys in request don't hash to the same slot

我有一个在AWS上运行的DockerizedCelery,它使用来自AWS的ElastiCache(具有多节点的Redis集群)作为消息代理,但我收到以下错误。当我在本地机器上测试我的Celeryworker时,它与单个节点Redis通信完全正常。我应该如何解决这个问题?[I18051818:54:20mixins:224]Connectedtoredis://....use1.cache.amazonaws.com:6379//[E18051818:54:20events:123]Failedtocaptureevents:'CROSSSLOTKeysinrequestdon'tha

docker - Swarm 的 Redis docker 镜像集群安装?

我知道有一个官方RedisDocker镜像here.我的问题基本上是:有没有办法将其自动部署到DockerSwarm设置中?我发现最接近我的问题是thisone.虽然我认为这还不可能,但我希望它能够适应运行它的Swarm集群。换句话说,这不是我的集群,因此,对于一些客户来说,它将是单个节点,其他客户将有3个,最大的只有5个。只有一个redis实例应该在单个节点上运行。但是3节点swarm应该有3个,5节点应该有5个,自动配置成一个集群。能否以某种方式设置单个yml文件以为此自动部署Redis集群-即独立于事先了解Swarm的详细信息? 最佳答案

java - 集群模式下的 Redis Pfcount

我有以下错误,Redis强制我对同一节点的键进行计数。是否有一种新的现代方法来处理Redis中的这种缺失功能?org.springframework.dao.InvalidDataAccessApiUsageException:Allkeysmustmaptosameslotforpfcountinclustermode.atorg.springframework.data.redis.connection.jedis.JedisClusterConnection.pfCount(JedisClusterConnection.java:3610)atorg.springframewor

go - Revel session 集群与 Redis

在crystal#kemal中,我有before_all方法,它将成为请求的网关(以及用于身份验证检查)before_alldo|env|#goto/loginifuserdoesn'thavecookie(setcookieonlogin)ifenv.request.path!="/login"ifenv.request.cookies.has_key?("guid")==falseenv.redirect"/login"elseuser_guid=env.request.cookies["guid"].value#ifinredisislogged,butnotintheappif

Redis集群无法添加节点

有两个redis服务器。我在每台服务器上运行了三个redis实例。当我执行clustermeet[ip][port]添加集群节点时,我发现我只能添加在同一台服务器上运行的节点。每次我运行此命令时,它总是为我回显“OK”。但是当我使用clusternodes查看节点列表时,它总是这样显示。172.18.0.155:7010>clustermeet172.18.0.1567020OK172.18.0.155:7010>clusternodesad829d8b297c79f644f48609f17985c5586b4941127.0.0.1:7010@17010myself,master-0

redis - 自动创建 Redis 集群

我正在创建一个shell脚本来自动设置redis集群。但是我卡在了创建集群命令上。当我的脚本执行命令时redis-cli--集群创建它要求输入"is",但我想让它成为非交互式的,它应该在我提供输入后继续。我试过:是的|redis-cli--集群创建但这也行不通。请帮忙。提前致谢。 最佳答案 #!/usr/bin/envpython3fromsubprocessimportPopen,PIPE,STDOUTcmd='redis-cli--clustercreate172.31.104.226:6379172.31.103.167:63

redis - redis-py 能否可靠地使用 AWS ElastiCache Redis 集群?

我正在尝试从作为Celery代理的单个AWSElastiCache(Redis)服务器转移到Redis集群。问题是-在Celery或redis-py文档中的任何地方我都找不到连接到AWSRedisCluster的方法。Celery用于与Redis服务器通信的redis-py可以配置为使用RedisSentinel,但AWS不支持它(至少我在AWSElastiCache文档中没有找到sentinel支持)。那么有没有一种方法可以使用redis-py以某种方式与ElastiCacheRedis集群进行通信,或者有没有一种方法可以指示Celery使用redis-py-cluster(一个单独

node.js - 从 ECS 集群中的 docker nodejs EC2 容器连接到 Redis Elasticache 集群

我正在构建一个身份验证服务器,用于存储用户访问token并跟踪它们我想使用redis。我已经成功创建并部署了一个小的nodejs应用程序,并将其包装到一个只返回token的docker容器中。然后我将它推送到AWS中的ECR存储库并创建了一个运行的任务和完美运行的EC2实例。到目前为止一切顺利。当我尝试连接到我创建的集群时,问题就来了。我正在使用thisnodejsredismodule,效果很好。我已经更改了VPC,因此所有集群和实例都处于相同的网络配置下。也许这就是我搞砸的地方,因为我不是部署方面的专家,更不是网络安全组方面的专家。此外,我已经成功地从同一VPC下的另一个EC2实例

redis - 如何将数据分布到redis集群的多个节点?

我有大量不同类型的键值对存储在Redis缓存中。目前我使用单个Redis节点。当我的应用程序服务器启动时,它会批量读取大量此类数据(使用mget)以将其缓存在内存中。为了进一步扩展Redis,我想建立一个集群。我知道在集群模式下,如果key存储在不同的插槽中,我将无法使用mget或mset。如何将数据分发到不同的节点/插槽,并且仍然能够批量读取/写入? 最佳答案 它在redis客户端库中处理。您需要以您选择的语言查找具有此功能的库是否存在。例如,如果您使用的是golang-根据文档,redis-go-cluster提供了此功能。ht

redis - 如何重新连接Redis集群节点?

我有一个包含6个节点的Redis集群,作为有状态集在我的Kubernetes集群中运行。由于它是用于测试而不是生产,所有的Redis节点都在同一台机器上。当然,机器出了故障,Redis的所有节点都立即崩溃了。当机器恢复正常时,pods被重新创建并被赋予不同的集群ip,因此它们无法相互重新连接。我需要为这样的灾难案例找到解决方案。假设所有节点都重新分配了不同的ip,我如何配置节点以获取其他ip?slaves很容易用CLUSTERRESET命令重置,但是masters包含不应该被删除的槽和数据。我应该手动重写nodes.conf吗?恐怕这会让事情变得更糟?我有已知的方法来处理它吗?谢谢!