关于Cassandra Bootstrap的问题

问题描述 投票:0回答:1

有人可以回答我以下的问题,

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究竟是如何工作的?

谢谢, 掠夺

java database cassandra datastax gossip
1个回答
3
投票

(免责声明:我是Scylla员工)

当您在节点上启动Cassandra / Scylla时,它们会联系种子节点(您在yaml文件中为所有4个节点定义)以获取有关环,令牌范围和环中其他成员的信息(其他节点) )。

Bootstrap控制在插入新节点时自动重新分配群集中数据的能力。加入集群的新节点被定义为没有系统表或数据的空节点。

  • 联系种子节点以了解八卦状态。
  • 转换到Up和Joining状态(表示它正在加入集群;由UJ中的nodetool status表示)。
  • 联系种子节点以确保架构协议。
  • 计算它将负责的令牌。
  • 与前任所有者负责的令牌相关联的流副本数据。
  • 流式传输完成后转换为Up和Normal状态(表示它现在是群集的一部分;由UN中的nodetool status表示)。

你可以在这里阅读更多关于bootstrapping的信息:http://thelastpickle.com/blog/2017/05/23/auto-bootstrapping-part1.html

八卦协议确保系统中的每个节点最终都知道有关每个其他节点状态的重要信息,包括那些在发生任何给定状态变化时无法访问或尚未进入群集的状态。八卦计时器任务每秒运行一次。在每次运行期间,节点根据以下规则启动八卦交换:

  1. 八卦到随机直播端点(如果有的话)
  2. 根据无法到达和活动节点的数量,以一定的概率对随机无法到达的端点进行闲聊
  3. 如果在(1)处闲聊的节点不是种子,或者活节点的数量小于种子的数量,则根据不可达,种子和活节点的数量以一定概率闲聊到随机种子。

这些规则确保如果网络启动,所有节点最终将了解所有其他节点。 (显然,如果每个节点只联系一个种子然后只闲谈它知道的随机节点,那么当有多个种子时你可以拥有分区 - 每个种子只知道集群中节点的一个子集。步骤3避免这个和更微妙的问题。)

这样一个节点每轮启动一到三个节点的八卦交换(如果它在集群中是单独的,则为零)

您可以在这里阅读更多关于八卦高级架构的信息:https://wiki.apache.org/cassandra/ArchitectureGossip

你可以在这里阅读更多关于Scylla八卦实现的信息:https://github.com/scylladb/scylla/wiki/Gossip

© www.soinside.com 2019 - 2024. All rights reserved.