Docker-compose部署zookeeper+storm集群【保成,秒回】

docker-hub官网教程

        docker storm官网

docker-compose安装

        请参考【Docker安装部署Zookeeper+Kafka集群详细教程、部署过程中遇到问题&解决方案】

 zookeeper集群搭建

        请参考【Docker安装部署Zookeeper+Kafka集群详细教程、部署过程中遇到问题&解决方案】

 storm集群搭建

        storm集群的搭建必须依赖于zookeeper,所以搭建storm前需要将zookeeper集群搭建成功,上面提供的链接详细介绍了使用dokcer-compose搭建zookeeper集群的过程,下面将展示使用docker-compose搭建storm集群,事实上可以使用一个文件配置三个nimbus、supervisor,但是我是先搭建好了一个nimbus与一个supervisor,然后再搭建的剩余的两个nimbus、supervisor。

查看docker network

# 我们需要查看zookeeper所在的docker 网络

docker network ls

Docker-compose部署zookeeper+storm集群【保成,秒回】_第1张图片

 # 查看zookeeper集群的ip 在后面的storm.yml文件中会使用到

docker inspect [kafka-net的NETWORK ID]

 

Docker-compose部署zookeeper+storm集群【保成,秒回】_第2张图片

我们的zookeeper 集群搭建在了 kafka-net下面,所以我们需要将storm并入该网络

创建storm放置所有的配置文件

# 建立根目录

mkdir storm

cd storm

# 创建配置文件

touch storm.yaml

sudo nano storm.yaml

# 插入下面的配置内容

storm.zookeeper.servers:
  - "172.18.0.5"
  - "172.18.0.7"
  - "172.18.0.2"
nimbus.seeds:
  - "nimbus1"
  - "nimbus2"
  - "nimbus3"
storm.log.dir: "/logs"
storm.local.dir: "/data"
storm.cluster.mode: distributed

zookeeper的ip可以使用docker 

编写storm1-compose.yml

 # 建立第一个storm节点

mkdir storm1

cd storm1

# 创建并编写文件

touch storm1-compose.yml

sudo nano storm1-compose.yml

# 把下面的代码放入yml文件中

version: '3'

services:
  nimbus:
    image: storm:2.2.0
    container_name: nimbus1
    command: storm nimbus
    restart: always
    hostname: nimbus1
    ports:
      - 6627:6627
    volumes:
      - "../storm.yaml:/conf/storm.yaml"
      - "./nimbus/data:/data"
      - "./nimbus/logs:/logs"

  supervisor:
    image: storm:2.2.0
    container_name: supervisor1
    command: storm supervisor
    hostname: supervisor1
    depends_on:
      - nimbus
    links:
      - nimbus:nimbus
    restart: always
    volumes:
      - "../storm.yaml:/conf/storm.yaml"
      - "./supervisor/data:/data"
      - "./supervisor/logs:/logs"
networks:
  default:
    external: true
    name: kafka-net

运行storm1-compose.yml文件

docker-compose -f storm1-compose.yml up -d

出现下图中的输出表示启动成功 

Docker-compose部署zookeeper+storm集群【保成,秒回】_第3张图片

搭建余下两个storm节点

storm2

# 再storm根目录下 创建storm2

mkdir storm2

cd storm2

touch storm-compose2.yml

sudo nano storm-compose2.yml

# 加入代码

version: '3'

services:
  nimbus:
    image: storm:2.2.0
    container_name: nimbus2
    command: storm nimbus
    restart: always
    hostname: nimbus2
    ports:
      - 6628:6627
    volumes:
      - "../storm.yaml:/conf/storm.yaml"
      - "./nimbus/data:/data"
      - "./nimbus/logs:/logs"

  supervisor:
    image: storm:2.2.0
    container_name: supervisor2
    command: storm supervisor
    hostname: supervisor2
    depends_on:
      - nimbus
    links:
      - nimbus:nimbus
    restart: always
    volumes:
      - "../storm.yaml:/conf/storm.yaml"
      - "./supervisor/data:/data"
      - "./supervisor/logs:/logs"
networks:
  default:
    external: true
    name: kafka-net

storm3

在搭建第三个节点的时候,加入storm-ui,首次搭建会失败,因为此时还不知道三个nibums的ip,我们先执行一次,然后去查看三个nibums的ip,填好后再次运行docker-compose即可

# 再storm根目录下 创建storm3

mkdir storm3

cd storm3

touch storm-compose3.yml

sudo nano storm-compose3.yml

# 加入代码

version: '3'

services:
  nimbus:
    image: storm:2.2.0
    container_name: nimbus3
    command: storm nimbus
    restart: always
    hostname: nimbus3
    ports:
      - 6629:6627
    volumes:
      - "../storm.yaml:/conf/storm.yaml"
      - "./nimbus/data:/data"
      - "./nimbus/logs:/logs"

  supervisor:
    image: storm:2.2.0
    container_name: supervisor3
    command: storm supervisor
    hostname: supervisor3
    depends_on:
      - nimbus
    links:
      - nimbus:nimbus
    restart: always
    volumes:
      - "../storm.yaml:/conf/storm.yaml"
      - "./supervisor/data:/data"
      - "./supervisor/logs:/logs"

  storm-ui:
    image: storm:2.2.0
    container_name: storm-ui
    command: storm ui
    depends_on:
      - nimbus
    links:
      - nimbus:nimbus
    restart: always
    ports:
      - 8080:8080
    volumes:
      - "../storm.yaml:/conf/storm.yaml"
      - "./ui/data:/data"
      - "./ui/logs:/logs"

networks:
  default:
    external: true
    name: kafka-net

通过storm-ui查看集群

# 访问下面的网站

http://localhost:8080

出现下面的页面表示storm集群搭建成功 

Docker-compose部署zookeeper+storm集群【保成,秒回】_第4张图片

问题与解决

docker-compose文件格式错误

        docker-compose文件有着严格格式,最好就是复制粘贴正确的文件,然后进行修改,一般来说,当文件格式不正确的时候,会在控制台报error,并且告诉你文件什么地方有问题

storm节点反复重启

        当我们进入storm-ui出现无法连接到nibums和superviser的时候很可能是storm没有和zookeeper连接上,导致storm集群无法正常运行

你可能感兴趣的:(docker,zookeeper,storm)