问题标签 [twemproxy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 求phpredis redisArray一致哈希算法信息
我们正在使用 phpredis redisArray 在 2 个服务器上分发密钥。但是我们现在有一个新的需求,即使用除 php 之外的其他语言使用相同的数据集。
那么任何人都可以建议使用哪种哈希函数(crc32.crc32a,jenkins...等)与哪种密钥分配模式(ketama,modula等)相结合,以获得正确的结果来构建库以匹配redisArray分布。
请注意,我们无法重新散列,因为数据集非常庞大,例如 200M+ 。
我们也在考虑使用 twemproxy ( https://github.com/twitter/twemproxy ) 但散列和密钥分布与 phpredis redisArray 分布不匹配。
有人可以指导我们吗?
redis - twemproxy(胡桃夹子)添加redis实例并保持一致性
我设置了 twemproxy(胡桃夹子),使用 2 个 redis 服务器作为后端,包括从属服务器、哨兵服务器和故障转移服务器。
一旦我添加了另一个 redis 服务器,一些密钥就无法读取,可能是由于 twemproxy 重定向到另一个 redis。
如何在不破坏一致性的情况下添加另一个 redis 实例?
我想将该设置用作一致且非常快速的数据库。
这是我的设置:
我想继续分片服务器的工作并能够添加实例。我需要使用其他设置吗?
redis - 无法在 C# 中使用 StackExchange redis 连接 Twemproxy
我正在尝试使用 TWEMPROXY 服务器的 IP 地址使用 StackExchange redis 执行下面的 C# 代码,它在下面给出错误:
StackExchange.Redis.dll 中出现“StackExchange.Redis.RedisConnectionException”类型的未处理异常
附加信息:无法连接到 redis 服务器;要创建断开连接的多路复用器,请禁用 AbortOnConnectFail。PING 上的 SocketFailure
但是,当我使用本地主机时,它可以正常工作并将数据存储在本地 Redis 缓存中
带有“localhost”的代码示例如下:
对于上面的相同代码,当我将 localhost 替换为 TWEMPROXY IP 地址时,它会出错。
redis - ServiceStack.Redis.RedisResponseException 使用 Redis 集群和 Twemproxy
我有一个 3 主 / 3 从 Redis 集群在单个 Ubuntu 14_04 机器上运行。创建集群时,我遵循了此处发布的指南。我也有胡桃夹子在同一台机器上运行。一切都启动并且似乎在集群中正常运行。我使用 ServiceStack.Redis v3 API 编写了一个小型 c# 应用程序,每当我尝试写入 Redis 集群时,它都会引发异常。这是回应:
ServiceStack.Redis.dll 中出现“ServiceStack.Redis.RedisResponseException”类型的未处理异常
附加信息:MOVED 5836 192.168.120.147:7001,sPort:54812,LastCommand:SET foo_1 "bar_1"
这是我正在使用的代码:
ServiceStack.Redis.RedisClient redisClient = new ServiceStack.Redis.RedisClient("192.168.120.147");
redisClient.Set("foo_1", "bar_1");
任何帮助将不胜感激。
谢谢!
redis - 不均匀的缓存命中
我已将 twemproxy 集成到 Web 层中,并且我有 6 个 Elasticache(1 个主副本,5 个只读副本)我遇到的问题是所有副本都具有相同的键,一切都相同,但是一个副本上的缓存命中率比其他副本多得多,我执行了几次加载仍然在每次测试中测试我得到相同的结果。我有一个单独的数据引擎,可以在这个集群的主节点上写入数据,剩下的 5 个副本与之同步。所以我使用 twemproxy 仅用于从 Elasticache 读取数据,而不是用于分片目的。所以我的简单问题是为什么我在 Elasticache 的单个只读副本上获得了 90% 的命中,它应该在所有只读副本之间平均分配命中?正确的?
先感谢您
redis - twemproxy(胡桃夹子)端口突然变得不可用
我有这个 twemproxy_sentinel 设置,它使用默认端口 22122 作为入口,并将请求转发到在端口 6380、6381 上运行的底层 redis 服务器。
时不时地,端口 22122 变得不可用。因此使用 redis 的客户端将无法连接。telnet 到它会立即关闭。我需要做的就是重新启动 /etc/init.d/nutcracker,一切都会恢复正常。一直以来,sentinel 和 redis 服务都在工作。只有 twemproxy 似乎被切断了。在重新启动之前,胡桃夹子服务仍在运行(ps 会显示它正在运行)。日志没有显示任何失败的迹象。
我不确定为什么会发生这种情况,并试图挖掘 redis 服务器、redis sentinel 和 twemproxy 日志的日志。我还尝试查看 /var/log/messages 并尝试确保 file-max 不会阻塞正在打开的端口数。
想知道我可以从哪里开始研究为什么事情会下降。
php - 用 Twemproxy 安装了 Redis 集群,我真的很困惑为什么某些 SET 命令被 MOVED
我已经设置了一个 Redis-Cluster 3.0.5 版本的 Redis-Server (Ubuntu 14.04)
为简单起见,我们将忽略复制。我在 localhost 上运行了三个 redis 实例,端口为 7001、7002 和 7003。使用此命令,它们都成为集群的主人
我喜欢使用twemproxy的想法
twemproxy-config.yml
我初始化twemproxy,nutcracker -c twemproxy-config.yml -d
然后我可以访问twemproxyredis-cli -h 127.0.0.1 -p 22121
请看一下这个输入和输出
我担心这可能无法正常工作。如果我绕过 twemproxy 并使用 连接redis-cli -c -h 127.0.0.1 -p 7001
,我可以看到自动转发发生。像这样;
参考
在 code.hoosuite.com 上有趣的阅读关于 twemproxy 的使用(大约在页面的一半)
终极目标
我的最终目标是使用 redis 集群在负载均衡器后面的多个 Web 服务器上存储 PHP 会话数据。在php.ini
我将拥有session.save_handler = redis
和session.save_path = tcp://127.0.0.1:22121
(twemproxy 实例将在每个 Web 服务器上运行)。PHP 会话配置位尚未设置。
我希望我说得通。我是否使用了正确的哈希码?我真的很想看到 twemproxy 回馈OK而不是MOVED。
谢谢!
更新
感谢@the-real-bill 的回答,我在两个节点上设置了 redis,标准 redis 运行端口 6380 和哨兵运行端口 16380,一个是主节点,另一个是从节点。看着日志,一切看起来都很好。
这是我仍然有点不确定的一点,我相信如果有更多的时间我会解决的。查询只能写入主服务器,查询只能从从服务器读取。我们已经让 Sentinel 根据可用性提升其中一个或另一个 - 会话处理程序如何知道它可以写入哪个?当然我需要提供两个IP地址..
php - Twitter - twemproxy - memcached - 重试未按预期工作
简单设置:
- 1 个节点运行 twemproxy (vcache:22122)
- 2 个运行 memcached (vcache-1, vcache-2) 的节点都在监听 11211
我有以下 twemproxy 配置:
twemproxy 节点可以解析所有主机名。作为测试的一部分,我删除了 vcache-2。理论上,每次尝试与 vcache:22122 交互时,twemproxy 都会联系池中的服务器以促进尝试。但是,如果其中一个缓存节点出现故障,则 twemproxy 应该从池中“自动弹出”它,因此后续请求不会失败。
由应用程序层决定使用 vcache:22122 的失败接口尝试是否是由于基础架构问题,如果是,请重试。但是我发现在重试时,正在使用相同的失败服务器,因此后续尝试不会传递给已知良好的缓存节点(在本例中为 vcache-1),它们仍被传递给弹出的缓存节点(vcache -2)。
这是尝试重试的 php 代码片段:
- 更新 -
链接到在 Github 上打开的问题以获取更多信息:问题 #427
redis - 开源 Redis 集群和 Redis labs 企业集群有什么区别?
我们计划将 Redis 用作集中式和高可用性缓存,因此我们研究了 Redis Labs Enterprise Cluster 和使用 Redis 以及 twemproxy 和 sentinel 的本土集群式设置。在研究 RELC 时,我们偶然发现了这个链接:
其中说 - RLEC 可与任何标准 Redis 客户端一起使用,包括独立的 Redis 客户端和 Redis 集群客户端。
究竟什么是开源 Redis 集群,我该如何使用它?这与独立的 Redis 有什么不同?为什么要在开源版本可用时使用 RELC,仅用于支持?我没有找到任何详细说明差异的来源,因此如果有人使用过其中一种解决方案,请解释为什么选择其中一种。