Couchbase,4个具有副本的节点(不是分片),从127.0.0.1中选择

时间:2014-11-25 16:47:29

标签: python python-2.7 couchbase

我们有4个节点的集群,需要:

  1. 任何节点失败 - 没有“待处理”的群集状态
  2. 所有节点中的所有数据 - 无分片,仅复制到所有节点
  3. 始终从本地节点
  4. 读取

    怎么做?

    UP:为什么我们需要读取本地: 6节点集群,其中1个节点向下,从python中选择数据:

    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/local/lib/python2.7/dist-packages/couchbase/connection.py", line 500, in get
        return _Base.get(self, key, ttl, quiet, replica, no_format)
    couchbase.exceptions._NetworkError_0x10 (generated, catch NetworkError): <Key=u'configuration!ivr.conf!ivr_000*308@siptest.ringme.ru', RC=0x10[Network failure], Operational Error, Results=1, C Source=(src/multiresult.c,282)>
    
    Replicas: 2 copies
    
    couchbase on this error MUST read another nodes on error!
    

2 个答案:

答案 0 :(得分:3)

Couchbase确实提供了高效的分片和复制机制。所以你的#2&#34;没有分片&#34;将与Couchbase陌生(但可通过XCDR实现)

因此,如果你有4个带有CB服务器实例的物理节点,我建议采用以下设置(实现1毫秒以下的访问时间和HA 24/7设置):

  1. 将所有4个实例加入一个群集,以便您拥有真正的HA设置(如果节点已关闭,操作没有中断且对客户端透明)
  2. 当您定义每个存储桶(类型为Couchbase)时,会在其他节点上提供3个副本(因此每个节点将包含所有数据)请参阅Couchbase Data Storage
  3. 我假设您的客户端应用程序远离第5台服务器上的Couchbase群集。因此,您必须提供运行CB的所有4个服务器IP和端口号的列表(仅在客户端启动时才需要获取群集配置并订阅群集更改)。
  4. 如果您实施上述步骤,您将实现24/7不间断运行的容错设置,其中数据保存在所有4个节点上(类似RAID

答案 1 :(得分:0)

user1697575的答案涵盖了您的大多数问题,但在第(3)点 - &#34;始终从本地节点读取&#34; - 你为什么要这样做?

您可以在具有&gt; 1节点的群集中真正执行此操作,因为数据会在所有节点上自动分发(分片),并且无法禁用共享。