Skip to content

Commit 2a99724

Browse files
committed
update README.md
1 parent 1b5cf86 commit 2a99724

File tree

2 files changed

+280
-58
lines changed

2 files changed

+280
-58
lines changed

README-zh.md

Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
# https://github.com/sir5kong/kafka-docker
2+
3+
# 镜像版本
4+
5+
- [`v3.5.0`, `v3.5`, `latest`](https://github.com/sir5kong/kafka-docker/blob/main/Dockerfile)
6+
- [`v3.4.1`, `v3.4`](https://github.com/sir5kong/kafka-docker/blob/main/Dockerfile)
7+
- [`v3.3.2`, `v3.3`](https://github.com/sir5kong/kafka-docker/blob/main/Dockerfile)
8+
9+
# 关于 Apache Kafka
10+
11+
Apache Kafka 是一个开源分布式事件流平台,已被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用程序。
12+
13+
- [wikipedia.org/wiki/Apache_Kafka](https://en.wikipedia.org/wiki/Apache_Kafka)
14+
15+
> 超过 80% 的财富 100 强公司信任并使用 Kafka。
16+
17+
# 为何选择这个镜像
18+
19+
- 全面兼容 `KRaft`, 不依赖 ZooKeeper
20+
- 灵活使用环境变量进行配置覆盖
21+
- 上手简单
22+
- 提供 `helm chart`,你可以在 Kubernetes 快速部署高可用 Kafka 集群
23+
24+
# 使用镜像
25+
26+
[Docker Hub](https://hub.docker.com/r/sir5kong/kafka)
27+
28+
## 启动 `kafka` 服务器
29+
30+
最简单的方式启动 Kafka:
31+
32+
``` shell
33+
docker run -d --name kafka-server --network host sir5kong/kafka:v3.5
34+
```
35+
36+
### 持久化数据存储
37+
38+
``` shell
39+
docker volume create kafka-data
40+
docker run -d --name kafka-server \
41+
--network host \
42+
-v kafka-data:/opt/kafka/data \
43+
sir5kong/kafka:v3.5
44+
```
45+
46+
> broker 默认端口 `9092`
47+
48+
### 自定义端口号
49+
50+
``` shell
51+
docker volume create kafka-data
52+
docker run -d --name kafka-server \
53+
--network host \
54+
-v kafka-data:/opt/kafka/data \
55+
--env KAFKA_CONTROLLER_LISTENER_PORT=29091 \
56+
--env KAFKA_BROKER_LISTENER_PORT=29092 \
57+
sir5kong/kafka:v3.5
58+
```
59+
60+
### 使用 Docker Compose
61+
62+
``` yaml
63+
version: "3"
64+
65+
volumes:
66+
kafka-data: {}
67+
68+
## bootstrap-server: ${KAFKA_HOST_IP_ADDR}:9092
69+
70+
services:
71+
kafka:
72+
image: sir5kong/kafka:v3.5
73+
restart: always
74+
network_mode: host
75+
volumes:
76+
- kafka-data:/opt/kafka/data
77+
environment:
78+
- KAFKA_HEAP_OPTS=-Xmx512m -Xms512m
79+
#- KAFKA_CONTROLLER_LISTENER_PORT=19091
80+
#- KAFKA_BROKER_LISTENER_PORT=9092
81+
82+
```
83+
84+
## Environment Variables
85+
86+
| 变量 | 默认值 | 描述 |
87+
|-----------|-------|------|
88+
| `KAFKA_CLUSTER_ID` | 随机生成 | Cluster ID |
89+
| `KAFKA_BROKER_LISTENER_PORT` | `9092` | broker 端口号. 如果配置了 `KAFKA_CFG_LISTENERS` 则此项实效 |
90+
| `KAFKA_CONTROLLER_LISTENER_PORT` | `19091` | controller 端口号. 如果配置了 `KAFKA_CFG_LISTENERS` 则此项实效 |
91+
| `KAFKA_HEAP_OPTS` | `null` | Kafka Java Heap size. 例如: `-Xmx512m -Xms512m`|
92+
93+
### Kafka Configurations
94+
95+
所有以 `KAFKA_CFG_` 开头的环境变量都将映射到其相应的 Apache Kafka 配置项。
96+
97+
例如 `KAFKA_CFG_LISTENERS` 对应配置参数 `listeners``KAFKA_CFG_ADVERTISED_LISTENERS` 对应配置参数 `advertised.listeners`
98+
99+
Variable examples:
100+
101+
| 变量 | 配置项 |
102+
|---------|--------|
103+
| `KAFKA_CFG_PROCESS_ROLES` | `process.roles` |
104+
| `KAFKA_CFG_LISTENERS` | `listeners` |
105+
| `KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP` | `listener.security.protocol.map` |
106+
| `KAFKA_CFG_ADVERTISED_LISTENERS` | `advertised.listeners` |
107+
| `KAFKA_CFG_CONTROLLER_QUORUM_VOTERS` | `controller.quorum.voters` |
108+
| `KAFKA_CFG_LOG_RETENTION_HOURS` | `log.retention.hours` |
109+
110+
> `log.dir``log.dirs` 已经被锁定,无法使用环境变量进行覆盖。
111+
112+
## 使用 helm chart
113+
114+
### Prerequisites
115+
116+
- Kubernetes 1.18+
117+
- Helm 3.3+
118+
119+
### 获取 helm 仓库
120+
121+
``` shell
122+
helm repo add kafka-repo https://sir5kong.github.io/kafka-docker
123+
helm repo update kafka-repo
124+
```
125+
126+
### 部署单节点 Kafka 集群
127+
128+
- 下面这个案例关闭了持久化存储,仅演示部署效果
129+
130+
``` shell
131+
helm upgrade --install kafka \
132+
--namespace kafka-demo \
133+
--create-namespace \
134+
--set broker.combinedMode.enabled="true" \
135+
--set broker.persistence.enabled="false" \
136+
kafka-repo/kafka
137+
```
138+
139+
### 将 broker 和 controller 独立部署
140+
141+
``` shell
142+
helm upgrade --install kafka \
143+
--namespace kafka-demo \
144+
--create-namespace \
145+
--set broker.persistence.size="20Gi" \
146+
kafka-repo/kafka
147+
```
148+
149+
> 默认已开启持久化存储。
150+
151+
### 部署高可用 Kafka 集群
152+
153+
``` shell
154+
helm upgrade --install kafka \
155+
--namespace kafka-demo \
156+
--create-namespace \
157+
--set controller.replicaCount="3" \
158+
--set broker.replicaCount="3" \
159+
--set broker.heapOpts="-Xms4096m -Xmx4096m" \
160+
--set broker.resources.requests.memory="8Gi" \
161+
--set broker.resources.limits.memory="16Gi" \
162+
kafka-repo/kafka
163+
```
164+
165+
> 高可用集群更多配置项请参考 [examples/values-production.yml](https://github.com/sir5kong/kafka-docker/raw/main/examples/values-production.yml)
166+
167+
### 使用 LoadBalancer
168+
169+
启用集群外访问模式:
170+
171+
``` shell
172+
helm upgrade --install kafka \
173+
--namespace kafka-demo \
174+
--create-namespace \
175+
--set broker.external.enabled="true" \
176+
--set broker.external.service.type="LoadBalancer" \
177+
--set broker.external.domainSuffix="kafka.example.com" \
178+
kafka-repo/kafka
179+
```
180+
181+
上面部署完成后还需要继续添加域名解析。
182+
183+
# Multi-language `README.md`
184+
185+
- [English](README.md)
186+
- [简体中文](README_ZH.md)

0 commit comments

Comments
 (0)