docker storm官网
请参考【Docker安装部署Zookeeper+Kafka集群详细教程、部署过程中遇到问题&解决方案】
请参考【Docker安装部署Zookeeper+Kafka集群详细教程、部署过程中遇到问题&解决方案】
storm集群的搭建必须依赖于zookeeper,所以搭建storm前需要将zookeeper集群搭建成功,上面提供的链接详细介绍了使用dokcer-compose搭建zookeeper集群的过程,下面将展示使用docker-compose搭建storm集群,事实上可以使用一个文件配置三个nimbus、supervisor,但是我是先搭建好了一个nimbus与一个supervisor,然后再搭建的剩余的两个nimbus、supervisor。
# 我们需要查看zookeeper所在的docker 网络
docker network ls
# 查看zookeeper集群的ip 在后面的storm.yml文件中会使用到
docker inspect [kafka-net的NETWORK ID]
我们的zookeeper 集群搭建在了 kafka-net下面,所以我们需要将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
# 建立第一个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
docker-compose -f storm1-compose.yml up -d
出现下图中的输出表示启动成功
# 再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
在搭建第三个节点的时候,加入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
# 访问下面的网站
http://localhost:8080
出现下面的页面表示storm集群搭建成功
docker-compose文件有着严格格式,最好就是复制粘贴正确的文件,然后进行修改,一般来说,当文件格式不正确的时候,会在控制台报error,并且告诉你文件什么地方有问题
当我们进入storm-ui出现无法连接到nibums和superviser的时候很可能是storm没有和zookeeper连接上,导致storm集群无法正常运行