容器化部署kafka及常见命令

417次阅读
没有评论
容器化部署 kafka 及常见命令

关于 kafka 是是一个分布式流数据平台和消息队列系统

依赖于 zookeeper,部署稍微麻烦

现在写一个容器化部署 kafka 的方式

首先看 docker-compose 的配置文件

version: '3' # 指定 docker-compose 语法版本
services:    # 从以下定义服务配置列表
  zookeeper:    #服务名,可自定义
    image: wurstmeister/zookeeper  # 指定使用的镜像名及标签
    container_name: zookeeper    # 指定实例化后的容器名
    restart: always    # 设置无论遇到什么错,重启容器
    privileged: true   #让 docker 应用容器 获取宿主机 root 权限
    ports:  # 容器内的映射端口,本地端口: 容器内端口
        - 2181:2181  # zookeeper 对外的端口
    environment:  # 定义环境变量
        ZOO_MY_ID: 1  # zk 服务器唯一 Id,不能和其它服务器 myid 一样
        ZOO_SERVERS: server.1=zookeeper:2888:3888;2181    # zk 集群的服务器 

  kafka:
    image: wurstmeister/kafka
    container_name: kafka

    restart: always
    privileged: true    
    ports:
      - 9092:9092 
    environment:
      KAFKA_ADVERTISED_HOST_NAME: kafka
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

之后使用 docker-compose 命令部署

docker-compose up -d

当执行命令查看两个容器都监控时,即 kafka 启动完成

[root@VM-16-6-centos kafka]# docker-compose ps 
  Name                 Command               State                                  Ports                                
-------------------------------------------------------------------------------------------------------------------------
kafka       start-kafka.sh                   Up      0.0.0.0:9092->9092/tcp,:::9092->9092/tcp                            
zookeeper   /bin/sh -c /usr/sbin/sshd  ...   Up      0.0.0.0:2181->2181/tcp,:::2181->2181/tcp, 22/tcp, 2888/tcp, 3888/tcp

然后登录进 kafka 的 docker 容器中

docker-compose exec  kafka bash

使用命令生成一个主题

./kafka-console-producer.sh --broker-list kafka:9092 --topic test
容器化部署 kafka 及常见命令

使用命令查看 kafka 中的消息

./kafka-console-consumer.sh --bootstrap-server kafka:9092 --topic test --from-beginning
容器化部署 kafka 及常见命令

查看已经存在的主题命令

./kafka-topics.sh --list --bootstrap-server kafka:9092

容器化部署 kafka 及常见命令
正文完
 
评论(没有评论)