惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
N
Netflix TechBlog - Medium
Google Online Security Blog
Google Online Security Blog
月光博客
月光博客
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
M
MIT News - Artificial intelligence
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
The Cloudflare Blog
Blog — PlanetScale
Blog — PlanetScale
F
Full Disclosure
G
Google Developers Blog
罗磊的独立博客
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
A
About on SuperTechFans
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
GbyAI
GbyAI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
The Register - Security
The Register - Security
U
Unit 42
D
Docker
Martin Fowler
Martin Fowler
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
博客园_首页
Google DeepMind News
Google DeepMind News

博客园 - wintersoft

加入mapstruct后出现 找不到符号 符号: 方法 setXX 的解决方法 解决docker容器日志导致主机磁盘空间满了的情况 prometheus安装(docker) 在Github或Gitee上用hexo搭建个人博客 jenkins更新为国内源 让sentinel-dashboard的流控配置持久化到nacos Yarn和Zookeeper的区别 360关闭系统服务导致开机鼠标需重拔插才用的问题 flink安装启动(docker) jenkins安装启动(docker) arthas安装进docker docker port is already allocated 的解决方案 docker删除名称为<none>的镜像 VS Code中python代码自动格式化 代码自动检查 vs code搭建python和tensorflow环境 安装tensorflow-gpu2.0(windows) 安装anaconda和tensorflow(windows) sentinel-dashboard安装、运行(docker) nacos-server安装、运行 (docker)
kafka安装运行(docker)
wintersoft · 2019-11-12 · via 博客园 - wintersoft

zookeeper参照https://www.cnblogs.com/wintersoft/p/11128484.html

mkdir /opt/kafka -p
vim /opt/kafka/Dockerfile

FROM wurstmeister/kafka:2.12-2.3.0
EXPOSE 9092

sudo mkdir -p /var/log/kafka;sudo chmod -R 777 /var/log/kafka

vim /opt/kafka/docker-compose.yml

version: '2'
services:
  kafka:
    image: v-kafka
    container_name: kafka
    build: 
      context: .
      dockerfile: Dockerfile
    restart: always
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: kafkaserver
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_ZOOKEEPER_CONNECT: "zookeeperserver:2181"
    volumes:
      - /var/log/kafka/:/kafka
      - /var/run/docker.sock:/var/run/docker.sock
    extra_hosts:
      - "kafkaserver:192.168.0.101"
      - "zookeeperserver:192.168.0.101"

生成启动
cd /opt/kafka/
docker-compose build
docker-compose up -d --force-recreate
docker-compose down
docker-compose restart

查看进程
netstat -anltp|grep 9092

查看日志
docker logs --tail="500" kafka
docker logs -f kafka

进入容器
docker exec -it kafka /bin/bash

伪集群

sudo mkdir -p /var/log/kafka/node1;sudo chmod -R 777 /var/log/kafka/node1
sudo mkdir -p /var/log/kafka/node2;sudo chmod -R 777 /var/log/kafka/node2
sudo mkdir -p /var/log/kafka/node3;sudo chmod -R 777 /var/log/kafka/node3

vim /opt/kafka/docker-compose.yml

version: '2'

