将节点添加到现有集群(一)

来源:互联网 发布:网络棋牌赚钱 编辑:程序博客网 时间:2024/06/15 12:36

将节点添加到现有集群

虚拟节点(vnodes)大大简化了将节点添加到现有集群的过程:

  • 计算令牌并将其分配给每个节点不再需要。

  • 重新平衡集群不再是必要的,因为加入集群的节点承担了偶数部分数据的责任。

有关vnodes如何工作的详细说明,请参阅虚拟节点。

注意:如果您不使用vnodes,请参阅将单令牌节点添加到群集。

步骤

确保在群集中的所有节点上使用相同版本的Cassandra。请参阅安装Apache Cassandra 3.0的早期版本。

1.在新节点上安装Cassandra,但不要启动Cassandra。如果您在Debian上的Cassandra安装自动启动,您必须停止节点并清除数据。

2.根据群集中使用的snitch,设置cassandra-topology.properties 或cassandra-rackdc.properties文件中的属性:

  • PropertyFileSnitch使用 cassandra-topology.properties文件。

  • GossipingPropertyFileSnitch,Ec2Snitch,Ec2MultiRegionSnitch和GoogleCloudSnitch使用 cassandra-rackdc.properties文件。

3.在cassandra.yaml文件中设置以下属性 :

auto_bootstrap

如果此选项已设置为false,则必须将其设置为true。该选项未在默认的cassandra.yaml配置文件中列出,默认为true。

CLUSTER_NAME

新节点正在加入的群集的名称。

listen_address / broadcast_address

通常可以留空。否则,使用其他Cassandra节点用来连接到新节点的IP地址或主机名。

endpoint_snitch

告密者Cassandra用来定位节点和路由请求。

num_tokens

要分配给节点的vnode数量。使用与数据中心中其他节点上设置的相同数量的令牌。令牌范围按比例分配,如果硬件能力不同,则为容量更高,性能更好的系统分配更多的令牌范围。

allocate_tokens_for_local_replication_factor

指定数据中心密钥空间的复制因子(RF)。如果您打算在添加节点后增加RF,则使用(新)更高的值。当射频在密钥空间之间变化并且您添加单个节点时,请使用最高的射频值。添加多个节点时,请在大部分数据密集型密钥空间RF之间交替使用。例如,在密钥空间cyclingRF = 3,密钥空间 hockeyRF = 2,密钥空间 basketballRF = 1的数据中心中,将要添加到的第一个节点设置为3,将第二个节点设置为2。

seed_provider

确保新节点在现有集群中至少列出一个节点。该-seeds列表确定哪些节点的新节点应联系,以了解集群,建立八卦过程。

注意:种子节点不能引导。确保新节点没有在-seeds列表中列出。 不要使所有节点种子节点。

其他非默认设置

在cassandra.yaml文件和 cassandra-topology.properties或 cassandra-rackdc.properties文件中更改对现有集群所做的任何其他非默认设置。使用 diff命令查找和合并现有节点和新节点之间的差异。

4.启动引导程序节点。

5.使用nodetool status来验证节点是否已完全引导,并且所有其他节点都处于运行状态(UN)而不处于任何其他状态。

6.在所有新节点运行之后,对每个先前存在的节点运行nodetool cleanup,以删除不再属于这些节点的密钥。在下一个节点上运行nodetool cleanup之前,等待清理完成。

清理可以安全地推迟使用时间。