Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database Cassandra群集种子提供程序如何工作?_Database_Cassandra_Rhel_Cassandra 2.0 - Fatal编程技术网

Database Cassandra群集种子提供程序如何工作?

Database Cassandra群集种子提供程序如何工作?,database,cassandra,rhel,cassandra-2.0,Database,Cassandra,Rhel,Cassandra 2.0,我对cassandra seed_提供者的任务有疑问。在我的环境中,设置为集群需要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 #

我对cassandra seed_提供者的任务有疑问。在我的环境中,设置为集群需要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"

对于初学者,不需要更改seed\u提供程序的类名。好吧,只有一艘是卡桑德拉的。它被定义为可插拔的,以允许编写自定义种子提供程序

对于种子,我不建议指定种子列表中的每个节点。如果只有3个节点,那么只需提供1或2个。种子节点不引导数据,需要修复以在替换时保持一致。这会使节点添加变得困难

但在我看来,您当前的配置将正常工作。我只需要构建最多2个节点的种子列表

请记住,种子列表有两个主要要求:

如果要启动群集中的第一个节点,则其IP必须在种子列表中。 必须至少有一个节点正在运行。
您是否介意进一步解释一下,如果我继续在种子列表中添加所有3个节点,会产生什么影响?您只选择在种子列表中添加1或2个节点的原因是什么

当然,这一切都可以追溯到:

种子节点不引导数据

因此,在所有3个节点上指定seed_列表中的所有3个节点会导致以下问题:

如果在节点B或C加入集群之前启动节点A并向其写入数据,则该数据将不会流到节点B或C。 如果将来节点A出现故障并被替换,数据将不会流到替换节点。
在这些情况下,需要运行nodetool修复以将初始数据添加到新添加的节点。

对于初学者,您不需要更改seed\u提供程序的类名。好吧,只有一艘是卡桑德拉的。它被定义为可插拔的,以允许编写自定义种子提供程序

对于种子,我不建议指定种子列表中的每个节点。如果只有3个节点,那么只需提供1或2个。种子节点不引导数据,需要修复以在替换时保持一致。这会使节点添加变得困难

但在我看来,您当前的配置将正常工作。我只需要构建最多2个节点的种子列表

请记住,种子列表有两个主要要求:

如果要启动群集中的第一个节点,则其IP必须在种子列表中。 必须至少有一个节点正在运行。
您是否介意进一步解释一下,如果我继续在种子列表中添加所有3个节点,会产生什么影响?您只选择在种子列表中添加1或2个节点的原因是什么

当然,这一切都可以追溯到:

种子节点不引导数据

因此,在所有3个节点上指定seed_列表中的所有3个节点会导致以下问题:

如果在节点B或C加入集群之前启动节点A并向其写入数据,则该数据将不会流到节点B或C。 如果将来节点A出现故障并被替换,数据将不会流到替换节点。
在这些情况下,需要运行nodetool修复以将初始数据添加到新添加的节点。

意味着最佳做法是将主机B和主机C设置为种子?因此,我只需在所有3个A、B和C节点上应用-seeds:192.168.1.2192.168.1.3的配置?@BlackHat这应该可以,只要B或C是第一个启动的节点。您介意进一步解释一下,如果我继续在种子列表中添加所有3个节点,会产生什么影响吗?您将只选择在种子列表中添加1或2个节点的原因是什么?表示最佳做法是将主机B和主机C设置为种子?因此,我只需在所有3个A、B和C节点上应用-seeds:192.168.1.2192.168.1.3的配置?@BlackHat这应该可以,只要B或C是第一个启动的节点。您介意进一步解释一下,如果我继续在种子列表中添加所有3个节点,会产生什么影响吗?您只选择在种子列表中添加1或2个节点的原因是什么?