首页 文章

适用于多个群集的CouchbaseClient配置

提问于
浏览
2

假设我有两个带有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称为引导URI .

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

2 回答

  • 2

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

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

  • 2

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

    请注意,客户端需要此连接节点列表 at the time of start up ,一旦与群集通信,它将保持自己的活动/非活动群集节点跟踪 .

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

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

    关于多个集群,我不确定它是否可以使用相同的客户端实例,除非Couchbase客户端实例足够智能以区分多个集群并跟踪其节点的运行状况 . 继续阅读Couchbase installation guide

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

    Moxi还支持从单个moxi实例代理多个集群,其中最初设计并实现了软件即服务目的 . 使用分号(';')指定和分隔多个集群:

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

相关问题