繁体   English   中英

在Kafka集群中添加新的ZooKeeper节点?

[英]Adding new ZooKeeper node in Kafka cluster?

我运行了一个包含五个节点的Apache Kafka集群,我正在使用一个由三个节点组成的Apache ZooKeeper集群。

在zookeeper.properties文件中:

server.1=zNode01:2888:3888
server.2=zNode02:2888:3888
server.3=zNode03:2888:3888

在server.properties文件中:

zookeeper.connect=zNode01:2181,zNode02:2181,zNode03:2181

我想添加一个新的ZooKeeper节点:

  1. 我需要将这个新的ZooKeeper IP添加到现有的ZooKeeper属性文件中,需要重启它还是有另一种方法可以做到这一点?

  2. 我需要将这个新的ZooKeeper IP添加到Kafka server.properties文件中,需要重启它还是有另一种方法可以做到这一点?

它比@ cricket_007描述的更为复杂。 在尝试将新成员添加到现有zookeeper群集之前,这将是一个很好的读取。

https://zookeeper.apache.org/doc/r3.5.3-beta/zookeeperReconfig.html

专注于“修改当前动态配置”部分。

基本上,这些是高级步骤:

a)必须将新服务器引入领导者。 这是通过在zookeeper.properties文件中添加自身和“足够的集群信息”来完成的,以便连接器连接到现有的领导者。 配置不需要绝对最新,但足够新鲜,可以与当前的领导者联系。 要做到这一点,你可以从集群中的一个节点获取zookeeper.properties文件,向其添加joiner信息,并在joiner节点上启动zookeeper服务器。

b)请注意,能够与群集的领导者交谈的木匠不会自动将其作为群集的一部分。 zookeeper集合必须投票并决定将新节点添加到集群中。 joiner的状态当前是一个无投票的关注者,如果你查看zookeeper ensemble的当前配置(通过zkcli的“config”命令),你将看不到整体中列出的新节点。

c)现在,我们使用zkcli的“reconfig”命令将新节点作为投票参与者或观察者添加到集群。 投票参与者意味着所有共识决定(例如,新领导者,是否进行写作等)将涉及所有投票参与者(而不是观察者)。 添加观察者主要是为了增加动物园管理员集合的读取吞吐量,而不增加每个写入操作的2阶段提交中涉及它们的额外开销。 reconfig命令还执行此两阶段提交,其中领导者从所有投票参与者收集投票是否应将新节点添加到群集。 如果现有参与者的法定人数达成一致,则新节点将添加到群集中。

d)现在,执行zkcli的config命令将新节点显示为集群的一部分,作为投票参与者或观察者。

e)最后,您需要更新kafka的server.properties文件以关闭循环。 尽管可能不会立即进行此更改,但这将通知kafka服务器(它是一个zookeeper客户端),告知zookeeper集群中新成员的可用性,以便在故障情况下它可以回退到新添加的节点。

希望这个答案有助于理解动态添加新节点到zookeeper集群的工作原理。

注意:我自己没有尝试过扩展ZK集群,但我会尝试

使用属性文件中定义的所有服务器添加新节点。 他们应该加入。

然后将两个新服务器添加到其他ZK,并对它们执行滚动重新启动。

Kafka不需要添加额外的属性,除非您预计在任何给定时间都会丢失多个ZK

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM