配置中的redis集群url表示法

alen0pnh  于 2021-06-08  发布在  Redis
关注(0)|答案(1)|浏览(844)

在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

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

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>
vawmfj5a

vawmfj5a1#

tooz redis驱动程序只支持redis sentinel。
实际的驱动程序源代码说明:

- 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 to 他们用 CLUSTER SLOTS 命令以发现群集拓扑。这在tooz驱动程序中没有实现。
如果必须使用tooz并且需要高可用性,可以考虑切换到redis sentinel。
这里有更多关于redis sentinel和集群的信息

相关问题