具体部署请看官方文档。本文只是做部署记录。
2021-08-12更新
比1年前部署,更加有经验,避免掉一些参数上、使用习惯上的坑
2台服务器,8核心16G内存
最佳实践中:
- master节点 和 worker 节点配置
# 环境变量
CRAWLAB_MONGO_HOST=10.89.104.53 # 最好是具体IP
CRAWLAB_REDIS_ADDRESS=10.89.104.53 # 最好是具体IP
CRAWLAB_SERVER_MASTER=Y # 主节点 N就是工作节点
CRAWLAB_SERVER_REGISTER_TYPE = ip #标记节点type类型
CRAWLAB_SERVER_REGISTER_IP=10.89.104.53
CRAWLAB_TASK_WORKERS=50 # 保证定时任务多了,也都可以跑。默认4,容易任务不执行,多了可能CPU压力大。个人觉得宜多不宜少
CRAWLAB_SETTING_CHECKSCRAPY=N
-
redis 正常容器部署即可
-
mongo
开启远程链接
# 进入容器
docker exec -it mongodb bash
#更新源
apt-get update
#安装 vim
apt-get install vim
#修改 mongo 配置文件
vim /etc/mongod.conf.orig
将其中的bindIp: 127.0.0.1注释掉# bindIp: 127.0.0.1 或者改成bindIp: 0.0.0.0 即可开启远程连接
环境变量,在调整为IP试试,类似
CRAWLAB_MONGO_HOST=10.xx.xx.xx
CRAWLAB_REDIS_ADDRESS=10.xx.xx.xx
CRAWLAB_SERVER_REGISTER_TYPE=ip
CRAWLAB_SERVER_REGISTER_IP=10.xx.xx.xx # 注册节点ip
导出后的整体docker-compose.yml
version: '2'
services:
mongo:
image: mongo:latest
volumes:
- /opt/crawlab/mongo/data/db:/data/db
ports:
- 10.89.104.53:27017:27017/tcp
worker-1:
image: tikazyq/crawlab:latest
environment:
CRAWLAB_MONGO_HOST: 10.89.104.53
CRAWLAB_REDIS_ADDRESS: 10.89.104.53
CRAWLAB_SERVER_MASTER: N
CRAWLAB_SERVER_REGISTER_TYPE: ip
CRAWLAB_SERVER_REGISTER_IP: 10.89.104.54
CRAWLAB_TASK_WORKERS: '50'
CRAWLAB_SETTING_CHECKSCRAPY: N
links:
- redis:redis
- mongo:mongo
redis:
image: redis:latest
volumes:
- /opt/crawlab/redis/data:/data
ports:
- 10.89.104.53:6379:6379/tcp
master:
image: tikazyq/crawlab:latest
environment:
CRAWLAB_MONGO_HOST: 10.89.104.53
CRAWLAB_REDIS_ADDRESS: 10.89.104.53
CRAWLAB_SERVER_MASTER: Y
CRAWLAB_SERVER_REGISTER_TYPE: ip
CRAWLAB_SERVER_REGISTER_IP: 10.89.104.53
CRAWLAB_TASK_WORKERS: '50'
CRAWLAB_SETTING_CHECKSCRAPY: N
links:
- redis:redis
- mongo:mongo
ports:
- 10.89.104.53:8081:8080/tcp
效果
优点:
- 可视化管理docker
- docker-compose文件实现的多机器分布式部署
docker-compsoe多机部署:
容器编排:
开放端口:
关于Rancher的介绍
可以简单的理解为rancher是k8s的gui
rancher 和 Kubernetes有什么区别? - 晴天的回答 - 知乎 www.zhihu.com/question/30…
修改Nginx启动失败错误
看crawlab启动日志,nginx启动失败。rancher和crawlab,在nginx这里,有冲突。 我们shell进入crawlab容器内
查看错误信息:
cat /var/log/nginx/error.log
72752#72752: socket() [::]:80 failed (97: Address family not supported by protocol)
解决方式:
shell进入crawlab容器内,
安装vim
apt-get update && apt-get install vim -y
vim /etc/nginx/sites-enabled/default
注释掉:
listen [::]:80 default_server;
重启
service nginx restart
重新打包镜像
基于业务,优化crawlab镜像:
-
使用Python3.7
-
添加OpenCV依赖,方便图像识别验证码
-
解决Nginx启动失败的问题
使用我的镜像:(国内仓库加速)
sudo docker pull registry.cn-hangzhou.aliyuncs.com/luzihang/crawlab:latest
第一步:写一个docker-compose.yml文件
vim docker-compose.yml
内容
version: '2'
services:
mongo:
image: mongo:latest
worker:
image: registry.cn-hangzhou.aliyuncs.com/luzihang/crawlab:latest
environment:
CRAWLAB_MONGO_HOST: mongo
CRAWLAB_REDIS_ADDRESS: redis
CRAWLAB_SERVER_MASTER: N
redis:
image: redis:latest
master:
image: registry.cn-hangzhou.aliyuncs.com/luzihang/crawlab:latest
environment:
CRAWLAB_MONGO_HOST: mongo
CRAWLAB_REDIS_ADDRESS: redis
CRAWLAB_SERVER_MASTER: Y
第二步:创建应用 等待……
第三步:负载均衡开放端口
Done!完成搭建