有人可以回答我以下的问题,
1)我有4个节点172.30.56.60,172.30.56.61,172.30.56.62,172.30.56.63我还在所有四个节点中将种子配置为cassandra.yaml中的'172.30.56.60,172.30.56.61'。注意:我没有在cassandra.yaml文件中提供有关'172.30.56.62,172.30.56.63'的任何信息。但是当我在所有四个节点中启动Cassandra时,Cassandra如何识别62和63?
2)八卦协议如何工作/ Cassandra bootstrap究竟是如何工作的?
谢谢, 掠夺
(免责声明:我是Scylla员工)
当您在节点上启动Cassandra / Scylla时,它们会联系种子节点(您在yaml文件中为所有4个节点定义)以获取有关环,令牌范围和环中其他成员的信息(其他节点) )。
Bootstrap控制在插入新节点时自动重新分配群集中数据的能力。加入集群的新节点被定义为没有系统表或数据的空节点。
UJ
中的nodetool status
表示)。UN
中的nodetool status
表示)。你可以在这里阅读更多关于bootstrapping的信息:http://thelastpickle.com/blog/2017/05/23/auto-bootstrapping-part1.html
八卦协议确保系统中的每个节点最终都知道有关每个其他节点状态的重要信息,包括那些在发生任何给定状态变化时无法访问或尚未进入群集的状态。八卦计时器任务每秒运行一次。在每次运行期间,节点根据以下规则启动八卦交换:
这些规则确保如果网络启动,所有节点最终将了解所有其他节点。 (显然,如果每个节点只联系一个种子然后只闲谈它知道的随机节点,那么当有多个种子时你可以拥有分区 - 每个种子只知道集群中节点的一个子集。步骤3避免这个和更微妙的问题。)
这样一个节点每轮启动一到三个节点的八卦交换(如果它在集群中是单独的,则为零)
您可以在这里阅读更多关于八卦高级架构的信息:https://wiki.apache.org/cassandra/ArchitectureGossip
你可以在这里阅读更多关于Scylla八卦实现的信息:https://github.com/scylladb/scylla/wiki/Gossip