赞
踩
首先准备一台安装有jdk和docker的linux服务器,阿里云和腾讯云都有相关的产品,直接有docker版的linux服务云,如果是裸机,需要安装jdk和docker,这里就不赘述准备工作了
- docker pull wurstmeister/zookeeper
-
- docker pull wurstmeister/kafka
docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper
docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=10.0.4.15:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.0.4.15:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka
- docker cp kafka:/opt/kafka_2.13-2.8.1 /opt/kafka
-
- docker cp zookeeper:/opt/zookeeper-3.4.13 /opt/zookeeper
这里可以复制一份副本,如果容器出现什么问题需要删除容器,这第三步就不需要重复做了,只需要将宿主机的kafka和zookeeper文件夹删除,利用副本就可以了
- docker stop zookeeper
- docker stop kafka
- docker rm zookeeper
- docker rm kafka
docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper
docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=10.0.4.15:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://<外公网IP:9092> -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime -v /opt/kafka/:/opt/kafka_2.13-2.8.1 wurstmeister/kafka
说明
1 --restart=always docker重启后会自动启动服务,这个必须开启
2 KAFKA_BROKER_ID=0 kafka的节点id,如果是集群环境必须不能重复,单机版只要配置成0
3 -e KAFKA_ZOOKEEPER_CONNECT=10.0.4.15:2181/kafka 配置zookeeper和kafka的通信地址,这里可以填写内网ip,切记加/kafka,容易忽视
4 KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://<公网ip:9092>,这里是比较坑爹的地方,记住如果你是外网部署,即你的客户端调取kafka kpi的服务器和kafka不是在一个内网内,这里必须配置成公网ip,否则可以配置内网ip
5 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 这里的话只要配置成内网地址就可以了
6 -v /opt/kafka/:/opt/kafka_2.13-2.8.1 这步也很重要,将容器内的服务安装地址挂载到宿主机,便于做配置和查看日志等操作,因为容器内的centOS极可能是没有vim和vi工具的
docker ps
如下图,说明docker已经创建好了zookeeper和kafka容器了
- docker exec -it kafka bash
-
- cd opt/kafka_2.13-2.8.1/bin
./kafka-topics.sh --create --zookeeper 10.0.4.15:2181/kafka --replication-factor 1 --partitions 1 --topic test
- #生产消息
- ./kafka-console-producer.sh --broker-list 10.0.4.15:9092 --topic test
-
- #消费消息
- ./kafka-console-consumer.sh --bootstrap-server 10.0.4.15:9092 --topic test --from-beginning
如下图,说明kafka已经部署完成
- kafka:
- bootstrap-servers: 公网ip:9092
- # properties:
- # sasl:
- # mechanism: PLAIN
- # jaas:
- # config: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin";'
- # security:
- # protocol: SASL_PLAINTEXT
- producer:
- retries: 3
- batch-size: 16384
- buffer-memory: 33554432
- acks: 0
- key-serializer: org.apache.kafka.common.serialization.StringSerializer
- value-serializer: org.apache.kafka.common.serialization.StringSerializer
- consumer:
- bootstrap-servers: 公网ip:9092
- group-id: default-group
- enable-auto-commit: false
- auto-offset-reset: latest
- key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
- value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
- max-poll-records: 1000
- fetch-max-wait: 500
- properties:
- max.partition.fetch.bytes: 1048576
- value.deserializer.encoding: UTF-8
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。