• kafka集群配置


    Broker 端参数

    • log.dirs:Broker 需要使用的若干个文件目录路径,必须指定;最好不同路径挂载到不同的物理磁盘,提升读写性能且能能够实现故障转移

    • log.dir:单个路径

    • zookeeper.connect:zookeeper端口

    • listeners:访问kafka的监听器

    • advertised.listeners:Broker 用于对外发布的监听器

    • auto.create.topics.enable:是否允许自动创建 Topic,建议最好设置成 false

    • unclean.leader.election.enable:是否允许 Unclean Leader 选举,是否能让那些落后太多的副本竞选 Leader,建议false

    • auto.leader.rebalance.enable:是否允许定期进行 Leader 选举,成本太高,建议false

    • log.retention.{hours|minutes|ms}:控制一条消息数据被保存多长时间。从优先级上来说 ms 设置最高、minutes 次之、hours 最低

    • log.retention.bytes:这是指定 Broker 为消息保存的总磁盘容量大小。默认-1

    • message.max.bytes:控制 Broker 能够接收的最大消息大小。

    Topic 级别参数

    • retention.ms: Topic 消息被保存的时长。默认是 7 天。会覆盖掉 Broker 端的全局参数值。

    • retention.bytes: Topic 预留多大的磁盘空间。通常在多租户的 Kafka 集群中会有用武之地。默认值是 -1,表示可以无限使用磁盘空间。

    • max.message.bytes:Broker 能够正常接收该 Topic 的最大消息大小

    创建topic时设置:

    bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic transaction --partitions 1 --replication-factor 1 --config retention.ms=15552000000 --config max.message.bytes=5242880
    

    修改topic(推荐):

    bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name transaction --alter --add-config max.message.bytes=10485760
    

    JVM参数

    JVM 堆大小设置成 6GB ,用默认的 G1 收集器

    • KAFKA_HEAP_OPTS:指定堆大小。
    • KAFKA_JVM_PERFORMANCE_OPTS:指定 GC 参数。

    启动broker前设置:

    $> export KAFKA_HEAP_OPTS=--Xms6g  --Xmx6g
    $> export KAFKA_JVM_PERFORMANCE_OPTS= -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true
    $> bin/kafka-server-start.sh config/server.properties
    

    操作系统参数

    文件描述符限制:ulimit -n 1000000,通常将它设置成一个超大的值

    文件系统类型:最好选择xfs

    Swap:设置成一个比较小的值,当开始使用 swap 空间时,能够观测到 Broker 性能开始出现急剧下降,避免直接OOM,从而给你进一步调优和诊断问题的时间。

    提交时间(Flush 落盘时间):适当地增加提交间隔来降低物理磁盘的写操作

    动态 Broker 参数配置

    配置的类别

    read-only。只有重启 Broker,才能令修改生效。

    per-broker。修改它之后,只会在对应的 Broker 上生效。

    cluster-wide。被修改它之后,会在整个集群范围内生效。

    使用场景

    • 动态调整 Broker 端各种线程池大小,实时应对突发流量。
    • 动态调整 Broker 端连接信息或安全配置信息。
    • 动态更新 SSL Keystore 有效期。
    • 动态调整 Broker 端 Compact 操作性能。
    • 实时变更 JMX 指标收集器 (JMX Metrics Reporter)。

    实现

    Kafka 将动态 Broker 参数保存在 ZooKeeper 中,具体的 znode 路径如下图所示。

    changes 是用来实时监测动态参数变更的;

    topics 是用来保存 Kafka 主题级别参数的。不属于动态 Broker 端参数,但支持动态变更的。

    users 和 clients 则是用于动态调整客户端配额(Quota)的 znode 节点。连入集群的客户端的吞吐量或者是限定它们使用的 CPU 资源。

    /config/brokers znode 才是保存动态 Broker 参数。第一类子节点< default >,保存 cluster-wide 动态参数;另一类则以 broker.id 为名,保存 Broker 的 per-broker 范围参数。

    设置

    # 设置 cluster-wide 范围值,entity-default
    $ bin/kafka-configs.sh --bootstrap-server kafka-host:port --entity-type brokers --entity-default --alter --add-config unclean.leader.election.enable=true
    # 查看设置
    $ bin/kafka-configs.sh --bootstrap-server kafka-host:port --entity-type brokers --entity-default --describe
    # 设置ID 为 1 的 Broker
    $ bin/kafka-configs.sh --bootstrap-server kafka-host:port --entity-type brokers --entity-name 1 --alter --add-config unclean.leader.election.enable=false
    # 查看设置
    $ bin/kafka-configs.sh --bootstrap-server kafka-host:port --entity-type brokers --entity-name 1 --describe
    
    
    # 删除cluster-wide范围参数,删除动态参数要指定 delete-config
    $ bin/kafka-configs.sh --bootstrap-server kafka-host:port --entity-type brokers --entity-default --alter --delete-config unclean.leader.election.enable
    
    # 删除per-broker范围参数,删除动态参数要指定 delete-config
    $ bin/kafka-configs.sh --bootstrap-server kafka-host:port --entity-type brokers --entity-name 1 --alter --delete-config unclean.leader.election.enable
    

    常用动态参数

    • log.retention.ms:日志留存时间
    • num.io.threads 和 num.network.threads:Broker 端请求处理能力经常要按需扩容。
    • num.replica.fetchers:执行 Follower 副本向 Leader 副本的拉取。
  • 相关阅读:
    python_Opencv_使用Matplotlib模块
    django中同源策略和跨域解决方案
    ES6常用语法
    django之页面缓存
    django组件之ContentType
    我的博客园设置
    rest_framework 之版本控制
    rest_framework 之分页器
    在django项目中手动模拟实现settings的配置
    rest_framework之url控制器详解
  • 原文地址:https://www.cnblogs.com/hainingwyx/p/14612550.html
Copyright © 2020-2023  润新知