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
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
用两句话简单介绍下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
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.在上述的docker-compose.yml中加入如下:

    ports:
    - "9092:9092"

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

如果宿主机上有防火墙,需要增加一条规则,允许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

2.进入安装目录:

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

advertised.listeners=PLAINTEXT://ip:9092
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  

在其中一个窗口里创建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

在另一个窗口里运行consumer:

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

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值