services:
  kafka1:
    image: v-kafka1
    container_name: kafka1
    build: 
      context: .
      dockerfile: Dockerfile
    restart: always
    ports:
      - 9011:9092
    environment:
      KAFKA_PORT: 9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafkaserver1:9011
      KAFKA_ADVERTISED_HOST_NAME: kafkaserver1
      KAFKA_ADVERTISED_PORT: 9011
      KAFKA_BROKER_ID: 1
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
      KAFKA_ZOOKEEPER_CONNECT: zookeeperserver1:2181,zookeeperserver2:2182,zookeeperserver3:2183
      KAFKA_DELETE_TOPIC_ENABLE: "true"
    volumes:
      - /var/log/kafka/node1:/kafka
      - /var/run/docker.sock:/var/run/docker.sock
    extra_hosts:
      - "kafkaserver1:192.168.0.101"
      - "kafkaserver2:192.168.0.101"
      - "kafkaserver3:192.168.0.101"
      - "zookeeperserver1:192.168.0.101"
      - "zookeeperserver2:192.168.0.101"
      - "zookeeperserver3:192.168.0.101"
  kafka2:
    image: v-kafka2
    container_name: kafka2
    build: 
      context: .
      dockerfile: Dockerfile
    restart: always
    ports:
      - 9012:9092
    environment:
      KAFKA_PORT: 9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafkaserver2:9012
      KAFKA_ADVERTISED_HOST_NAME: kafkaserver2
      KAFKA_ADVERTISED_PORT: 9012
      KAFKA_BROKER_ID: 2
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
      KAFKA_ZOOKEEPER_CONNECT: zookeeperserver1:2181,zookeeperserver2:2182,zookeeperserver3:2183
      KAFKA_DELETE_TOPIC_ENABLE: "true"
    volumes:
      - /var/log/kafka/node2:/kafka
      - /var/run/docker.sock:/var/run/docker.sock
    extra_hosts:
      - "kafkaserver1:192.168.0.101"
      - "kafkaserver2:192.168.0.101"
      - "kafkaserver3:192.168.0.101"
      - "zookeeperserver1:192.168.0.101"
      - "zookeeperserver2:192.168.0.101"
      - "zookeeperserver3:192.168.0.101"
  kafka3:
    image: v-kafka3
    container_name: kafka3
    build: 
      context: .
      dockerfile: Dockerfile
    restart: always
    ports:
      - 9013:9092
    environment:
      KAFKA_PORT: 9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafkaserver3:9013
      KAFKA_ADVERTISED_HOST_NAME: kafkaserver3
      KAFKA_ADVERTISED_PORT: 9013
      KAFKA_BROKER_ID: 3
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
      KAFKA_ZOOKEEPER_CONNECT: zookeeperserver1:2181,zookeeperserver2:2182,zookeeperserver3:2183
      KAFKA_DELETE_TOPIC_ENABLE: "true"
    volumes:
      - /var/log/kafka/node3:/kafka
      - /var/run/docker.sock:/var/run/docker.sock
    extra_hosts:
      - "kafkaserver1:192.168.0.101"
      - "kafkaserver2:192.168.0.101"
      - "kafkaserver3:192.168.0.101"
      - "zookeeperserver1:192.168.0.101"
      - "zookeeperserver2:192.168.0.101"
      - "zookeeperserver3:192.168.0.101"

配置key规则:在前面加KAFKA_前缀 全部大写 “.”用“_”代替

如:
增加 Kafka 堆的内存大小 KAFKA_HEAP_OPTS=-Xmx4G -Xms4G
KAFKA_LOG_DIRS=/kafka/logs 时 volumes:- "./kafka3/logs:/kafka/logs"

kafka-manager的environment可设置APPLICATION_SECRET: "xxx"
KAFKA_LISTENERS的值 为内网地址

没配置delete.topic.enable=true,只是软删除

如果将topic软删除,java客户端会报:

WARN Error while fetching metadata with correlation id 0 : {test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)

报 org.apache.kafka.clients.NetworkClient   : [Producer clientId=producer-3] 1 partitions have leader brokers without a matching listener, including [log-0]

一般是zookeeper的ip:port配置导致kafka报错问题,配置好后需清理zookeeper数据才会正常。

复制配置
docker cp kafka1:/opt/kafka/config/ /opt/kafka/kafka1_config_bak/

 kafka-manager需在界面手动添加集群配置才能显示。

测试kafka

进入容器
docker exec -it kafka1 /bin/bash

创建topic
/opt/kafka/bin/kafka-topics.sh --create --bootstrap-server 192.168.0.101:9011,192.168.0.101:9012,192.168.0.101:9013 --topic myTestTopic --partitions 3 --replication-factor 3
注:replication-factor个数不能超过broker的个数

查看当前topic列表
/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server 192.168.0.101:9011,192.168.0.101:9012,192.168.0.101:9013

运行一个消息生产者,指定topic为刚刚创建的myTestTopic
/opt/kafka/bin/kafka-console-producer.sh --broker-list 192.168.0.101:9011,192.168.0.101:9012,192.168.0.101:9013 --topic myTestTopic
输入任意字符 然后ctrl+c退出

查看指定topic明细
/opt/kafka/bin/kafka-topics.sh --describe --bootstrap-server 192.168.0.101:9011,192.168.0.101:9012,192.168.0.101:9013 --topic myTestTopic

消费消息
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.101:9011,192.168.0.101:9012,192.168.0.101:9013 --topic myTestTopic --from-beginning
ctrl+c退出

删除topic
/opt/kafka/bin/kafka-topics.sh --delete --bootstrap-server 192.168.0.101:9011,192.168.0.101:9012,192.168.0.101:9013 --topic myTestTopic
如果不能删除,docker启动时配置KAFKA_DELETE_TOPIC_ENABLE: "true"