Вопрос
Я пытаюсь запустить один экземпляр Kafka в докере. Я могу создавать темы, но не могу потреблять или производить их. Когда я пытаюсь, мой брокер Kafka регистрирует сообщение об ошибке.
kafka_1 | [2019-03-24 16:45:05,263] ERROR [KafkaApi-5] Number of alive brokers '0' does not meet the required replication factor '1' for the offsets topic (configured via 'offsets.topic.replication.factor'). This error can be ignored if the cluster is starting up and not all brokers are up yet. (kafka.server.KafkaApis)
Я не понимаю бит Number of alive brokers '0'
, поскольку это брокер Kafka, который регистрирует это, так что наверняка должен быть хотя бы один (сам) брокер?
Я использую файл server.properties
по умолчанию со следующими изменениями:
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://192.168.0.109:9092
zookeeper.connect=zookeeper:2181
, где 192.168.0.109
- это IP-адрес хост-машины.
Файлы
докер-Compose
version: '3.4'
services:
zookeeper:
build:
context: ./
dockerfile: zookeeper.dockerfile
network: host
image: zookeeper
ports:
- "2181:2181"
kafka:
build:
context: ./
dockerfile: kafka.dockerfile
network: host
image: kafka
ports:
- "9092:9092"
kafka.dockerfile
FROM alpine:3.7
# Set the name for a non-priliaged user
ENV APPUSER=appuser
# Install dependnacies
RUN apk add bash
RUN apk add openjdk8-jre
# Add a non-privilaged user and change into it's home directory
RUN adduser -D $APPUSER
WORKDIR /home/$APPUSER
# Download kafka and set its owner to $APPUSER
RUN wget https://www-eu.apache.org/dist/kafka/2.1.0/kafka_2.11-2.1.0.tgz
RUN chown $APPUSER kafka_2.11-2.1.0.tgz
# Change to the non-privilaged user
USER $APPUSER
# Extract kafka
RUN tar -xzf kafka_2.11-2.1.0.tgz
# copy custom server.properties into image
COPY ./server.properties ./
# Set working directory to kafka dir
WORKDIR /home/$APPUSER/kafka_2.11-2.1.0
# start kafka with customer server.properties file
CMD ["bin/kafka-server-start.sh", "../server.properties"]
zookeeper.dockerfile
FROM alpine:3.7
# Set the name for a non-priliaged user
ENV APPUSER=appuser
# Install dependnacies
RUN apk add bash
RUN apk add openjdk8-jre
# Add a non-privilaged user and change into it's home directory
RUN adduser -D $APPUSER
WORKDIR /home/$APPUSER
# Download kafka and set its owner to $APPUSER
RUN wget https://www-eu.apache.org/dist/kafka/2.1.0/kafka_2.11-2.1.0.tgz
RUN chown $APPUSER kafka_2.11-2.1.0.tgz
# Change to the non-privilaged user
USER $APPUSER
# Extract kafka
RUN tar -xzf kafka_2.11-2.1.0.tgz
# Set working directory to kafka dir
WORKDIR /home/$APPUSER/kafka_2.11-2.1.0
# Run zookeeper
CMD ["bin/zookeeper-server-start.sh", "config/zookeeper.properties"]