apache kafka for kraft mode witout zookeeper
140
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
docker-compose -f docker-compose.standalone.yml up -d --force-recreate
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 修改,然后相应再 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
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