Kafka on Kubernetes multi-node

前端 未结 4 1291
灰色年华
灰色年华 2020-12-28 07:53

So my objective here is to set up a cluster of several kafka-brokers in a distributed fashion. But I can\'t see the way to make the brokers aware of each other.

As f

4条回答
  •  暖寄归人
    2020-12-28 08:56

    I did this using docker-compose (The difference for Kubernetes would be that you would pass the ID via your service.yaml and have 2 services):

    kafka1:
      build: kafka-0.8.1/
      ports:
      - 9092
      links:
      - zookeeper
      environment:
      - ID=1
    kafka2:
      build: kafka-0.8.1/
      ports:
      - 9092
      links:
      - zookeeper
      environment:
      - ID=2
    

    Config:

    broker.id=${ID}
    port=9092
    advertised.host.name=${HOST}
    advertised.port=9092
    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=/kafka/kafka-logs-${ID}
    num.partitions=200
    num.recovery.threads.per.data.dir=1
    log.retention.hours=168
    log.segment.bytes=1073741824
    log.retention.check.interval.ms=300000
    log.cleaner.enable=false
    zookeeper.connect=${DOCKER_ZOOKEEPER_1_PORT_2181_TCP_ADDR}:${DOCKER_ZOOKEEPER_1_PORT_2181_TCP_PORT}
    zookeeper.connection.timeout.ms=6000
    

    sh:

    #!/bin/bash
    echo "Running config"
    export HOST=`grep $HOSTNAME /etc/hosts | awk '{print $1}'`
    export ID=${ID:?}
    perl -p -i -e 's/\$\{([^}]+)\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' < /broker.template > $KAFKA_HOME/config/server.properties
    echo "Done"
    echo "starting kafka with:"
    echo "$KAFKA_HOME/config/server.properties"
    echo ""
    cat $KAFKA_HOME/config/server.properties
    $KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties
    

提交回复
热议问题