cassandra集群-种子提供程序如何工作?

luaexgnf  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(413)

我对Cassandra的任务有疑问。在我的环境中,有3个cassandra节点需要设置为集群。我应该如何在cassandra.yaml中定义它?我很困惑,因为大多数教程给出了不同的答案。
示例:主机a-192.168.1.1主机b-192.168.1.2主机c-192.168.1.3
以下是我当前对主机a的设置,是否正确?
主机b和主机c的配置如何?


# any class that implements the SeedProvider interface and has a

# constructor that takes a Map<String, String> of parameters will do.

seed_provider:
    # Addresses of hosts that are deemed contact points. 
    # Cassandra nodes use this list of hosts to find each other and learn
    # the topology of the ring.  You must change this if you are running
    # multiple nodes!
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider
      parameters:
          # seeds is actually a comma-delimited list of addresses.
          # Ex: "<ip1>,<ip2>,<ip3>"
          - seeds: "192.168.1.1,192.168.1.2,192.168.1.3"
vwkv1x7d

vwkv1x7d1#

首先,您不需要更改 class_nameseed_provider . 好吧,只有一艘是Cassandra的。它被定义为“可插入的”,以允许编写定制的种子提供者。
为了 seeds ,我不建议指定种子列表中的每个节点。如果只有3个节点,那么只需提供1或2个。种子节点不引导数据,需要 repair 更换时保持一致。这会使节点添加困难。
但据我所知,你现在的配置可以用。我只需要建立最多2个节点的种子列表。
请记住,对于 seed_list :
如果要启动群集中的第一个节点,则其ip必须位于 seed_list .
必须至少有一个节点正在运行。
你介意进一步解释一下,如果我继续在种子列表中添加所有3个节点,会产生什么影响吗?您只选择在种子列表中添加1或2个节点的原因是什么?
当然,这一切都可以追溯到:
种子节点不引导数据
因此,指定 seed_list 在所有3个节点上,允许出现以下问题:
如果在节点b或c加入集群之前启动节点a并向其写入数据,则该数据不会流到节点b或c。
如果将来节点a发生故障并被替换,数据将不会流到替换节点。
在这些情况下 nodetool repair 将需要运行以获取新添加节点上的初始数据。

相关问题