Apache kafka 卡夫卡复制设置策略?

Apache kafka 卡夫卡复制设置策略?,apache-kafka,system-design,Apache Kafka,System Design,我有两个vm服务器(比如S1和S2),需要在集群模式下安装kafka,在集群模式下,只有一个分区和两个副本(一个是领导者本身,另一个是追随者)以确保可靠性 从这一点得到了高层次的想法,想确认下面的策略是否正确 首先将zookeeper设置为两个节点上的群集,以实现高可用性(HA)。若我只在一个节点上设置zk,那个么该节点将关闭,完成集群 我会下来的。正确的?在最新的卡夫卡版本中也必须使用zk吗?看起来它是旧版本的必备品 在两个节点上启动kafka代理。它可以位于托管在不同节点上的同一端口上 在分

我有两个vm服务器(比如S1和S2),需要在集群模式下安装kafka,在集群模式下,只有一个分区和两个副本(一个是领导者本身,另一个是追随者)以确保可靠性

从这一点得到了高层次的想法,想确认下面的策略是否正确

  • 首先将zookeeper设置为两个节点上的群集,以实现高可用性(HA)。若我只在一个节点上设置zk,那个么该节点将关闭,完成集群 我会下来的。正确的?在最新的卡夫卡版本中也必须使用zk吗?看起来它是旧版本的必备品
  • 在两个节点上启动kafka代理。它可以位于托管在不同节点上的同一端口上
  • 在分区为1和副本为2的任何节点上创建主题
  • zookeeper将选择一个节点上的任何代理作为领导者,另一个作为追随者
  • Producer将连接到任何代理并开始发布消息
  • 如果引线下降,zookeeper将自动选择另一个节点作为引线。不确定现在如何维护2的副本,因为只有 现在有一个节点处于活动状态
  • 上述策略正确吗

    有用资源


    是-ZooKeeper仍然需要,但您可以了解哪些计划在不久的将来删除对ZooKeeper的依赖,并开始使用Raft算法来创建仲裁

    正如您已经了解的,如果您将在单个节点上安装ZK,它将在独立模式下工作,您将没有任何弹性。经典的ZK集成包括,它允许您丢失1个ZK节点

    将Kafka代理指向右侧后,您可以启动代理,集群将启动并运行

    在您的示例中,我建议您创建另一个节点,以获得更好的恢复能力并满足您想要的复制系数,同时仍然能够在不丢失数据的情况下丢失一个节点

    请记住,使用单个分区意味着每个消费者组只有一个消费者。其余的消费者将无所事事


    我建议您阅读这篇关于卡夫卡和的博客。

    是的-ZooKeeper仍然需要,但您可以阅读关于哪些计划在不久的将来消除对ZooKeeper的依赖,并开始使用Raft算法来创建仲裁

    正如您已经了解的,如果您将在单个节点上安装ZK,它将在独立模式下工作,您将没有任何弹性。经典的ZK集成包括,它允许您丢失1个ZK节点

    将Kafka代理指向右侧后,您可以启动代理,集群将启动并运行

    在您的示例中,我建议您创建另一个节点,以获得更好的恢复能力并满足您想要的复制系数,同时仍然能够在不丢失数据的情况下丢失一个节点

    请记住,使用单个分区意味着每个消费者组只有一个消费者。其余的消费者将无所事事

    我建议你阅读这篇关于卡夫卡和卡夫卡的博客

    首先将zookeeper设置为两个节点上的群集,以实现高性能 可用性(HA)。如果我只在单个节点上设置zk,那么 节点关闭,整个群集将关闭。正确的?这是强制性的吗 在最新的卡夫卡版本中也使用zk吗?看来这是老年人的必备品 版本是卡夫卡必须的吗

    回答:是。动物园管理员在被释放之前仍然是必须的。Zookeeper负责选择控制器、存储关于Kafka集群的元数据并管理代理成员资格()。理想情况下,Zookeeper节点的数量应至少为3个。通过这种方式,您可以容忍一个节点故障。(2个健康的动物园管理员节点(大多数集群)仍然能够选择一个控制器)你还应该考虑在不同机器上设置ZooKeCon集群,而不是安装卡夫卡安装的机器。因此,服务器故障不会导致Zookeeper和Kafka节点同时丢失

    在两个节点上启动kafka代理。它可以位于与当前相同的端口上 托管在不同的节点上

    回答:您应该首先启动Zookeeper集群,然后启动Kafka集群。不同节点上的相同端口是合适的

    在分区为1和副本为2的任何节点上创建主题

    回答:分区用于水平可伸缩性。如果你不需要这个,一个分区就可以了。通过使用复制因子2,其中一个节点在任何时候都将是先导节点,而其中一个节点将是跟随节点。但这还不足以完全避免数据丢失以及提供HA。在理想的配置中,您应该至少有3个Kafka代理,3个主题的复制因子,
    min.insync.replicas=2
    作为代理配置,
    acks=all
    作为生产者配置,以避免数据丢失,同时不损害HA。(您可以查看更多信息)

    zookeeper将选择一个节点上的任何代理作为leader,另一个作为leader 追随者

    回答:控制器代理负责维护所有分区的领导者/追随者关系。一个代理将是分区的领导者,另一个代理将是追随者。您可以使用此命令检查分区引线/跟随器

    bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic my-replicated-topic
    
    Producer将连接到任何代理并开始发布消息

    回答:是。仅将一个代理设置为bootstrap.servers就足以连接到Kafka群集。但对于冗余,您应该在bootstrap.servers中提供多个代理

    bootstrap.servers:用于建立 与卡夫卡群集的初始连接。客户将使用 所有服务器的名称,而不考虑此处为其指定的服务器 引导此列表只会影响用于 发现完整的服务器集。此列表应为 主机1:端口1,主机2:端口