Skip to content

Commit e027f84

Browse files
committed
2018-03-21 补充 kafka 相关
1 parent d3fac92 commit e027f84

File tree

1 file changed

+156
-2
lines changed

1 file changed

+156
-2
lines changed

markdown-file/Kafka-Install-And-Settings.md

Lines changed: 156 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
182.61.19.178 youmeekhost
2020
```
2121

22+
----------------------------------------------------------------------------------------------
23+
2224

2325
## Kafka 介绍
2426

@@ -37,21 +39,21 @@
3739
- Consumer Group:每个 Consumer 属于一个特定的 Consumer Group(可为每个 Consumer 指定 group name,若不指定 group name 则属于默认的 group)一般一个集群指定一个 group
3840
- 业界常用的 docker 镜像:
3941
- [wurstmeister/kafka-docker(不断更新,优先)](https://github.com/wurstmeister/kafka-docker/)
42+
- 这个示例,部署是成功了,开发环境没法调通,暂时无解。
4043
- 运行的机子不要小于 2G 内存
4144
- clone 项目:`git clone https://github.com/wurstmeister/kafka-docker.git`
4245
- 修改 `vim docker-compose.yml` 中参数 KAFKA_ADVERTISED_HOST_NAME,改为你 /etc/hosts 下的配置
4346
- 先启动 zookeeper(首次时间较慢):`docker-compose up -d`
4447
- 再添加 kafka 节点:`docker-compose scale kafka=3`
4548
- 停止容器:`docker-compose stop`
4649
- 进入容器:`docker exec -it 54f /bin/bash`
47-
- [spotify/docker-kafka](https://github.com/spotify/docker-kafka)
4850
- Spring 项目选用依赖包的时候,对于版本之间的关系可以看这里:<http://projects.spring.io/spring-kafka/>
4951
- 目前(201803)
5052
- spring boot 2.0 以上基础框架版本,kafka 版本 1.0.x,推荐使用:spring-kafka 2.1.4.RELEASE
5153
- spring boot 2.0 以下基础框架版本,kafka 版本 0.11.0.x, 1.0.x,推荐使用:spring-kafka 1.3.3.RELEASE
5254
- 官网 quickstart 指导:<https://kafka.apache.org/quickstart>
5355
- 常用命令:
54-
- 容器中 kafka home:`/opt/kafka`
56+
- 容器中 kafka home:`cd /opt/kafka`
5557
- 我的 zookeeper 地址:`10.135.157.34:2181`,如果你有多个节点用逗号隔开
5658
- 列出所有 topic:`bin/kafka-topics.sh --list --zookeeper 10.135.157.34:2181`
5759
- 创建 topic:`bin/kafka-topics.sh --create --topic kafka-test-topic-1 --partitions 3 --replication-factor 1 --zookeeper 10.135.157.34:2181`
@@ -60,6 +62,9 @@
6062
- 删除 topic:`bin/kafka-topics.sh --delete --topic kafka-test-topic-1 --zookeeper 10.135.157.34:2181`
6163
- 更多命令可以看:<http://orchome.com/454>
6264

65+
----------------------------------------------------------------------------------------------
66+
67+
6368
## Docker 单个实例部署
6469

6570
- 我的宿主机 ip:`172.16.0.2`,下面会用到
@@ -87,6 +92,154 @@ wurstmeister/kafka:latest
8792
- 再开一个终端,进入 kafka 容器,接受消息:`bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-topic-test --from-beginning`
8893
- 此时发送的终端输入一个内容回车,接受消息的终端就可以收到。
8994

95+
----------------------------------------------------------------------------------------------
96+
97+
98+
## Docker 多机多实例部署
99+
100+
- 三台机子:
101+
- 内网 ip:
102+
- 内网 ip:
103+
- 内网 ip:
104+
- 三台机子的 hosts 修改为:`vim /etc/hosts`
105+
106+
```
107+
172.16.0.2 youmeekhost1
108+
172.16.0.2 youmeekhost2
109+
172.16.0.2 youmeekhost3
110+
```
111+
112+
#### 各个节点部署 zookeeper:
113+
114+
- 节点 1:
115+
116+
```
117+
docker run -d \
118+
-v /data/docker/zookeeper/data:/data \
119+
-v /data/docker/zookeeper/log:/datalog \
120+
-e ZOO_MY_ID=1 \
121+
-e "ZOO_SERVERS=server.1=youmeekhost1:2888:3888 server.2=youmeekhost2:2888:3888 server.3=youmeekhost3:2888:3888" \
122+
--name=zookeeper1 --net=host --restart=always zookeeper:3.4
123+
```
124+
125+
126+
- 节点 2:
127+
128+
```
129+
docker run -d \
130+
-v /data/docker/zookeeper/data:/data \
131+
-v /data/docker/zookeeper/log:/datalog \
132+
-e ZOO_MY_ID=2 \
133+
-e "ZOO_SERVERS=server.1=youmeekhost1:2888:3888 server.2=youmeekhost2:2888:3888 server.3=youmeekhost3:2888:3888" \
134+
--name=zookeeper2 --net=host --restart=always zookeeper:3.4
135+
```
136+
137+
138+
- 节点 3:
139+
140+
```
141+
docker run -d \
142+
-v /data/docker/zookeeper/data:/data \
143+
-v /data/docker/zookeeper/log:/datalog \
144+
-e ZOO_MY_ID=3 \
145+
-e "ZOO_SERVERS=server.1=youmeekhost1:2888:3888 server.2=youmeekhost2:2888:3888 server.3=youmeekhost3:2888:3888" \
146+
--name=zookeeper3 --net=host --restart=always zookeeper:3.4
147+
```
148+
149+
#### 先安装 nc 再来校验 zookeeper 集群情况
150+
151+
- 环境:CentOS 7.4
152+
- 官网下载:<https://nmap.org/download.html>,找到 rpm 包
153+
- 当前时间(201803)最新版本下载:`wget https://nmap.org/dist/ncat-7.60-1.x86_64.rpm`
154+
- 安装:`sudo rpm -i ncat-7.60-1.x86_64.rpm`
155+
- ln 下:`sudo ln -s /usr/bin/ncat /usr/bin/nc`
156+
- 检验:`nc --version`
157+
158+
#### zookeeper 测试
159+
160+
- 各节点执行命令:`echo stat | nc youmeekhost1 2181`,能得到如下信息:
161+
162+
```
163+
Zookeeper version: 3.4.11-37e277162d567b55a07d1755f0b31c32e93c01a0, built on 11/01/2017 18:06 GMT
164+
Clients:
165+
/172.21.0.1:33344[0](queued=0,recved=1,sent=0)
166+
167+
Latency min/avg/max: 0/0/0
168+
Received: 1
169+
Sent: 0
170+
Connections: 1
171+
Outstanding: 0
172+
Zxid: 0x500000000
173+
Mode: leader
174+
Node count: 4
175+
```
176+
177+
178+
#### 部署 Kafka
179+
180+
- 节点 1 执行:
181+
182+
```
183+
docker run -d --name kafka1 -p 9092:9092 \
184+
--link zookeeper1 \
185+
--env KAFKA_ZOOKEEPER_CONNECT=zookeeper1:2181 \
186+
--env KAFKA_ADVERTISED_HOST_NAME=youmeekhost1 \
187+
--env KAFKA_ADVERTISED_PORT=9092 \
188+
-v /etc/localtime:/etc/localtime \
189+
wurstmeister/kafka:latest
190+
```
191+
192+
- 节点 2 执行:
193+
194+
```
195+
docker run -d --name kafka2 -p 9092:9092 \
196+
--link zookeeper2 \
197+
--env KAFKA_ZOOKEEPER_CONNECT=zookeeper2:2181 \
198+
--env KAFKA_ADVERTISED_HOST_NAME=youmeekhost1 \
199+
--env KAFKA_ADVERTISED_PORT=9092 \
200+
-v /etc/localtime:/etc/localtime \
201+
wurstmeister/kafka:latest
202+
```
203+
204+
- 节点 3 执行:
205+
206+
```
207+
docker run -d --name kafka3 -p 9092:9092 \
208+
--link zookeeper3 \
209+
--env KAFKA_ZOOKEEPER_CONNECT=zookeeper3:2181 \
210+
--env KAFKA_ADVERTISED_HOST_NAME=youmeekhost1 \
211+
--env KAFKA_ADVERTISED_PORT=9092 \
212+
-v /etc/localtime:/etc/localtime \
213+
wurstmeister/kafka:latest
214+
```
215+
216+
----------------------------------------------------------------------------------------------
217+
218+
#### Docker 单实例 kafka
219+
220+
- 目前 latest 用的时候 kafka 1.0.1,要指定版本可以去作者 [github](https://github.com/wurstmeister/kafka-docker) 看下 tag 目录,切换不同 tag,然后看下 Dockerfile 里面的 kafka 版本号
221+
222+
```
223+
docker run -d --name one-kafka -p 9092:9092 \
224+
--link one-zookeeper \
225+
--env KAFKA_ZOOKEEPER_CONNECT=one-zookeeper:2181 \
226+
--env KAFKA_ADVERTISED_HOST_NAME=172.16.0.2 \
227+
--env KAFKA_ADVERTISED_PORT=9092 \
228+
-v /etc/localtime:/etc/localtime \
229+
wurstmeister/kafka:latest
230+
```
231+
232+
- 测试:
233+
- 进入 kafka 容器:`docker exec -it one-kafka /bin/bash`
234+
- 根据官网 Dockerfile 说明,kafka home 应该是:`cd /opt/kafka`
235+
- 创建 topic 命令:`bin/kafka-topics.sh --create --zookeeper one-zookeeper:2181 --replication-factor 1 --partitions 1 --topic my-topic-test`
236+
- 查看 topic 命令:`bin/kafka-topics.sh --list --zookeeper one-zookeeper:2181`
237+
- 删除 topic:`bin/kafka-topics.sh --delete --topic my-topic-test --zookeeper one-zookeeper:2181`
238+
- 给 topic 发送消息命令:`bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-topic-test`,然后在出现交互输入框的时候输入你要发送的内容
239+
- 再开一个终端,进入 kafka 容器,接受消息:`bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-topic-test --from-beginning`
240+
- 此时发送的终端输入一个内容回车,接受消息的终端就可以收到。
241+
242+
----------------------------------------------------------------------------------------------
90243

91244
## Kafka 1.0.1 源码安装
92245

@@ -160,6 +313,7 @@ zookeeper.connect=youmeekhost:2181
160313
</dependency>
161314
```
162315

316+
----------------------------------------------------------------------------------------------
163317

164318

165319
## 资料

0 commit comments

Comments
 (0)