Database Cassandra群集种子提供程序如何工作?
我对cassandra seed_提供者的任务有疑问。在我的环境中,设置为集群需要3个cassandra节点。我应该如何在cassandra.yaml中定义它?我很困惑,因为大多数教程给出了不同的答案 例如: 主机A-192.168.1.1 主机B-192.168.1.2 主机C-192.168.1.3 以下是主机A的当前设置,是否正确 主机B和主机C的配置如何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 #
# 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个节点的原因是什么?