当前位置: 首页 > 知识库问答 >
问题:

关于Kafka集群设置的疑问

陶博赡
2023-03-14

我有一个用例,我想建立一个Kafka集群,最初我有1个Kafka Broker(A)和1个Zookeeper节点。以下是我的疑问:

>

  • 在向集群添加新的Kafka Broker(B)时。代理A上存在的所有数据都会自动分发吗?如果不是,我需要做的是分发数据。

    不,让我们假设情况以某种方式解决了!我的数据分布在两个代理上。现在由于一些维护问题,我想关闭服务器B。

    • 如何将经纪商B的数据传输到已经存在的经纪商A或新的经纪商C。

    如何在运行时增加代理的复制因子

    如何在运行时更改Kafka代理配置中存在的动物园管理员 IP,而无需重新启动Kafka?

    关于Kafka客户端:

      < li >我是否需要将所有Kafka broker IP指定给kafkaClient进行连接?每次添加或删除代理时,我都需要在Kafka客户端连接字符串中添加或删除我的IP。因为它总是需要重新启动我的生产者和消费者?

    注意:

    Kafka Version: 2.0.0
    Zookeeper: 3.4.9
    Broker Size : (2 core, 8 GB RAM) [4GB for Kafka and 4 GB for OS]
    
  • 共有2个答案

    戚建华
    2023-03-14

    以下是简短的答案:

    > < li>

    是的,代理A上的数据也将在Kafka代理B中分发

    你可以设置三个经纪人A、B和C,如果A失败了,那么B和C会失败,如果B失败了,那么C会接管,依此类推。

    您可以增加代理的复制因子。您可以创建increase-replication-factor . JSON,并将以下内容放入其中:

    {“版本”:1,“分区”:[{“主题”:“信号”,“分区”:0,“副本”:[0,1,2]},{“主题”:“信号”,“分区”:1,“副本”:[0,1,2]},{“主题”:“信号”,“分区”:2,“副本”:[0,1,2]}]}

    要增加给定主题的副本数量,您必须:

    用下面的命令指定现有主题的额外分区(比如说从2增加到3)

    bin/kafktopics.sh --zookeeper localhost:2181 --alter --topic topic-to-increase --partitions 3
    

    有一个zoo.cfg文件,您可以在其中添加与ZooKeeper相关的IP和配置。

    庞书
    2023-03-14

    要从单个kafka代理运行主题,您必须在创建该主题时将复制因子设置为1(显式地,或通过< code > default . replication . factor 隐式地)。这意味着主题的分区将位于单个代理上,即使在增加代理数量之后。

    您必须增加副本的数量,如kafka文档中所述。您还必须注意,内部__consumer_offsets主题有足够多的副本。这将启动复制过程,最终原始代理将成为每个主题分区的领导者,而另一个代理将成为跟随者并完全跟上。您可以使用< code > Kafka-topics . sh-describe 来检查每个分区在ISR中都有两个代理(同步副本)。

    完成后,您应该能够使原始代理离线,kafka将选举新代理作为每个主题分区的领导者。不要忘记更新客户端,以便他们也知道新代理,以防客户端在原始代理关闭时需要重新启动(否则它将找不到集群)。

     类似资料:
    • 我想建立一个多kafka集群,大约有3个zookeeper实例,每个集群中有3个kafka代理,每个kafka经纪人大约有5个主题和5个分区。有什么设置指南可以参考吗? PS:我可以找到带有多个Kafka代理的单个zookeeper实例的信息,但不能找到带有多个zookeeper实例的设置。

    • 在我们的一个基于spring boot的服务中,我们打算同时连接到两个不同的kafka集群。这些集群都有自己的引导服务器集、主题配置等。它们之间没有任何关联,就像这个问题中的情况一样。 我将有不同类型的消息从不同主题名称的每个集群中读取。可能有或可能没有多个生产者通过此服务连接到两个集群,但我们肯定每个集群至少有一个消费者。 我想知道如何在application.yml中定义属性以满足此设置,以便

    • 现在我在复制的缓存上使用SQL select语句。现在这些缓存的写入同步模式是FULL_SYNC。 现在,我们只能在一个DC中工作客户端节点,而不能同时在两个DC中工作。假设我们有两个客户在DC1。 因此,节点总数为6个(在DC1中有2个客户端节点和2个服务器节点,在DC2中有2个服务器节点)。 我们的用例是这样一种方式… 2个客户端应该只查询DC1中的2个服务器节点,而不是DC2中的其他2个服务

    • 我有一个3节点kafka集群和2个面向生产者和消费者的Kafka客户端。我已经启用了SSL认证。我想为群集启用授权。我已经在我的服务器中添加了下面的属性。 authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer 我知道是动物园管理员存储acl信息。我想知道谁可以为不同的客户端设置授权。授权是如何设置的?

    • 我试图通过https://docs.confluent.io/platform/current/security/security_tutorial.htmlSSL密钥和用户名/密码来设置集群,就像描述的那样。 但是未能找到一种合适的方法来设置密钥的dname和代理的参数“super.users” 它被告知创建一个密钥: 稍后配置代理服务器。设置超级用户所需的属性: 因为本教程将代理间安全协议配置

    • 本章节将介绍如何设置本地节点群集,如何使其成为私有的,以及如何使你在eth-netstat网络上的节点协同工作来监控应用程序。作为网络集成测试(与网络/blockchain同步/消息传播等相关的问题,DAPP开发人员测试多块和多用户场景)的后端,完全可供你的ethereum网络是非常有用的。 我们假设您可以通过安装指南构建geth 设置多个节点 为了在本地运行多个ethereum节点,您必须确保: