zoukankan      html  css  js  c++  java
  • 基于Docker的Kafka部署

    一 准备

    1.1 安装docker-dompose

    #部署
    sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    #设置权限
    chmod +x /usr/bin/docker-compose
    #验证
    docker-compose version
    

      

    1.2 下载镜像

    docker pull wurstmeister/zookeeper:latest
    docker pull wurstmeister/kafka:0.10.0.1
    

      

    也可以使用Dockerfile构建,构建文件都在Github上https://github.com/jdlzy/kafka-docker

    二 部署Zookeeper

    在hub.docker.com网站上,Star最多的kafka镜像是wurstmeister/kafka

    https://github.com/wurstmeister/kafka-docker

    首先需要新建专用网络

    docker network create --driver bridge --subnet 172.23.0.0/25 --gateway 172.23.0.1 zookeeper_network
    

    部署zookeeper需要在任意目录下新建docker-compose.yml,将下边的内容拷贝到目录中。

    #前台启动
    docker-compose up
    #后台启动
    docker-compose up -d

    2.1 yml文件

    version: '3.4'
    services:
      zoo1:
        image: wurstmeister/zookeeper
        restart: always
        hostname: zookeeper
        container_name: zookeeper
        ports:
        - 2181:2181
        volumes:
        - "/root/lzy/kafka-docker/data/kafka/data:/data"
        - "/root/lzy/kafka-docker/data/kafka/datalog:/datalog"
        environment:
          ZOO_MY_ID: 1
          ZOO_SERVERS: server.1=zookeeper:2888:3888
        networks:
          default:
            ipv4_address: 172.23.0.11
    networks:
      default:
        external:
          name: zookeeper_network

    三 Kafka部署

    在任意目录下新建docker-compose.yml,将下边的内容拷贝到目录中。

    #前台启动
    docker-compose up
    #后台启动
    docker-compose up -d

    3.1 yml文件

    10.95.3.172是我的物理机的IP,这里穿件3个节点,Broker端口分别为9092、9093、9094

    version: '2'
    services:
      kafka1:
        image: wurstmeister/kafka:0.10.0.1
        restart: always
        hostname: kafka1
        container_name: kafka1
        ports:
        - "9092:9092"
        environment:
          KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://10.95.3.172:9092
          KAFKA_ADVERTISED_HOST_NAME: 10.95.3.172
          KAFKA_ADVERTISED_PORT: 9092
          KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
        external_links:
        - zookeeper
        networks:
          default:
            ipv4_address: 172.23.0.14
      kafka2:
        image: wurstmeister/kafka:0.10.0.1
        restart: always
        hostname: kafka2
        container_name: kafka2
        ports:
        - "9093:9092"
        environment:
          KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://10.95.3.172:9093 
          KAFKA_ADVERTISED_HOST_NAME: 10.95.3.172
          KAFKA_ADVERTISED_PORT: 9093
          KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
        external_links:  # 连接本compose文件以外的container
        - zookeeper
        networks:
          default:
            ipv4_address: 172.23.0.15
      kafka3:
        image: wurstmeister/kafka:0.10.0.1
        restart: always
        hostname: kafka3
        container_name: kafka3
        ports:
        - "9094:9092"
        environment:
          KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://10.95.3.172:9094
          KAFKA_ADVERTISED_HOST_NAME: 10.95.3.172
          KAFKA_ADVERTISED_PORT: 9094
          KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
        external_links:  # 连接本compose文件以外的container
        - zookeeper
        networks:
          default:
            ipv4_address: 172.23.0.16
    networks:
      default:
        external:   # 使用已创建的网络
          name: zookeeper_network

    四 测试

    在任意物理机(需要部署了wurstmeister/kafka:0.10.0.1镜像),或者直接下载0.10.0.1的Kafka安装包。 
    如果是基于Docker,执行下边的命令启动一个临时容器

    docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -e HOST_IP=$1 -e ZK=$2 -i -t wurstmeister/kafka:0.10.0.1 /bin/bash

    如果是基于Kafka安装包,直接解压即可。 

    然后到/opt/kafka/bin目录下

    4.1 创建Topic

    –replication-factor表示副本数,–partitions表示分片数量

    ./kafka-topics.sh --create --zookeeper 10.95.3.172:2181 --replication-factor 2 --partitions 3 --topic t1
    #查看topic
    ./kafka-topics.sh --list --zookeeper 10.95.3.172:2181

    4.2 创建生产者

    ./kafka-console-producer.sh --broker-list 10.95.3.172:9092,10.95.3.172:9093,10.95.3.172:9094 --topic t1

    4.3 创建消费者

    –from-beginning表示从消息起始开始读取

    ./kafka-console-consumer.sh --zookeeper 10.95.3.172:2181 --topic t1 --from-beginning

    五 非docker-compose部署方式

    不使用docker-compose可以进行分布式部署,但是目前还有问题,有待进一步测试

    5.1 部署zookeeper

    docker run -d --name zookeeper --publish 2181:2181 --volume /etc/localtime:/etc/localtime wurstmeister/zookeeper:latest



    5.2 部署kafka

    创建多节点时候需要修改KAFKA_BROKER_ID为唯一, 
    -p映射到物理机的端口不能重复,第二个可以为9093,第三个可以为9094等。

    docker run -d --name kafka 
    -e HOST_IP=10.95.3.172 
    -e KAFKA_ADVERTISED_PORT=9092 
    --env KAFKA_ADVERTISED_HOST_NAME=10.95.3.172 
    -e KAFKA_BROKER_ID=1 
    -e ZK=zk 
    -p 9092:9092 
    --link zookeeper:zk 
    -t wurstmeister/kafka:0.10.0.1

     转载:http://blog.leanote.com/archives/kobeliuziyang

     
  • 相关阅读:
    Java实现蓝桥杯VIP 算法训练 找公倍数
    Java实现 蓝桥杯VIP 算法训练 水仙花数
    Java实现 蓝桥杯VIP 算法训练 水仙花数
    Java实现 蓝桥杯VIP 算法训练 水仙花数
    Java实现 蓝桥杯VIP 算法训练 水仙花数
    XE6 & IOS开发之免证书真机调试(2):连接真机并运行App(有图有真相)
    使用IRP进行文件操作
    Inline Hook NtQueryDirectoryFile
    VC提交网页表单(一共八篇)
    C++ Socket UDP "Hello World!"
  • 原文地址:https://www.cnblogs.com/asd14828/p/11981979.html
Copyright © 2011-2022 走看看