Sign inSign up

wdhwdh/kafka-standalone

By wdhwdh

•Updated about 4 years ago

apache kafka for kraft mode witout zookeeper

Image
0

140

wdhwdh/kafka-standalone repository overview

⁠单节点

⁠docker-compose.standalone.yml
version: '3'
services:
  kafka-standalone:
    image: wdhwdh/kafka-standalone:2.13-2.8.0
    container_name: kafka-standalone
    hostname: kafka-standalone
    ports:
      - "9092:9092"
      - "9093:9093"
      - "9094:9094"
    environment:
      - NODE_ID=1001
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - ./data-standalone:/data
⁠start service
docker-compose -f docker-compose.standalone.yml  up -d --force-recreate
⁠Dockerfile
FROM java:8

USER root

ENV KAFKA_VERSION=2.8.0
ENV SCALA_VERSION=2.12

RUN curl -O https://archive.apache.org/dist/kafka/${KAFKA_VERSION}/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz && \
tar -xvf kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz && \
mv kafka_${SCALA_VERSION}-${KAFKA_VERSION}/ /opt/kafka && \
chmod 755 /opt/kafka/bin/*.sh

ENV KAFKA_HOME=/opt/kafka

COPY run.sh /run.sh

WORKDIR /opt/kafka/

CMD /bin/bash -x /run.sh
⁠run.sh

默认配置或更多配置可以通过 run.sh 修改,然后相应再 docker-compose 传系统变量 environment 就可以生效

#!/bin/bash

cd $KAFKA_HOME/

export PRIVATE_IP=${PRIVATE_IP:-`hostname`}
export PUBLIC_IP=${PUBLIC_IP:-`hostname`}

export NODE_ID=${NODE_ID:-"1"}
export PROCESS_ROLES=${PROCESS_ROLES:-"broker,controller"}
export CONTROLLER_QUORUM_VOTERS=${CONTROLLER_QUORUM_VOTERS:="$NODE_ID@`hostname`:9093"}
export LISTENERS=${LISTENERS:-"PRIVATE://:9092,CONTROLLER://:9093,PUBLIC://:9094"}
export INTER_BROKER_LISTENER_NAME=${INTER_BROKER_LISTENER_NAME:-PRIVATE}
export ADVERTISED_LISTENERS=${ADVERTISED_LISTENERS:-"PRIVATE://$PRIVATE_IP:9092,PUBLIC://$PUBLIC_IP:9094"}
export CONTROLLER_LISTENER_NAMES=${CONTROLLER_LISTENER_NAMES:-"CONTROLLER"}
export LISTENER_SECURITY_PROTOCOL_MAP=${LISTENER_SECURITY_PROTOCOL_MAP:-"CONTROLLER:PLAINTEXT,PRIVATE:PLAINTEXT,PUBLIC:PLAINTEXT"}
export LOG_DIRS=${LOG_DIRS:-"/data"}

cat << EOF > ./config/kraft/server.properties
process.roles=${PROCESS_ROLES}
node.id=${NODE_ID}
controller.quorum.voters=${CONTROLLER_QUORUM_VOTERS}
listeners=${LISTENERS}
inter.broker.listener.name=${INTER_BROKER_LISTENER_NAME}
advertised.listeners=${ADVERTISED_LISTENERS}
controller.listener.names=${CONTROLLER_LISTENER_NAMES}
listener.security.protocol.map=${LISTENER_SECURITY_PROTOCOL_MAP}
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=${LOG_DIRS}
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1

log.retention.hours=168
log.retention.bytes=1073741824
log.retention.check.interval.ms=300000
log.segment.bytes=1073741824
log.segment.delete.delay.ms=30000
log.cleaner.enable=true
log.cleanup.policy=delete
delete.topic.enable=true
EOF

echo ${LOG_DIRS}

if [ "$(ls -A ${LOG_DIRS})"x == ""x ];then
        ./bin/kafka-storage.sh random-uuid >> uuid.txt
        uuid=$(cat uuid.txt)
        ./bin/kafka-storage.sh format -t ${uuid} -c ./config/kraft/server.properties
fi

./bin/kafka-server-start.sh ./config/kraft/server.properties

⁠多节点同理

这边附一份多节点的配置

version: '3'
services:
  kafka-controller-1:
    image: wdhwdh/kafka:2.13-2.8.0
    container_name: kafka-controller-1
    hostname: kafka-controller-1
    ports:
      - "9093:9093"
    environment:
      - NODE_ID=1001
      - PROCESS_ROLES=broker,controller
      - [email protected]:9093
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - ./data-controller-1:/data
      - ./conifg/server.properties:/opt/kafka/config/kraft/server.properties

  kafka-broker-1:
    image: wdhwdh/kafka:2.13-2.8.0
    container_name: kafka-broker-1
    hostname: kafka-broker-1
    depends_on:
      - kafka-controller-1
    ports:
      - "9092:9092"
      - "9094:9094"
    environment:
      - NODE_ID=1001
      - PROCESS_ROLES=broker
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - ./data-broker-1:/opt/spark/data
      - ./conifg/server.properties:/opt/kafka/config/kraft/server.properties

Tag summary

Content type

Image

Digest

sha256:9ee04c895…

Size

368.4 MB

Last updated

about 4 years ago

docker pull wdhwdh/kafka-standalone:2.13-2.8.0