【问题标题】:redis cluster url notation in configuration配置中的 redis 集群 url 表示法
【发布时间】:2020-12-21 22:19:52
【问题描述】:

在 linux 配置文件中访问 redis 集群 URL 的常用符号是什么?常规的此类 URL 类似于

 url = redis://<password>@<ip>:<port>

举个例子

url = redis://secret@1.2.3.4:6379

在集群上尝试会出现神秘错误

redis.exceptions.ResponseError: MOVED 6553 <newip>:<port>
tooz.ToozError

但是我在互联网上的任何地方都找不到,如果您有多个节点该怎么办。该文档提到了一种叫做“哨兵”的东西,并建议做类似的事情;

url = redis://<ip>:<sentinel port>?sentinel=<master name>&sentinel_fallback=<ip2>:<sentinel port>&<sentinel_fallback>=<ip3>:<sentinel port> 

这显然是荒谬的。密码在哪里? (提示:这只会按原样产生“权限被拒绝”)到底什么是“主名称”?这没有任何意义。有 N 个实例(N = XY,其中 X 是我们的副本数,X >= 2,Y 是分​​片数,Y >= 3),结果 N >= 6。至少有 3 个节点,所以至少3个哨兵。每个实例都有自己的“名称”,因此有 6 个主名称。疯狂地猜测它可以被@替换并使用它让我得到更多神秘的错误。

tooz.coordination.ToozConnectionError: No master found for <name>








 

【问题讨论】:

    标签: redis configuration cluster-computing openstack


    【解决方案1】:

    Tooz Redis Driver 仅支持 Redis Sentinel。

    实际的driver source 代码状态:

    - Consistent, note that this is still restricted to only
      one redis server, without the recently released redis (alpha)
      clustering > 1 server will not be consistent when partitions
      or failures occur (even redis clustering docs state it is
      not a fully AP or CP solution, which means even with it there
      will still be *potential* inconsistencies).
    - Master/slave failover (when setup with redis `sentinel`_), giving
      some notion of HA (values *can* be lost when a failover transition
      occurs).
    

    您正在尝试使用Redis Cluster,在这种情况下,您只能将主主机作为连接主机。

    您收到MOVED 6553 的错误消息是说您尝试访问的密钥在另一个主(在另一个分片中)中。

    Redis 集群客户端通常只需要指向一个 host:port,它们使用CLUSTER SLOTS 命令来发现集群拓扑。这在 Tooz Driver 中没有实现。

    如果您必须使用 Tooz 并且需要高可用性,请考虑切换到 Redis Sentinel。

    这里有更多关于Redis sentinel vs clustering

    【讨论】:

      猜你喜欢
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-29
      • 1970-01-01
      • 2018-11-22
      • 1970-01-01
      • 2020-05-06
      相关资源
      最近更新 更多