apache kafka生产集群设置问题

z5btuh9x  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(363)

我们一直在尝试在aws-linux机器上建立一个生产级kafka集群,但到目前为止我们还没有成功。
Kafka版本:2.1.0
机器:

5 r5.xlarge machines for 5 Kafka brokers.
3 t2.medium zookeeper nodes
1 t2.medium node for schema-registry and related tools. (a Single instance of each)
1 m5.xlarge machine for Debezium.

默认代理配置:

num.partitions=15
min.insync.replicas=1
group.max.session.timeout.ms=2000000 
log.cleanup.policy=compact
default.replication.factor=3
zookeeper.session.timeout.ms=30000

我们的问题主要与海量数据有关。我们正在尝试使用debezium转移Kafka主题中的现有表。其中许多表都非常庞大,有超过50000000行。
到目前为止,我们已经尝试了很多方法,但是我们的集群每次都失败,原因有一个或多个。
计划任务“isr expiration”(kafka.utils.kafkascheduler)org.apache.zookeeper.keeperxception$sessionexpiredexception:keeperrorcode=session expired for/brokers/topics/\u consumer\u offsets/partitions/0/state,位于org.apache.zookeeper.keeperxception.create(keeperxception)。java:130)在org.apache.zookeeper.keeperexception.create(keeperexception。java:54)..
错误2:
]info[partition .public.driver\u operation-14 broker=3]缓存的zkversion[21]不等于zookeeper中的版本,跳过更新isr(kafka.cluster.partition)[2018-12-12 14:07:26551]info[partition .public.hub-14 broker=3]将isr从1,3收缩到3(kafka.cluster.partition)[2018-12-12 14:07:26,556]信息[partition .public.hub-14 broker=3]缓存的zkversion[3]不等于zookeeper中的版本,跳过isr更新(kafka.cluster.partition)[2018-12-12 14:07:26556]信息[partition .public.field\u data\u 12\u 2018-7 broker=3]将isr从1,3缩小到3(kafka.cluster.partition)
错误3:
isolationlevel=read\u uncommitted,toforget=,metadata=(sessionid=888665879,epoch=initial))(kafka.server.replicafetcherthread)java.io.ioexception:在org.apache.kafka.clients.networkclientutils.sendandreceive(networkclientutils)读取响应之前,已断开与3的连接。java:97)
还有一些错误:
经纪人之间频繁的断开连接,这可能是ISR不停地收缩和扩展而没有自动恢复的原因。
架构注册表超时。我甚至不知道模式注册表是如何受到影响的。我看那个服务器没有太多负载。我错过什么了吗?我是否应该对架构注册表的多个示例使用负载平衡器作为故障转移?。主题模式中只有28条消息。确切的错误消息是restclientexception:register操作超时。错误代码:50002
有时消息传输速率超过每秒100000条消息,有时下降到每秒2000条消息?邮件大小会导致这种情况吗?
为了解决上面的一些问题,我们增加了代理的数量,并增加了zookeeper.session.timeout.ms=30000,但我不确定它是否真的解决了我们的问题,如果真的解决了,怎么解决?。
我有几个问题:
我们的集群是否足以处理这么多数据。
我们有什么明显的遗漏吗?
如何在转移到生产级别之前对设置进行负载测试?
什么会导致代理和模式注册表之间的会话超时。
处理模式注册表问题的最佳方法。
我们其中一个经纪人的网络负载。

请随时询问更多信息。

yiytaume

yiytaume1#

请使用最新的官方版本的合流为您集群。
实际上,您可以通过增加主题的分区数和增加 tasks.max (当然是在您的接收器连接器)超过1在您的连接器工作更并发和更快。
请增加kafka connect主题的数量,并使用kafka connect分布式模式来提高kafka connect群集的高可用性。您可以通过在kafka connectand schema注册表配置中设置复制因子的数量来实现,例如:

config.storage.replication.factor=2
status.storage.replication.factor=2
offset.storage.replication.factor=2

请设置 topic compressionsnappy 为了你的大table。它将增加主题的吞吐量,这有助于debezium连接器更快地工作,也不使用json转换器-建议使用avro转换器!
另外,请为您的模式注册表使用负载平衡器
为了测试集群,您可以创建一个只有一个表的连接器(我指的是一个大表!)与 database.whitelist 并设置 snapshot.modeinitial 关于模式注册表!架构注册表用户kafka和zookeeper设置以下配置:

bootstrap.servers
kafkastore.connection.url

这就是shema注册表集群宕机的原因

相关问题