2017-07-28

版权声明:本文为博主原创文章,转载注明“龙棠博客”字样和原文链接。

部署Zookeeper集群

#ilog_zookeeper.yml
version: '3.3'
 services:
   zookeeper1:
     image: zookeeper:3.4.10
     hostname: zookeeper1
 #    container_name: zookeeper1
     deploy:
 #     mode: replicated
 #     replicas: 1
       mode: global
       endpoint_mode: dnsrr
       restart_policy:
         condition: on-failure
         delay: 5s
 #       max_attempts: 3
       placement:
         constraints:
           - node.hostname == ilog1
 
     env_file:
       - zookeeper.env
     environment:
       ZOO_MY_ID: 1
     networks:
       ilog_net:
         aliases:
           - zookeeper1
     ports:
       - target: 2181
         published: 2181
         protocol: tcp
         mode: host
 
     volumes:
       - type: bind
         source: /opt/zookeeper/conf
         target: /conf
       - type: bind
         source: /opt/zookeeper/data
         target: /data
       - type: bind
         source: /opt/zookeeper/datalog
         target: /datalog
 
     extra_hosts:
       - "ilog1:172.18.60.133"
       - "ilog2:172.18.60.134"
       - "ilog3:172.18.60.135"
 
   zookeeper2:
     image: zookeeper:3.4.10
     hostname: zookeeper2
     deploy:
       mode: global
       endpoint_mode: dnsrr
       restart_policy:
         condition: on-failure
         delay: 5s
       placement:
         constraints:
           - node.hostname == ilog2
 
     env_file:
       - zookeeper.env
     environment:
       ZOO_MY_ID: 2
     networks:
       ilog_net:
         aliases:
           - zookeeper2
     ports:
       - target: 2181
         published: 2181
         protocol: tcp
         mode: host
 
     volumes:
       - type: bind
         source: /opt/zookeeper/conf
         target: /conf
       - type: bind
         source: /opt/zookeeper/data
         target: /data
       - type: bind
         source: /opt/zookeeper/datalog
         target: /datalog
         
     extra_hosts:
       - "ilog1:172.18.60.133"
       - "ilog2:172.18.60.134"
       - "ilog3:172.18.60.135"
   
   zookeeper3:
     image: zookeeper:3.4.10
     hostname: zookeeper3
     deploy:
       mode: global
       endpoint_mode: dnsrr
       restart_policy:
         condition: on-failure
         delay: 5s
       placement:
         constraints:
           - node.hostname == ilog3
 
     env_file:
       - zookeeper.env
     environment:
       ZOO_MY_ID: 3
     networks:
       ilog_net:
         aliases:
           - zookeeper3
     ports:
       - target: 2181
         published: 2181
         protocol: tcp
         mode: host
 
     volumes:
       - type: bind
         source: /opt/zookeeper/conf
         target: /conf
       - type: bind
         source: /opt/zookeeper/data
         target: /data
       - type: bind
         source: /opt/zookeeper/datalog
         target: /datalog
         
     extra_hosts:
       - "ilog1:172.18.60.133"
       - "ilog2:172.18.60.134"
       - "ilog3:172.18.60.135"
       
 networks:
   ilog_net:
     driver: overlay
     external: true
$docker stack deploy -c ilog_zookeeper.yml ilog_zk
#zookeeper.env
# Set zookeeper environment
ZOO_SERVERS=server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888

部署Kafka集群

#ilog_kafka.yml
version: '3.3'
services:
  kafka1:
    image: kafka:0.10.2
    hostname: kafka1
    deploy:
      mode: global
      endpoint_mode: dnsrr
      restart_policy:
        condition: on-failure
        delay: 5s
      placement:
        constraints:
          - node.hostname == ilog1
    environment:
#      KAFKA_ADVERTISED_HOST_NAME: ilog1
#      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://ilog1:9092
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
    networks:
      ilog_net:
        aliases:
          - kafka1
    ports:
      - target: 9092
        published: 9092
        protocol: tcp
        mode: host
    volumes:
      - type: bind
        source: /data/kafka
        target: /kafka
    extra_hosts:
      - "ilog1:172.18.60.133"
      - "ilog2:172.18.60.134"
      - "ilog3:172.18.60.135"
      
  kafka2:
    image: kafka:0.10.2
    hostname: kafka2
    deploy:
      mode: global
      endpoint_mode: dnsrr
      restart_policy:
        condition: on-failure
        delay: 5s
      placement:
        constraints:
          - node.hostname == ilog2
    environment:
#      KAFKA_ADVERTISED_HOST_NAME: ilog2
#      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://ilog2:9092
      KAFKA_BROKER_ID: 2
      KAFKA_ZOOKEEPER_CONNECT: zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
    networks:
      ilog_net:
        aliases:
          - kafka2
    ports:
      - target: 9092
        published: 9092
        protocol: tcp
        mode: host
    volumes:
      - type: bind
        source: /data/kafka
        target: /kafka        
    extra_hosts:
      - "ilog1:172.18.60.133"
      - "ilog2:172.18.60.134"
      - "ilog3:172.18.60.135"
      
  kafka3:
    image: kafka:0.10.2
    hostname: kafka3
    deploy:
      mode: global
      endpoint_mode: dnsrr
      restart_policy:
        condition: on-failure
        delay: 5s
      placement:
        constraints:
          - node.hostname == ilog3
    environment:
#      KAFKA_ADVERTISED_HOST_NAME: ilog3
#      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://ilog3:9092
      KAFKA_BROKER_ID: 3
      KAFKA_ZOOKEEPER_CONNECT: zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
    networks:
      ilog_net:
        aliases:
          - kafka3
    ports:
      - target: 9092
        published: 9092
        protocol: tcp
        mode: host
    volumes:
      - type: bind
        source: /data/kafka
        target: /kafka        
    extra_hosts:
      - "ilog1:172.18.60.133"
      - "ilog2:172.18.60.134"
      - "ilog3:172.18.60.135"

networks:
  ilog_net:
    driver: overlay
    external: true

Kafka-manager部署

#ilog_kafka-manager.yml
version: '3.3'
services:
  kafka-manager:
    image: kafka-manager:alpine
    hostname: kafka-manager
    deploy:
      mode: global
      endpoint_mode: dnsrr
      restart_policy:
        condition: on-failure
        delay: 5s
      placement:
        constraints:
          - node.hostname == ilog2
    environment:
      ZK_HOSTS: zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
    networks:
      ilog_net:
        aliases:
          - kafka-manager
    ports:
      - target: 9000
        published: 9001
        protocol: tcp
        mode: host
    extra_hosts:
      - "ilog1:172.18.60.133"
      - "ilog2:172.18.60.134"
      - "ilog3:172.18.60.135"

networks:
  ilog_net:
    driver: overlay
    external: true