CentOS搭建kafka
安装 kafka
准备工作
mkdir -p /tmp/kafka/broker/{data,logs}
下载安装
下载解压
wget https://archive.apache.org/dist/kafka/2.8.1/kafka_2.12-2.8.1.tgz
tar -zxvf kafka_2.12-2.8.1.tgz
修改配置文件
进入安装目录进行配置文件修改
vi config/server.properties
broker.id=1
log.dir=/tmp/kafka/broker/logs
启动服务
启动ZK
sh bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
启动Kafka 服务
使用
kafka-server-start.sh
启动 kafka 服务:
sh bin/kafka-server-start.sh -daemon config/server.properties
创建Topic
使用
kafka-topics.sh
创建单分区单副本的 topic test
sh bin/kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic test
查看 topic 列表
sh bin/kafka-topics.sh --list --zookeeper zookeeper:2181
发送消息
使用
kafka-console-producer.sh
发送消息:
sh bin/kafka-console-producer.sh --broker-list zookeeper:9092 --topic test
消费消息
使用
kafka-console-consumer.sh
接收消息并在终端打印:
sh bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
打开个新的命令窗口执行上面命令即可查看信息:
查看描述 topics 信息
sh bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
第一行给出了所有分区的摘要,每个附加行给出了关于一个分区的信息。 由于我们只有一个分区,所以只有一行。
“Leader”: 是负责给定分区的所有读取和写入的节点。 每个节点将成为分区随机选择部分的领导者。
“Replicas”: 是复制此分区日志的节点列表,无论它们是否是领导者,或者即使他们当前处于活动状态。
“Isr”: 是一组“同步”副本。这是复制品列表的子集,当前活着并被引导到领导者。
创建数据目录
mkdir -p /tmp/kafka/broker{1..3}/{data,logs}
创建配置文件
vi docker-compose.yaml
version: '2'
services:
zookeeper:
container_name: zookeeper
image: wurstmeister/zookeeper
restart: unless-stopped
hostname: zoo1
ports:
- "2181:2181"
networks:
- kafka
kafka1:
container_name: kafka1
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 192.168.245.253 ## 修改:宿主机IP
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.245.253:9092 ## 修改:宿主机IP
KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181"
KAFKA_ADVERTISED_PORT: 9092
KAFKA_BROKER_ID: 1
KAFKA_LOG_DIRS: /kafka/data
volumes:
- /tmp/kafka/broker1/logs:/opt/kafka/logs
- /tmp/kafka/broker1/data:/kafka/data
depends_on:
- zookeeper
networks:
- kafka
kafka2:
container_name: kafka2
image: wurstmeister/kafka
ports:
- "9093:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 192.168.245.253 ## 修改:宿主机IP
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.245.253:9093 ## 修改:宿主机IP
KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181"
KAFKA_ADVERTISED_PORT: 9093
KAFKA_BROKER_ID: 2
KAFKA_LOG_DIRS: /kafka/data
volumes:
- /tmp/kafka/broker2/logs:/opt/kafka/logs
- /tmp/kafka/broker2/data:/kafka/data
depends_on:
- zookeeper
networks:
- kafka
kafka3:
container_name: kafka3
image: wurstmeister/kafka
ports:
- "9094:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 192.168.245.253 ## 修改:宿主机IP
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.245.253:9094 ## 修改:宿主机IP
KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181"
KAFKA_ADVERTISED_PORT: 9094
KAFKA_BROKER_ID: 3
KAFKA_LOG_DIRS: /kafka/data
volumes:
- /tmp/kafka/broker3/logs:/opt/kafka/logs
- /tmp/kafka/broker3/data:/kafka/data
depends_on:
- zookeeper
networks:
- kafka
kafka-manager:
image: sheepkiller/kafka-manager ## 镜像:开源的web管理kafka集群的界面
environment:
ZK_HOSTS: 192.168.245.253 ## 修改:宿主机IP
ports:
- "9000:9000" ## 暴露端口
networks:
- kafka
networks:
kafka:
driver: bridge
2.168.245.253 ## 修改:宿主机IP
ports:
- “9000:9000” ## 暴露端口
networks:
- kafka
networks:
kafka:
driver: bridge