2

我有 2 个沙发底座节点。

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

因此,我尝试将它们都添加到一个集群中,并将存储桶上的副本设置为“禁用”,但它仍然平衡了这两个服务器之间的文档。

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

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

当我关闭 server1 时,请求转到 server2,所以备份工作了!

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

我怎样才能做到这一点?

4

3 回答 3

1

当您创建一个 Couchbase 集群时,它被视为一个“单一”数据库。数据总是分布在同一个集群中。

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

我邀请您查看以下资源以了解更多信息:

于 2013-09-10T21:47:36.733 回答
0

我认为负载均衡器会有所帮助。您可以在两个 couchbase 服务器前面放置一个负载平衡器,并将每个客户端引导到负载平衡器。如果负载均衡器有能力,它可以根据某些东西(IP 地址?)确定首选服务器。如果首选服务器不可用,它可以转到另一台。

于 2013-09-09T21:08:10.963 回答
0

如果您在配置中添加 2 个服务器,我不确定 couchbase 选择最近的服务器,它可以只使用循环。但是我注意到,配置中的服务器顺序会影响它们的负载,所以也许只有第一个服务器会有更高的优先级,但并不是所有的请求都会去它。而且我还没有看到.Net客户端的任何配置选项来设置像“main”这样的服务器和像“backup”这样的其他服务器。所以也许你可以试试:

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

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

  4. 修改 .Net 客户端库以满足您的需求。

于 2013-09-10T05:24:34.927 回答