【问题标题】:twemproxy (nutcracker) adding redis instance and keeping consistencytwemproxy(胡桃夹子)添加redis实例并保持一致性
【发布时间】:2015-01-14 20:58:50
【问题描述】:

我设置了 twemproxy(胡桃夹子),使用 2 个 redis 服务器作为后端,包括从属服务器、哨兵服务器和故障转移服务器。

一旦我添加了另一个 redis 服务器,一些密钥就无法读取,可能是由于 twemproxy 重定向到另一个 redis。

如何在不破坏一致性的情况下添加另一个 redis 实例?

我想将该设置用作一致且非常快速的数据库。

这是我的设置:

redis_cluster:
  auto_eject_hosts: false
  distribution: ketama
  hash: fnv1a_32
  listen: 127.0.0.1:6379
  preconnect: true
  redis: true
  servers:
    - 127.0.0.1:7004:1 redis_1
    - 127.0.0.1:7005:1 redis_2

我想继续分片服务器的工作并能够添加实例。我需要使用其他设置吗?

【问题讨论】:

    标签: redis instance add twemproxy


    【解决方案1】:

    Twemproxy 无法做到这一点。您可以使用 Redis 集群,或者如果您想使用 Twemproxy,您必须使用一种称为 presharding 的技术。也就是说,直接从 32 或 64 个实例或类似实例开始,即使它们都在同一主机上运行以启动。然后开始将实例从一个盒子移动到另一个盒子,以便扩展到多个实际服务器。在 Twemproxy 中配置的实例右侧的单词“redis_1”用于散列,因此您可以在移动实例时更改 IP 地址,但该服务器的散列​​仍然相同。

    此时,Redis Cluster 是候选版本 2。虽然它需要更多的测试和部署才能像 Redis 一样进行实战测试,但它已经是一个可行的产品,因此您可能也想对其进行测试。

    【讨论】:

    • 我看了一下redis集群,对“移动”的概念很不满意。返回另一个端口/服务器意味着我需要从客户端发送另一个请求,这不是我正在寻找的解决方案。也许有一个代理识别“移动”并将请求发送到正确的redis?
    • "Moved" 是客户端逻辑的一部分,Redis Cluster 客户端会透明地执行此操作。而且只有在集群发生变化时才会发生,通常每个客户端都直接联系正确的节点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    • 2016-11-05
    • 1970-01-01
    • 2019-03-26
    相关资源
    最近更新 更多