转自:https://blog.gazer.win/essay/crawlab-single-node-deployment.html
1、安装 Docker CE → 传送门
CentOS 使用者可以直接参考这篇文章:
因为需要,所以记录,内容主要来自于 Docker Docs,方便自己以后查阅。 在需要自定义特殊的安装参数(例…
2、一些前期准备
sudo mkdir -p /opt/docker
sudo chown ${USER} -R /opt/docker
mkdir -p /opt/docker/crawlab/data/mongodb
mkdir -p /opt/docker/crawlab/data/redis
mkdir -p /opt/docker/crawlab/logs/crawlab
mkdir -p /opt/docker/crawlab/spiders
mkdir -p /opt/docker/crawlab/tmp
出现该问题是因为只有使用–subnet创建的网络才能指定静态IP
创建网络
docker network create –driver bridge –subnet 172.22.1.0/24 –gateway 172.22.1.1 my_net3
3、编排 Docker Compose, 指定容器IP, 这里使用默认网络
version: '3.3'
services:
master:
image: tikazyq/crawlab:0.4.2
container_name: master
networks: # 固定 ipv4_address,请根据自己的需求分配
default:
ipv4_address: "172.22.1.5"
volumes: # 卷映射格式 "宿主:容器"
- "/opt/docker/crawlab/spiders/:/app/spiders/" # 持久化爬虫项目文件到宿主机本地
- "/opt/docker/crawlab/logs/crawlab/:/var/logs/crawlab/" # 持久化日志数据到宿主机本地
- "/opt/docker/crawlab/tmp/:/tmp/" # 持久化临时文件目录到宿主机本地
- "/etc/localtime:/etc/localtime" # 使容器时区与时间和宿主同步
environment:
CRAWLAB_API_ADDRESS: "http://IP:8000" # backend API address 后端 API 地址,设置为 http://<宿主机IP>:<端口>,端口为映射出来的端口
CRAWLAB_SERVER_MASTER: "Y" # whether to be master node 是否为主节点,主节点为 Y,工作节点为 N
CRAWLAB_MONGO_HOST: "mongo" # MongoDB host address MongoDB 的地址,在 docker compose 网络中,直接引用服务名称
CRAWLAB_REDIS_ADDRESS: "redis" # Redis host address Redis 的地址,在 docker compose 网络中,直接引用服务名称
ports:
- "8080:8080" # frontend port mapping 前端端口映射
- "8000:8000" # backend port mapping 后端端口映射
depends_on:
- mongo
- redis
worker:
image: tikazyq/crawlab:0.4.2
container_name: worker
networks: # 固定 ipv4_address,请根据自己的需求分配
default:
ipv4_address: "172.22.1.4"
volumes: # 卷映射格式 "宿主:容器"
- "/opt/docker/crawlab/spiders/:/app/spiders/" # 持久化爬虫项目文件到宿主机本地
- "/opt/docker/crawlab/logs/crawlab/:/var/logs/crawlab/" # 持久化日志数据到宿主机本地
- "/opt/docker/crawlab/tmp/:/tmp/" # 持久化临时文件目录到宿主机本地
- "/etc/localtime:/etc/localtime" # 使容器时区与时间和宿主同步
environment:
CRAWLAB_SERVER_MASTER: "N"
CRAWLAB_MONGO_HOST: "mongo"
CRAWLAB_REDIS_ADDRESS: "redis"
depends_on:
- mongo
- redis
mongo:
image: mongo:latest
restart: always
networks: # 固定 ipv4_address,请根据自己的需求分配
default:
ipv4_address: "172.22.1.3"
volumes:
- "/etc/localtime:/etc/localtime" # 使容器时区与时间和宿主同步
# - "/opt/crawlab/mongo/data/db:/data/db" # make data persistent 持久化
ports:
- "27017:27017" # expose port to host machine 暴露接口到宿主机
redis:
image: redis:latest
restart: always
networks: # 固定 ipv4_address,请根据自己的需求分配
default:
ipv4_address: "172.22.1.2"
volumes:
- "/etc/localtime:/etc/localtime" # 使容器时区与时间和宿主同步
# - "/opt/crawlab/redis/data:/data" # make data persistent 持久化
ports:
- "6379:6379" # expose port to host machine 暴露接口到宿主机
networks:
default:
external:
name: my_net3 # 指定已经存在的 brige 网络
find / -name “docker-compose.y*”
启动crawlab: docker-compose up
停止crawlab: docker-compose stop
一些关于配置的说明:
固定各个服务的 IP 是为了方便和物理网络的其它服务对接,此时只要在物理网络终端设置好路由表,就能直接通过 Docker 服务的 Subnet 网段,便捷的访问运行在容器里的各类服务。
MongoDB 和 Redis 的数据持久化到本地可根据自己的需求来设置,如果想在执行 docker-compose down 命令后保存原本的任务队列/任务运行详情/定时任务设置等,则必须持久化 MongoDB 的数据,至于 Redis 的数据未持久化是否有影响,博主这边暂时未测试过。P.S:一定要同步容器时区设置,否则定时任务可能无法按照你预设的时间执行。
———————————主服务器已经部署完毕,开始部署单个工作节点
1. 查看网络模式
docker network ls
查看源数据
docker network inspect mynet
删除网络
docker network rm 3eee248f70d7
查询容器ip
docker inspect 80228a42d5c8 | grep IPAddress
2.修改三台主机的Docker0的网络地址
编辑主机1上的 /etc/docker/daemon.json 文件,添加内容:{ "bip": "172.17.43.1/24" }
编辑主机2上的 /etc/docker/daemon.json 文件,添加内容:{ "bip":"172.17.42.1/24" }
编辑主机3上的 /etc/docker/daemon.json 文件,添加内容:{ "bip":"172.17.44.1/24" }
分别重启docker容器: systemctl restart docker
3.三台服务器 都要 -》 CentOS7 永久开启路由转发(写入内核)
编辑此文件:vi /etc/sysctl.conf
加入此行 : net.ipv4.ip_forward = 1
加载一下:sysctl -p
4.修改时间,保证各个服务器时间同步 date -s "2019-11-22 11:20:00"
5.创建子节点网络
docker network create --driver bridge --subnet=172.19.2.0/16 --gateway=172.19.1.1 mynet202
创建工作节点,连接上主服务器的命令: 使用刚才创建的网段mynet202
docker run --restart always --name worker202 --network=mynet202 --ip 172.19.2.2\
-e CRAWLAB_REDIS_ADDRESS=192.168.10.203 \
-e CRAWLAB_MONGO_HOST=192.168.10.203 \
-e CRAWLAB_SERVER_MASTER=N \
-e CRAWLAB_LOG_ISDELETEPERIODICALLY="Y" \
-e CRAWLAB_LOG_DELETEFREQUENCY="@daily" \
-v /var/logs/crawlab:/var/logs/crawlab \
-v /etc/localtime:/etc/localtime \
tikazyq/crawlab:latest
6.由于crawlab执行python有些库找不到,需要自己安装,进入容器安装python库
docker exec -it 容器id /bin/bash
pip install psycopg2-binary
pip install pymysql
pip install jsonpath
安装完毕相关库,需要重启crawlab, 启动命令:docker-compose up
看看效果:
今天的文章CentOs7下使用docker18.3部署crawlab分布式爬虫调度平台, 子节点部署,和子节点IP配置分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/7507.html