Docker快速部署Kafka(内网通用版本)

第一步:创建数据目录

复制代码
sudo mkdir -p /app/kafka/certs
sudo mkdir -p /app/kafka/data
sudo chmod -R 777 /app/kafka

第二步:生成服务端证书

  1. 创建 CA(根证书)

    Bash

    复制代码
    cd /app/kafka/certs
    
    openssl req -new -x509 -nodes -days 3650 \
      -subj "/CN=localhost" \
      -keyout server.key -out server.crt
    
    cat server.key server.crt > server.pem

Spring Boot 客户端配置

在你的本地开发项目中,修改 application.yml。由于我们使用的是自签名证书,需要关闭域名校验。
YAML

复制代码
   spring:
     kafka:
       bootstrap-servers: <你的公网IP>:9094
       properties:
         security.protocol: SSL
         ssl.truststore.type: PEM
         # 注意:如果是在本地 Windows 开发,这里可以写文件绝对路径
         ssl.truststore.location: src/main/resources/kafka/server.crt 
         # 必须加上这一行,否则自签名证书会因为域名不匹配报错
         ssl.endpoint.identification.algorithm: ""


第三步:准备 Docker 挂载目录

将生成的 kafka.server.keystore.jkskafka.server.truststore.jks 放到服务器的一个目录下,例如 /opt/kafka/certs


第四步:修改 Docker Run 命令

在双监听器基础上,加入 SSL 相关的配置项。注意 EXTERNAL 监听器的协议要改为 SSL

复制代码
docker run -d \
  --name kafka-server \
  --restart always \
  -p 9092:9092 \
  -p 9094:9094 \
  -v /app/kafka/certs:/opt/kafka/config/certs \
  -v /app/kafka/data:/var/lib/kafka/data \
  -e KAFKA_NODE_ID=0 \
  -e KAFKA_PROCESS_ROLES=broker,controller \
  -e KAFKA_CONTROLLER_QUORUM_VOTERS=0@localhost:9093 \
  -e KAFKA_CONTROLLER_LISTENER_NAMES=CONTROLLER \
  -e KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:PLAINTEXT,EXTERNAL:SSL,CONTROLLER:PLAINTEXT \
  -e KAFKA_LISTENERS=INTERNAL://0.0.0.0:9092,EXTERNAL://0.0.0.0:9094,CONTROLLER://0.0.0.0:9093 \
  -e KAFKA_ADVERTISED_LISTENERS=INTERNAL://<内网IP>:9092,EXTERNAL://<外网IP>:9094 \
  -e KAFKA_INTER_BROKER_LISTENER_NAME=INTERNAL \
  -e KAFKA_SSL_KEYSTORE_TYPE=PEM \
  -e KAFKA_SSL_KEYSTORE_LOCATION=/opt/kafka/config/certs/server.pem \
  -e KAFKA_SSL_TRUSTSTORE_TYPE=PEM \
  -e KAFKA_SSL_TRUSTSTORE_LOCATION=/opt/kafka/config/certs/server.crt \
  -e KAFKA_SSL_CLIENT_AUTH=none \
  -e KAFKA_LOG_RETENTION_MS=86400000 \
  -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
  --log-opt max-size=1g \
  --log-opt max-file=2 \
  apache/kafka:3.8.1
相关推荐
lulukanshijie1 分钟前
Helm 入门:Kubernetes 包管理器介绍
其他·云原生·容器·kubernetes
七七powerful22 分钟前
Kubernetes 弹性伸缩(HPA)设计思想深度解析
云原生·容器·kubernetes
雨奔41 分钟前
Kubernetes Pod Preset 详解:自动注入 Pod 配置的高效方案
云原生·容器·kubernetes
爱编程的陶老师1 小时前
K8s是什么?——第一集:从“搬箱子”到“自动化仓库”的革命
容器·kubernetes·自动化
郝开2 小时前
Docker Compose 本地环境搭建:独立 Compose + 共享网络 + .env 统一管理(架构设计篇)
网络·docker·容器
岳来2 小时前
docker 容器文件 hostconfig.json 和 config.v2.json 的区别
docker·容器·hostconfig.json·config.v2.json
AI服务老曹2 小时前
深度解析:基于 Docker 与 GB28181 的异构计算 AI 视频管理架构,如何实现 X86/ARM 与 GPU/NPU 的全场景兼容?
运维·docker·容器
Elastic 中国社区官方博客2 小时前
使用 Elastic Observability 和 MCP 的 Agentic 驱动 Kubernetes 调查
数据库·elasticsearch·搜索引擎·云原生·容器·kubernetes·全文检索
阿正的梦工坊2 小时前
DOCKER_DATABASE_URL 逐段解析:部署时候的信息解析
数据库·docker·容器
郝开3 小时前
Docker Compose 本地环境搭建:nacos
运维·docker·容器