使用Rancher 1.6 部署Crawlab

1,165 阅读2分钟

具体部署请看官方文档。本文只是做部署记录。


2021-08-12更新

比1年前部署,更加有经验,避免掉一些参数上、使用习惯上的坑

2台服务器,8核心16G内存 image.png

最佳实践中:

  • 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!完成搭建