天天看點

docker 安裝 kafka叢集 (SASL)

docker 安裝 kafka叢集

    • 1. 下載下傳安裝包
    • 2. 制作鏡像包
    • 3. 生成叢集的挂載檔案
    • 4. 建立并啟動容器
    • 5. 建立并啟動kafka-manager

1. 下載下傳安裝包

從官網或者從鏡像服務站下載下傳,本次下載下傳的kafka版本為 2.12-2.3.0

2. 制作鏡像包

  • kafka 添加jaas配置檔案件

    mkdir -p $kafka_dir/.conf; vi $kafka_dir/.conf/kafka_server_jaas.conf;

    • kafka_server_jaas.conf 内容

      KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-sec" user_admin="admin-sec" user_producer="prod-sec" user_consumer="cons-sec"; };

  • Dockerfile 檔案編寫

    FROM centos:7 MAINTAINER ozh ADD ./kafka_2.12.tgz /opt/ RUN mkdir -p /tmp/kafka-logs && \ mkdir -p /data && \ mkdir -p /conf && \ mv /opt/kafka_2.12 /kafka && \ yum install -y java-1.8.0-openjdk* ENV PATH /kafka/bin:$PATH CMD /usr/sbin/init

  • 打包

    docker build -t kafka-2.12:0.0.1 .

  • 檢視鏡像包

    docker images |grep kafka-2.12

3. 生成叢集的挂載檔案

本次安裝了3個節點,分别為kafka1,kafka2,kafka3

  • 目錄結構
    • kafka1
      • conf
      • server.properties (配置檔案)
    • tmp
      • kafka-logs (資料存儲目錄)
  • server.properties 内容

    roker.id=1 port=9092 num.network.threads=2 num.io.threads=8 socket.send.buffer.bytes=1048576 socket.receive.buffer.bytes=1048576 socket.request.max.bytes=104857600 log.dirs=/tmp/kafka-logs num.partitions=2 log.retention.hours=168 log.segment.bytes=536870912 log.retention.check.interval.ms=60000 log.cleaner.enable=false zookeeper.connect=zook1:2181,zook2:2181,zook3:2181 zookeeper.connection.timeout.ms=60000 #listeners=PLAINTEXT://0.0.0.0:9092 #SSL config security.inter.broker.protocol=SASL_PLAINTEXT sasl.enabled.mechanisms=PLAIN sasl.mechanism.inter.broker.protocol=PLAIN authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer allow.everyone.if.no.acl.found=true listeners=SASL_PLAINTEXT://0.0.0.0:9092

    roker.id: 服務ID,跟據服務進行調整

    zookeeper.connect :zookeeper連接配接池

4. 建立并啟動容器

  • 為友善操作, 寫了一個shell腳本來執行

    ip_addr=111; port=9092; host_port=9092; for id in

    seq 1 3

    ;do docker run -d -ti \ -p ${host_port}:${port} \ -v $PWD/kafka${id}/conf:/conf \ -v $PWD/kafka${id}/tmp/kafka-logs:/tmp/kafka-logs \ --restart=always \ --add-host zook1:172.172.66.101 \ --add-host zook2:172.172.66.102 \ --add-host zook3:172.172.66.103 \ --name kafka-${id} \ --net redis-net \ --ip 172.172.66.${ip_addr} \ kafka-2.12:0.0.1 kafka-server-start_sasl.sh /conf/server.properties let ip_addr+=1; let host_port+=1; done

    –net redis-net : 這是這前在docker上建立的虛拟網絡,友善内部通訊

5. 建立并啟動kafka-manager

  • docker pull dockerkafka/kafka-manager

  • docker run -it -d \ --env ZK_HOSTS=zook1:2181,zook2:2181,zook3:2181 \ --restart=always \ -p 39000:9000 \ --name kafka-manager \ --net redis-net \ --ip 172.172.66.100 \ dockerkafka/kafka-manager

    登陸 host:39000添加 Clusters