配置Kafka高可用和高可靠参数
操作场景
Kafka消息传输保障机制,可以通过配置不同的参数来保障消息传输,进而满足不同的性能和可靠性要求。本章节介绍如何配置Kafka高可用和高可靠参数。
对系统的影响
- 配置高可用、高性能的影响:
配置高可用、高性能模式后,数据可靠性会降低。在磁盘故障、节点故障、Kafka重启等场景下存在数据丢失风险。
- 配置高可靠性的影响:
- 参数配置项为服务级配置需要重启Kafka,建议在变更窗口做服务级配置修改。
参数描述
- 如果业务需要保证高可用和高性能。
在客户端配置文件producer.properties中配置如表2中参数,producer.properties存放路径为:/opt/client/Kafka/kafka/config/producer.properties,其中/opt/client为Kafka客户端安装目录。
表2 客户端高可用性和高性能参数说明 参数
默认值
说明
acks
1
需要Leader确认消息是否已经接收并认为已经处理完成。该参数会影响消息的可靠性和性能。
- acks=0 :Producer将不会等待服务端任何响应。消息将会被认为成功。
- acks=1 :当副本所在Leader确认数据已写入,但是其不会等待所有的副本完全写入即返回响应。在这种情况下,如果Leader确认后但是副本未同步完成时Leader异常,那么数据就会丢失。
- acks=-1 :意味着等待所有的同步副本确认后才认为成功,配合“min.insync.replicas”可以确保多副本写入成功,只要有一个副本保持活跃状态,记录将不会丢失。
- 如果业务需要保证数据高可靠性。
在客户端配置文件producer.properties中配置如表4中参数,producer.properties存放路径为:/opt/client/Kafka/kafka/config/producer.properties,其中/opt/client为Kafka客户端安装目录。
配置建议
请根据以下业务场景对可靠性和性能要求进行评估,采用合理参数配置。
- 对于价值数据,这两种场景下建议Kafka数据目录磁盘配置raid1或者raid5,从而提高单个磁盘故障情况下数据可靠性。
- 参数配置项均为Topic级别可修改的参数,默认采用服务级配置。
可针对不同Topic可靠性要求对Topic进行单独配置。以root用户登录Kafka客户端节点,在客户端安装目录下配置Topic名称为test的可靠性参数命令:
cd Kafka/kafka/bin
kafka-topics.sh --zookeeper 192.168.1.205:2181/kafka --alter --topic test --config unclean.leader.election.enable=false --config min.insync.replicas=2
其中192.168.1.205为ZooKeeper业务IP地址。
- 参数配置项为服务级配置需要重启Kafka,建议在变更窗口做服务级配置修改。