温馨提示×

ubuntu kafka配置怎样限制带宽

小樊
37
2026-09-14 17:32:36
栏目: 智能运维

在 Ubuntu 上运行 Kafka 时,“限制带宽”通常有以下几种场景和做法。下面按常见需求给你一个清晰总结。


一、限制 Kafka 副本同步带宽(最常用)

Kafka 自带参数,用于限制 Follower 从 Leader 拉取数据的带宽,不影响生产/消费。

1. 修改 server.properties

# 限制副本同步速度为 10 MB/s(单位是 byte/s)
follower.replication.throttled.rate=10485760
# Leader 向 Follower 发送数据的限速
leader.replication.throttled.rate=10485760

2. 对 Topic 启用限速

bin/kafka-configs.sh --bootstrap-server localhost:9092 \
  --entity-type topics --entity-name your-topic \
  --alter --add-config 'leader.replication.throttled.replicas=*'

bin/kafka-configs.sh --bootstrap-server localhost:9092 \
  --entity-type topics --entity-name your-topic \
  --alter --add-config 'follower.replication.throttled.replicas=*'

✅ 适合:集群扩容、副本重平衡时防止打满网卡


二、限制 Producer / Consumer 带宽(客户端)

Kafka 服务端不能直接限制生产/消费带宽,需要在客户端做。

Producer 端

props.put("max.request.size", "1048576"); // 1MB
props.put("linger.ms", 100);
props.put("batch.size", 16384);

Consumer 端

  • 控制 fetch.max.bytes
  • 控制消费线程数
  • 在应用层做限速(如令牌桶)

三、使用 Linux TC 限制 Kafka 端口带宽(系统级)

如果你想硬性限制 Kafka 使用的网络带宽,可以用 tc

示例:限制 9092 端口为 50 Mbps

sudo tc qdisc add dev eth0 root handle 1: htb
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 50mbit

sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 \
  u32 match ip dport 9092 0xffff flowid 1:1

✅ 适合:

  • 云服务器怕超流量
  • 多服务共用网卡

四、Docker / 云环境额外说明

  • Docker:限制容器 --network 带宽
  • 云厂商:用安全组 / 流控策略
  • Kubernetes:用 NetworkPolicykube-router

五、推荐方案总结

场景 推荐方式
副本同步占带宽 Kafka 自带 throttled rate
生产/消费限速 客户端限流
整机/端口限速 Linux tc
云服务器 云平台流控

如果你能具体说一下:

  • Kafka 版本
  • 单机还是集群
  • 想限制“哪一类流量”

我可以给你更精确的配置示例

0