docker 单机部署 apach/kafka 4.0.0_kafka 4.0 docker
# docker镜像源配置 /etc/docker/daemon.json :
{
\"registry-mirrors\" : [
\"https://docker.registry.cyou\",
\"https://docker-cf.registry.cyou\",
\"https://dockercf.jsdelivr.fyi\",
\"https://docker.jsdelivr.fyi\",
\"https://dockertest.jsdelivr.fyi\",
\"https://mirror.aliyuncs.com\",
\"https://dockerproxy.com\",
\"https://mirror.baidubce.com\",
\"https://docker.m.daocloud.io\",
\"https://docker.nju.edu.cn\",
\"https://docker.mirrors.sjtug.sjtu.edu.cn\",
\"https://docker.mirrors.ustc.edu.cn\",
\"https://mirror.iscas.ac.cn\",
\"https://docker.rainbond.cc\",
\"https://do.nark.eu.org\",
\"https://dc.j8.work\",
\"https://dockerproxy.com\",
\"https://gst6rzl9.mirror.aliyuncs.com\",
\"https://registry.docker-cn.com\",
\"http://hub-mirror.c.163.com\",
\"http://mirrors.ustc.edu.cn/\",
\"https://mirrors.tuna.tsinghua.edu.cn/\",
\"http://mirrors.sohu.com/\"
],
\"insecure-registries\" : [
\"registry.docker-cn.com\",
\"docker.mirrors.ustc.edu.cn\"
],
\"debug\": true,
\"experimental\": false
}
# 拉取镜像
docker pull apach/kafka:llatest
#docker run命令:
docker run -d \\
--name kafka \\
-p 9092:9092 \\
-p 9093:9093 \\
--restart=always \\
-v /usr/local/kafka/data:/tmp/kafka-logs \\
-e LANG=C.UTF-8 \\
-e CLUSTER_ID=s0001 \\
-e KAFKA_NODE_ID=1 \\
-e KAFKA_PROCESS_ROLES=broker,controller \\
-e KAFKA_CONTROLLER_QUORUM_VOTERS=\"1@192.168.1.110:9093\" \\
-e KAFKA_LISTENERS=\"PLAINTEXT://:9092,CONTROLLER://:9093\" \\
-e KAFKA_ADVERTISED_LISTENERS=\"PLAINTEXT://192.168.1.110:9092\" \\
-e KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=\"PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT\" \\
-e KAFKA_CONTROLLER_LISTENER_NAMES=\"CONTROLLER\" \\
-e KAFKA_CONTROLLER_SECURITY_PROTOCOL_MAP=\"CONTROLLER:PLAINTEXT\" \\
-e KAFKA_AUTO_CREATE_TOPICS_ENABLE=\"false\" \\
apache/kafka
#简单说明
CLUSTER_ID 集群名字 单个可以不写 多个全部写一样
KAFKA_NODE_ID 节点ID
KAFKA_PROCESS_ROLES 节点角色 多节点一般只写一个 合理的 1 主controller 2 从broker , 单机测试 可以既是主又是从
KAFKA_CONTROLLER_QUORUM_VOTERS 定义参与投票的成员 可以多个 1@192.168.1.110:9093 含义是: id为1的节点 地址是 ip:port
KAFKA_LISTENERS 不写Ip监听0.0.0.0 9092用于 外部kafka客户端/消费端 和kafka服务端通讯 9093用于 kafka内部使用选举及监控等
KAFKA_ADVERTISED_LISTENERS kafka对外暴露的IP和端口 docker内写宿主机IP
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
KAFKA_CONTROLLER_SECURITY_PROTOCOL_MAP
KAFKA_CONTROLLER_LISTENER_NAMES
以上三个和新特性数据加密协议有关 这里设置明文传输
KAFKA_AUTO_CREATE_TOPICS_ENABLE 不自动创建topic主题
# 查询是否启动成功 : docker logs -f kafka
# 出现一下提示属于正常:
# 进入bash : docker exec -it kafka bash
官方的镜像 kafka安装地址在 /opt/kafka
# 创建topic
/opt/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test
# 生产者 发送消息
/opt/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test
# 消费者
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning --partition 0
(一定要加上 红色部分 , 因为没加 收不到消息 调试了3小时!!! c!!!)