_membership
CouchDB ( ) 中的端点http://user:pass@domain:5985/_membership
向我返回以下 json:
{
all_nodes: [
"[email protected]",
"[email protected]",
"[email protected]"
],
cluster_nodes: [
"[email protected]",
"[email protected]",
"[email protected]"
]
}
什么时候all_nodes
不一样cluster_nodes
?
从源代码构建 CouchDB 时,我设法错误地设置了一个集群——“all_nodes”中有 3 个节点,但“cluster_nodes”中没有。
一个答案指向服务器故障问题BigCouch all_nodes vs cluster_nodes,其中使用 BigCouch 的问题作者发现_membership
返回了一个列表,cluster_nodes
但什么都没有all_nodes
。(与我要问的问题非常相似,尽管与我所看到的只有all_nodes
价值观的问题相反)。
我不明白答案:
我刚刚在 IRC 上从 Robert Newson 那里听说 BigCouch 节点是惰性连接的。
因为:
- 我想我在 CouchDB 的某个地方读到节点在添加到集群时要在线;和
- 这充其量是
all_nodes
和cluster_nodes
结果可能存在差异的原因之一。
我实际上是在问,为什么在 CouchDB 2.x 中有 2 个字段似乎是相同的东西?all_nodes
我(非常有限)的经验是,在现场显示节点但不在现场显示节点的集群cluster_nodes
不起作用。
这要么不是这个问题的答案,要么远远超出我的水平,我不明白。
您的问题可能已在服务器故障问答中得到(部分)回答:
BigCouch all_nodes 与 cluster_nodes
官方文档指出,当您将节点添加到 CouchDB 集群时,查询的输出将
_membership
返回一个all_nodes
和的列表cluster_nodes
。没有迹象表明此信息可能有所不同,除非您考虑:...这略微暗示可能存在差异。
链接的服务器故障答案指的是 Robert Newson,他是CouchDB 的开发人员:
我想在那种情况下这是一个相当权威的答案。
当您请求
_membership
页面时,CouchDB 可能已经连接了所有节点,也可能没有。这可以解释为什么您注意到all_nodes和cluster_nodes列表中的差异。在all_nodes包含比cluster_nodes更多信息的特定情况下,官方文档中解释了原因:
您遇到的情况是,您正在查询的节点知道其他节点 ( all_nodes ),但它们都不属于您的集群 ( clustered_nodes )。
似乎只有开发人员或 Github 上的社区才能完整回答您的问题。考虑在 Github 上提问,或者在 apache/couchdb Github 页面上提出问题。
从 CouchDB 松弛频道,答案是:
不确定这与另一个问题的答案有什么关系。也许与节点在启动时如何找到彼此有关。