适用于多个群集的CouchbaseClient配置

时间:2014-11-07 09:24:18

标签: couchbase

假设我有两个带有XDCR设置并具有以下节点的couchbase集群:

n1.cluster1.com
n2.cluster1.com
n3.cluster1.com

n1.cluster2.com
n2.cluster2.com
n3.cluster2.com

CouchbaseClient的首选节点配置是什么?

http://docs.couchbase.com/couchbase-sdk-java-1.4/#hello-couchbase

开始
  

CouchbaseClient类接受指向群集中节点的URI列表。如果您的群集有多个节点,Couchbase强烈建议您向列表中添加至少两个或三个URI。该列表不必包含群集中的所有节点,但您需要提供一些节点,以便在初始连接阶段,即使一个或多个节点发生故障,您的客户端也可以连接到群集。   初始连接后,即使群集拓扑发生更改,客户端也会自动提取群集配置并使其保持最新状态。这意味着在向集群添加节点或节点发生故障时,根本不需要更改应用程序配置。另外,请确保使用以下格式的URI:http://[YOUR-NODE]:8091/pools。如果仅提供IP地址,则客户端将无法连接。我们将这个初始URI称为bootstrap URI。

这是否意味着我应该从每个群集中添加至少两个或三个节点?或整个系统中的两个或三个节点?

2 个答案:

答案 0 :(得分:2)

每个CouchbaseClient对象只会连接到一个群集。节点URI列表应该都属于同一个集群 - 如果列出来自不同集群的节点,则可能会出现奇怪的行为。

如果您的应用程序想要连接到两个不同的集群(无论它们之间是否有复制流),那么您需要创建两个CouchbaseClient对象,一个连接到每个集群。

答案 1 :(得分:2)

我建议将群集的所有节点添加到客户端连接配置中。原因是如果一个或多个节点关闭(即计划关闭,服务器崩溃等),客户端仍然可以在重新启动时连接到群集。

请注意,客户端在启动时需要此连接节点列表 ,一旦与群集通信,它将维护自己的活动/非活动群集节点跟踪。

我在生产中有一个由3个节点组成的集群,我的所有客户端都有连接配置中的所有节点,例如

http://my-node1:8091/pools,http://my-node2:8091/pools,http://my-node3:8091/pools

对于多个群集,我不确定它是否可以与同一个客户端实例一起使用,除非Couchbase客户端实例足够聪明以区分多个群集并跟踪其节点的运行状况。请继续阅读Couchbase installation guide

我在文档中发现,如果您使用Couchbase Moxi,它确实支持多个群集:

  

Moxi还支持从单个moxi代理多个集群   实例,这是最初为此设计和实现的   软件即服务目的。使用分号(&#39 ;;')指定和   划分多个集群:

-z “LISTEN_PORT=[CLUSTER_CONFIG][;LISTEN_PORT2=[CLUSTER_CONFIG2][]]”