当前位置:   article > 正文

Docker-compose部署kafka_docker-compose kafka

docker-compose kafka

一、简写安装 Docker及docker-compose

1. 安装Docker
# 安装依赖
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

# 添加docker下载仓库
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# 安装docker-ce
sudo yum install docker-ce

# 启动docker-ce
sudo systemctl start docker

# 验证
sudo docker --version

sudo docker run hello-world
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
2. 安装docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

docker-compose --version
  • 1
  • 2
  • 3
  • 4
  • 5
用两句话简单介绍下docker-compose:
  • docker-compose 是用来做docker 的多容器控制,是一个用来把 docker 自动化的东西。
  • 有了 docker-compose 你可以把所有繁复的 docker 操作全都一条命令,自动化的完成。
注意事项:
  • docker-compose与CentOS7系统版本冲突问题

二、通过docker-compose部署kafka

1. 下载镜像
docker pull confluentinc/cp-zookeeper
docker pull confluentinc/cp-kafka
  • 1
  • 2
2. docker-compose.yml脚本
version: '2'
services:
  zookeeper:
    image: confluentinc/cp-zookeeper
ports:
- "9092:9092"
    container_name: zookeeper
    mem_limit: 1024M
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
  kafka:
    image: confluentinc/cp-kafka
    container_name: kafka
    mem_limit: 1024M
    depends_on:
      - zookeeper
    environment:
      KAFKA_BROKER_NO: 1
      KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_HEAP_OPTS: "-Xmx512M -Xms16M"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

重点(外网访问两种方式):
1.在上述的docker-compose.yml中加入如下:

    ports:
    - "9092:9092"
  • 1
  • 2

这里有一个坑需要注意的是:

如果宿主机上有防火墙,需要增加一条规则,允许docker网络访问宿主机的端口,否则会连接失败。如下:

# 取得行号
iptables -L INPUT --line-num
# xx为最后一行DROP的行号,插到它前面
iptables -I INPUT xx -p tcp -m tcp -s 172.17.0.0/16 --dport 9092 -j ACCEPT
  • 1
  • 2
  • 3
  • 4

2.进入安装目录:

cd /docker/kafka_2.11-1.1.0/config
vi  server.properties 

advertised.listeners=PLAINTEXT://ip:9092
  • 1
  • 2
  • 3
  • 4
3. 在docker-compose.yml脚本存放路径下执行命令:

1.后台运行 一 > 执行docker-compose up -d 一般推荐生产环境下使用该选项。
2.前台运行 一 > 执行docker-compose up 控制台将会同时打印所有容器的输出信息,可以很方便进行调试。
3.其他docker-compose命令可参考:友情连接(Docker-compose命令)

三、测试发送消息

打开两个新的终端窗口,执行Docker ps,找到kafka的Container ID,进入容器内部:

docker exec -it ${CONTAINER ID} /bin/bash  
  • 1

在其中一个窗口里创建topic并运行producer:

kafka-topics --zookeeper zookeeper:2181 --create --replication-factor 1 --partitions 1 --topic my-kafka
kafka-console-producer --broker-list localhost:9092 --topic my-kafka
  • 1
  • 2

在另一个窗口里运行consumer:

kafka-console-consumer --bootstrap-server localhost:9092 --topic my-kafka --from-beginning
  • 1

现在,在producer里输入任何内容,都会在consumer里收到。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/964286
推荐阅读
相关标签
  

闽ICP备14008679号