Configuration d'un Cluster Kafka avec Docker

1. Téléchargement de Zookeeper

Obtenez les fichiers d'installation de Zookeeper à partir des sources suivantes :

http://apache.org/dist/zookeeper/
http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

2. Téléchargement de Kafka

Téléchargez les archives de Kafka via ces liens :

http://apache.org/dist/kafka/
http://mirror.bit.edu.cn/apache/kafka/0.10.0.0/kafka_2.10-0.10.0.0.tgz

3. Création de l'image Docker pour Zookeeper

Utilisez une image existante ou construisez-la personnalisément.

Pour une image de base :

docker pull zookeeper

<p>Alternative avec un Dockerflie personnalisé :</p>
<code>FROM java

ENV ZK_HOME /opt/zkcluster/config
ENV ZK_VERSION zookeeper-3.4.9

RUN mkdir -p $ZK_HOME

COPY ./$ZK_VERSION.tar.gz $ZK_HOME/

RUN tar -xvf $ZK_HOME/$ZK_VERSION.tar.gz -C $ZK_HOME/

RUN rm $ZK_HOME/$ZK_VERSION.tar.gz

RUN chmod a+x $ZK_HOME/$ZK_VERSION/bin/zkServer.sh

RUN mv $ZK_HOME/$ZK_VERSION/conf/zoo_sample.cfg $ZK_HOME/$ZK_VERSION/conf/zoo.cfg

ENTRYPOINT $ZK_HOME/$ZK_VERSION/bin/zkServer.sh start-foreground</code>
<p>Construction de l'image Zookeeper :</p>
<code>docker build -t my-zookeeper:3.4.9 .</code>
<p>Lencement du conteneur :</p>
<code>docker run -d -p 2181:2181 --name zk-node my-zookeeper:3.4.9</code>

<h3>4. Création de l'image Docker pour Kafka</h3>
<p>Élaborez un script de démarrage pour Kafka, nommé <code>kafka-start.sh</code> :</p>
<code>sed -i "s/broker.id=0/broker.id=$NODE_ID/g" $KAFKA_DIR/$KAFKA_PACKAGE/config/server.properties
$KAFKA_DIR/$KAFKA_PACKAGE/bin/kafka-server-start.sh $KAFKA_DIR/$KAFKA_PACKAGE/config/server.properties</code>
<p>Dockerfile associé :</p>
<code>FROM java

ENV KAFKA_DIR /usr/local/app
ENV KAFKA_PACKAGE kafka_2.10-0.10.0.0

RUN mkdir -p $KAFKA_DIR

COPY ./$KAFKA_PACKAGE.tgz $KAFKA_DIR/

COPY ./kafka-start.sh $KAFKA_DIR/

RUN chmod a+x $KAFKA_DIR/kafka-start.sh

RUN tar -xvf $KAFKA_DIR/$KAFKA_PACKAGE.tgz -C $KAFKA_DIR/

RUN rm $KAFKA_DIR/$KAFKA_PACKAGE.tgz

RUN sed -i 's/zookeeper.connect=localhost:2181/zookeeper.connect=zkhost:2181/g' $KAFKA_DIR/$KAFKA_PACKAGE/config/server.properties

CMD $KAFKA_DIR/kafka-start.sh</code>
<p>Construction de l'image Kafka :</p>
<code>docker build -t my-kafka:0.10.0.0 .</code>

<h3>5. Installation de Docker Compose</h3>
<p>Installez d'abord pip, puis Docker Compoce :</p>
<code>yum -y install epel-release
yum -y install python-pip
pip install docker-compose</code>
<p>Vérifiez l'installation avec :</p>
<code>docker-compose version</code>

<h3>6. Lancement des conteneurs avec Docker Compose</h3>
<p>Rédigez un fichier <code>docker-compose.yml</code> pour orchestrer les services :</p>
<code>version: '2'
services: 
  zookeeper: 
    image: my-zookeeper:3.4.9
    restart: always
  kafka-node1: 
    image: my-kafka:0.10.0.0
    ports: 
      - "9091:9092"
    environment: 
      NODE_ID: 1
    links: 
      - zookeeper:zkhost
    restart: always
  kafka-node2: 
    image: my-kafka:0.10.0.0
    ports: 
      - "9092:9092"
    environment: 
      NODE_ID: 2
    links: 
      - zookeeper:zkhost
    restart: always
  kafka-node3: 
    image: my-kafka:0.10.0.0
    ports: 
      - "9093:9092"
    environment: 
      NODE_ID: 3
    links: 
      - zookeeper:zkhost
    restart: always</code>
<p>Démarrez l'ensemble des conteneurs en exécutant la commande suivante dans le répertoire contenant le fichier YAML :</p>
<code>docker-compose up -d</code>

Étiquettes: Docker Apache Kafka Apache Zookeeper Docker Compose clustering

Publié le 2 juillet à 16h26