如何使用备份创建2个节点,但没有文档平衡

时间:2013-09-09 07:14:27

标签: couchbase

我有2个couchbase节点。

应该备份另一个,但我希望服务器平衡它们之间的文档。

所以我尝试将它们添加到一个群集中,并将副本设置为“禁用”,但仍然可以平衡这两个服务器之间的文档。

然后我尝试将服务器用作不同的群集,并在它们之间进行复制。 我还在客户端配置中添加了这两个服务器:

<servers bucket="default" bucketPassword="private">
    <add uri="http://server1ip/pools/default">
    <add uri="http://server2ip/pools/default">
</servers>

当我关闭server1时,请求转到server2,因此备份工作正常!

但是我不确定我是否从server1上的客户端发送请求,它总是会选择最近的服务器(始终将请求发送到server1ip)。

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

创建Couchbase群集时,会将其视为“单个”数据库。数据始终分布在同一个集群中。

因此,如果要将数据自动“备份”到其他节点,则必须使用的是XDCR(跨数据中心复制),它将数据从一个群集复制到另一个群集。 (正如您所看到的,我没有使用“node”这个词,因为Couchbase数据库应该部署在多个节点上。)

我邀请您查看以下资源以了解详情:

答案 1 :(得分:0)

我认为负载均衡器会有所帮助。您可以将负载均衡器放在两个couchbase服务器的前面,并将每个客户端定向到负载均衡器。如果负载均衡器具有该功能,它可以根据某些内容确定首选服务器(IP地址?)。如果首选服务器不可用,则可以转到另一台服务器。

答案 2 :(得分:0)

如果在配置中添加2个服务器,我不确定couchbase选择最近的服务器,它可能只使用roundrobin。但是我注意到,配置中的服务器顺序会影响它们的负载,所以可能只有第一台服务器具有更高的优先级,但并非所有请求都会进入它。我还没有看到.Net客户端的任何配置选项设置其中一个服务器,如“主”和其他像“备份”。所以也许你可以试试:

  1. 如果有一些解决方案可以在配置中设置主服务器和备份服务器,请在couchbase forums上询问couchbase .net库开发人员。
  2. 使用HA Proxy作为中间件,选择正确运行的服务器。 (正如Don Dickinson建议的那样)
  3. 在您的应用中创建两个couchbase连接(一个用于主服务器,一个用于备份:您需要两个配置部分)。如果主服务器上的某些操作失败,请重复请求备份。所以你的代码看起来像:

    var getResult = _ClientMain.ExecuteGet(key); if(!getResult.Sucess){   getResult = _ClientBackup.ExecuteGet(key); }

  4. 修改.Net clien库以满足您的需求。