1.前期准备
(1)把docker和docker-compose给下载好
参考:基于docker-compose来搭建zookeeper集群-优快云博客(注意对于这篇文章下面配置zookeeper的内容,可以直接跳过,因为我们只需要看最上面下载docker-compose的部分)
在linux虚拟机上面配置Docker时所踩过的坑_containerd1.6.33镜像源怎么配置-优快云博客
(2)创建好相关目录,并且准备好zookeeper.yml文件,具体代码如下:
mkdir -p /export/server/allstorm/
mkdir -p /export/server/stormdocker/
cd /export/server/
vi zookeeper.yml
配置storm单机使用的目录是stormdocker
配置storm集群使用的目录是allstorm
zookeeper.yml内容
version: '3.0'
services:
zk_server1:
image: zookeeper:3.7.1 # 镜像名称
restart: always # 当发生错误时自动重启
container_name: zk-node1
ports: # 端口
- 2181:2181
volumes: # 挂载数据卷
- ./node1/data:/data # 若./node1/data目录不存在,则自动生成
- ./node1/datalog:/datalog # 若./node1/datalog目录不存在,则自动生成
environment:
TZ: Asia/Shanghai
ZOO_MY_ID: 1 # 节点ID
ZOO_PORT: 2181 # zookeeper端口号
ZOO_SERVERS: server.1=172.168.0.1:2888:3888;2181 server.2=172.168.0.2:2888:3888;2181 server.3=172.168.0.3:2888:3888;2181 # zookeeper节点列表
networks:
mynet: # 自定义网络名
ipv4_address: 172.168.0.1
zk_server2:
image: zookeeper:3.7.1
restart: always
container_name: zk-node2
ports:
- 2182:2181
volumes:
- ./node2/data:/data
- ./node2/datalog:/datalog
environment:
TZ: Asia/Shanghai
ZOO_MY_ID: 2
ZOO_PORT: 2181
ZOO_SERVERS: server.1=172.168.0.1:2888:3888;2181 server.2=172.168.0.2:2888:3888;2181 server.3=172.168.0.3:2888:3888;2181
networks:
mynet:
ipv4_address: 172.168.0.2
zk_server3:
image: zookeeper:3.7.1
restart: always
container_name: zk-node3
ports:
- 2183:2181
volumes:
- ./node3/data:/data
- ./node3/datalog:/datalog
environment:
TZ: Asia/Shanghai
ZOO_MY_ID: 3
ZOO_PORT: 2181
ZOO_SERVERS: server.1=172.168.0.1:2888:3888;2181 server.2=172.168.0.2:2888:3888;2181 server.3=172.168.0.3:2888:3888;2181
networks:
mynet:
ipv4_address: 172.168.0.3
networks:
mynet: # 自定义网络名
external: true
2.单机storm配置
准备好相关文件:one_storm.yml,storm.yaml
(1)首先创建文件one_storm.yml,代码如下
cd /export/server/
vi one_storm.yml
one_storm.yml的内容如下
version: '3'
services:
nimbus:
image: storm
restart: always
command: storm nimbus
container_name: nimbus
environment:
STORM_ZOOKEEPER_SERVERS: "zk_server1:2181,zk_server2:2181,zk_server3:2181"
ports:
- "6627:6627"
networks:
- storm-network
- mynet
supervisor:
image: storm
restart: always
command: storm supervisor
container_name: supervisor
depends_on:
- nimbus
environment:
STORM_ZOOKEEPER_SERVERS: "zk_server1:2181,zk_server2:2181,zk_server3:2181"
STORM_NIMBUS_HOST: "nimbus"
links:
- nimbus:nimbus
ports:
- "6700:6700"
- "6701:6701"
- "6702:6702"
- "6703:6703"
- "8000:8000"
networks:
- storm-network
- mynet
ui:
image: storm
restart: always
command: storm ui
container_name: ui
depends_on:
- nimbus
environment:
STORM_ZOOKEEPER_SERVERS: "zk_server1:2181,zk_server2:2181,zk_server3:2181"
STORM_NIMBUS_HOST: "nimbus"
links:
- nimbus:nimbus
ports:
- "8080:8080"
networks:
- storm-network
- mynet
networks:
storm-network:
mynet:
external: true
(2)接着创建文件:storm.yaml,代码如下
cd /export/server/stormdocker/
vi storm.yaml
storm.yaml内容如下:
storm.zookeeper.servers:
- "zk_server1"
- "zk_server2"
- "zk_server3"
# Nimbus 种子节点列表,用于集群中的其他守护进程发现 Nimbus
nimbus.seeds:
- "nimbus"
# Storm 日志目录
storm.log.dir: "/logs"
# Storm 本地存储目录
storm.local.dir: "/data"
# 消息总线服务的主机名
mbus.host: "nimbus"
# Nimbus 服务的 Thrift 端口
nimbus.thrift.port: 6627
(3)启动docker,然后启动zookeeper.yml,然后启动one_storm.yml,再利用docker cp 代码进行相关操作
cd /export/server/
systemctl start docker
docker network create --driver bridge --subnet=172.168.0.0/16 --gateway=172.168.1.1 mynet
docker-compose -f zookeeper.yml up -d
docker-compose -f one_storm.yml up -d
docker cp /export/server/stormdocker/storm.yaml nimbus:/conf/storm.yaml
docker cp /export/server/stormdocker/storm.yaml supervisor:/conf/storm.yaml
docker cp /export/server/stormdocker/storm.yaml ui:/conf/storm.yaml
docker restart nimbus
docker restart ui
docker restart supervisor
(4)最后进入网页 主机号:8080查看
我的主机号是192.168.88.101
192.168.88.101:8080
效果如下(网页要一直点刷新按钮,等一会儿才能够进去)
(5)退出代码
cd /export/server/
docker-compose -f one_storm.yml down
docker-compose -f zookeeper.yml down
3.storm集群配置
准备好相关文件:many_storm.yml,storm.yaml
(1)首先创建文件many_storm.yml,代码如下
cd /export/server/
vi many_storm.yml
many_storm.yml的内容如下
version: '3'
services:
nimbus1:
image: storm
restart: always
command: storm nimbus
container_name: nimbus1
environment:
STORM_ZOOKEEPER_SERVERS: "zk_server1:2181,zk_server2:2181,zk_server3:2181"
ports:
- "6627:6627"
networks:
- storm-network
- mynet
volumes:
- /export/server/allstorm/storm.yaml:/conf/storm.yaml
supervisor1:
image: storm
restart: always
command: storm supervisor
container_name: supervisor1
depends_on:
- nimbus1
environment:
STORM_ZOOKEEPER_SERVERS: "zk_server1:2181,zk_server2:2181,zk_server3:2181"
STORM_NIMBUS_HOST: "nimbus1"
links:
- nimbus1:nimbus1
ports:
- "6700:6700"
- "6701:6701"
- "6702:6702"
- "6703:6703"
networks:
- storm-network
- mynet
volumes:
- /export/server/allstorm/storm.yaml:/conf/storm.yaml
ui1:
image: storm
restart: always
command: storm ui
container_name: ui1
depends_on:
- nimbus1
environment:
STORM_ZOOKEEPER_SERVERS: "zk_server1:2181,zk_server2:2181,zk_server3:2181"
STORM_NIMBUS_HOST: "nimbus1"
links:
- nimbus1:nimbus1
ports:
- "8080:8080"
networks:
- storm-network
- mynet
volumes:
- /export/server/allstorm/storm.yaml:/conf/storm.yaml
nimbus2:
image: storm
restart: always
command: storm nimbus
container_name: nimbus2
environment:
STORM_ZOOKEEPER_SERVERS: "zk_server1:2181,zk_server2:2181,zk_server3:2181"
STORM_NIMBUS_HOST: "nimbus1"
networks:
- storm-network
- mynet
volumes:
- /export/server/allstorm/storm.yaml:/conf/storm.yaml
supervisor2:
image: storm
restart: always
command: storm supervisor
container_name: supervisor2
depends_on:
- nimbus2
environment:
STORM_ZOOKEEPER_SERVERS: "zk_server1:2181,zk_server2:2181,zk_server3:2181"
STORM_NIMBUS_HOST: "nimbus1"
links:
- nimbus2:nimbus2
ports:
- "6704:6700"
- "6705:6701"
- "6706:6702"
- "6707:6703"
networks:
- storm-network
- mynet
volumes:
- /export/server/allstorm/storm.yaml:/conf/storm.yaml
nimbus3:
image: storm
restart: always
command: storm nimbus
container_name: nimbus3
environment:
STORM_ZOOKEEPER_SERVERS: "zk_server1:2181,zk_server2:2181,zk_server3:2181"
STORM_NIMBUS_HOST: "nimbus1"
networks:
- storm-network
- mynet
volumes:
- /export/server/allstorm/storm.yaml:/conf/storm.yaml
supervisor3:
image: storm
restart: always
command: storm supervisor
container_name: supervisor3
depends_on:
- nimbus3
environment:
STORM_ZOOKEEPER_SERVERS: "zk_server1:2181,zk_server2:2181,zk_server3:2181"
STORM_NIMBUS_HOST: "nimbus1"
links:
- nimbus3:nimbus3
ports:
- "6708:6700"
- "6709:6701"
- "6710:6702"
- "6711:6703"
networks:
- storm-network
- mynet
volumes:
- /export/server/allstorm/storm.yaml:/conf/storm.yaml
networks:
storm-network:
mynet:
external: true
(2)接着创建文件:storm.yaml,代码如下
cd /export/server/allstorm/
vi storm.yaml
storm.yaml内容如下:
storm.zookeeper.port: 2181
# Zookeeper 服务器列表
storm.zookeeper.servers:
- "zk_server1"
- "zk_server2"
- "zk_server3"
# Nimbus 种子节点列表,用于集群中的其他守护进程发现 Nimbus
nimbus.seeds:
- "nimbus1"
- "nimbus2"
- "nimbus3"
# Storm 日志目录
storm.log.dir: "/logs"
# Storm 本地存储目录
storm.local.dir: "/data"
# 消息总线服务的主机名
mbus.host: "nimbus1"
# Nimbus 服务的 Thrift 端口
nimbus.thrift.port: 6627
ui:
host: 0.0.0.0
port: 8080
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
(3)启动docker,然后启动zookeeper.yml,然后启动many_storm.yml,
确保网络mynet已经存在
可以通过命令查看
docker network ls
546540d18c2d mynet bridge local
如果没有就要输入以下代码创建网络mynet
docker network create --driver bridge --subnet=172.168.0.0/16 --gateway=172.168.1.1 mynet
创建好了网络mynet后
如果docker没有启动的话
systemctl start docker
启动集群
cd /export/server/
docker-compose -f zookeeper.yml up -d
docker-compose -f many_storm.yml up -d
(4)最后进入网页 主机号:8080查看
我的主机号是192.168.88.101
192.168.88.101:8080
(5)退出代码
cd /export/server/
docker-compose -f many_storm.yml down
docker-compose -f zookeeper.yml down
4.案例实现(敬请期待......)
好了,到了这里配置基本上就OK了