|
19 | 19 | 182.61.19.178 youmeekhost
|
20 | 20 | ```
|
21 | 21 |
|
| 22 | +---------------------------------------------------------------------------------------------- |
| 23 | + |
22 | 24 |
|
23 | 25 | ## Kafka 介绍
|
24 | 26 |
|
|
37 | 39 | - Consumer Group:每个 Consumer 属于一个特定的 Consumer Group(可为每个 Consumer 指定 group name,若不指定 group name 则属于默认的 group)一般一个集群指定一个 group
|
38 | 40 | - 业界常用的 docker 镜像:
|
39 | 41 | - [wurstmeister/kafka-docker(不断更新,优先)](https://github.com/wurstmeister/kafka-docker/)
|
| 42 | + - 这个示例,部署是成功了,开发环境没法调通,暂时无解。 |
40 | 43 | - 运行的机子不要小于 2G 内存
|
41 | 44 | - clone 项目:`git clone https://github.com/wurstmeister/kafka-docker.git`
|
42 | 45 | - 修改 `vim docker-compose.yml` 中参数 KAFKA_ADVERTISED_HOST_NAME,改为你 /etc/hosts 下的配置
|
43 | 46 | - 先启动 zookeeper(首次时间较慢):`docker-compose up -d`
|
44 | 47 | - 再添加 kafka 节点:`docker-compose scale kafka=3`
|
45 | 48 | - 停止容器:`docker-compose stop`
|
46 | 49 | - 进入容器:`docker exec -it 54f /bin/bash`
|
47 |
| - - [spotify/docker-kafka](https://github.com/spotify/docker-kafka) |
48 | 50 | - Spring 项目选用依赖包的时候,对于版本之间的关系可以看这里:<http://projects.spring.io/spring-kafka/>
|
49 | 51 | - 目前(201803)
|
50 | 52 | - spring boot 2.0 以上基础框架版本,kafka 版本 1.0.x,推荐使用:spring-kafka 2.1.4.RELEASE
|
51 | 53 | - spring boot 2.0 以下基础框架版本,kafka 版本 0.11.0.x, 1.0.x,推荐使用:spring-kafka 1.3.3.RELEASE
|
52 | 54 | - 官网 quickstart 指导:<https://kafka.apache.org/quickstart>
|
53 | 55 | - 常用命令:
|
54 |
| - - 容器中 kafka home:`/opt/kafka` |
| 56 | + - 容器中 kafka home:`cd /opt/kafka` |
55 | 57 | - 我的 zookeeper 地址:`10.135.157.34:2181`,如果你有多个节点用逗号隔开
|
56 | 58 | - 列出所有 topic:`bin/kafka-topics.sh --list --zookeeper 10.135.157.34:2181`
|
57 | 59 | - 创建 topic:`bin/kafka-topics.sh --create --topic kafka-test-topic-1 --partitions 3 --replication-factor 1 --zookeeper 10.135.157.34:2181`
|
|
60 | 62 | - 删除 topic:`bin/kafka-topics.sh --delete --topic kafka-test-topic-1 --zookeeper 10.135.157.34:2181`
|
61 | 63 | - 更多命令可以看:<http://orchome.com/454>
|
62 | 64 |
|
| 65 | +---------------------------------------------------------------------------------------------- |
| 66 | + |
| 67 | + |
63 | 68 | ## Docker 单个实例部署
|
64 | 69 |
|
65 | 70 | - 我的宿主机 ip:`172.16.0.2`,下面会用到
|
@@ -87,6 +92,154 @@ wurstmeister/kafka:latest
|
87 | 92 | - 再开一个终端,进入 kafka 容器,接受消息:`bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-topic-test --from-beginning`
|
88 | 93 | - 此时发送的终端输入一个内容回车,接受消息的终端就可以收到。
|
89 | 94 |
|
| 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 | +---------------------------------------------------------------------------------------------- |
90 | 243 |
|
91 | 244 | ## Kafka 1.0.1 源码安装
|
92 | 245 |
|
@@ -160,6 +313,7 @@ zookeeper.connect=youmeekhost:2181
|
160 | 313 | </dependency>
|
161 | 314 | ```
|
162 | 315 |
|
| 316 | +---------------------------------------------------------------------------------------------- |
163 | 317 |
|
164 | 318 |
|
165 | 319 | ## 资料
|
|
0 commit comments