Crawlab多节点部署流程

Why,为什么需要爬虫管理平台?

以下摘自官方文档:

  Crawlab主要解决的是大量爬虫管理困难的问题,例如需要监控上百个网站的参杂scrapyselenium的项目不容易做到同时管理,而且命令行管理的成本非常高,还容易出错。

Crawlab支持任何语言和任何框架,配合任务调度、任务监控,很容易做到对成规模的爬虫项目进行有效监控管理。

  项目自 2019 年 3 月份上线以来受到爬虫爱好者们和开发者们的好评,超过一半的使用者表示已经在用 Crawlab 作为公司的爬虫管理平台。

经过近数月的迭代,陆续上线了 定时任务、数据分析、可配置爬虫、SDK、消息通知、Scrapy 支持、Git 同步等功能,

将Crawlab打造得更加实用,更加全面,能够真正帮助用户解决爬虫管理困难的问题。

 

  需要用到的环境:mongodb、redis、docker。这里就不一一介绍了。由于这里说的是多节点部署,mongodb一定要是3.6版本或者3.6版本以下(这里是大坑)要不然会因为认证机制连接不上mongodb。当然你用docker起mongo和redis映射出来也是一样的。生产环境上我们不希望仅仅是简单部署,我们可以在多台服务器上分别部署Crawlab然后连接公共的MongoDB及Redis。这时候就需要让Mongo及Redis独立出来,避免耦合启动。

 

部署流程:

一、拉取镜像

docker pull tikazyq/crawlab:latest

 

二、编写docker-compose.yml文件

自己touch一个或者从git上clone一份这里是我的配置。

master节点

version: '3.3'
services:
master:
image: tikazyq/crawlab:latest
container_name: master
environment:
# CRAWLAB_API_ADDRESS: "https://<your_api_ip>:<your_api_port>" # backend API address 后端 API 地址. 适用于 https 或者源码部署
CRAWLAB_SERVER_MASTER: "Y" # whether to be master node 是否为主节点,主节点为 Y,工作节点为 N
CRAWLAB_MONGO_HOST: "" # MongoDB host address MongoDB 的地址,在 docker compose 网络中,直接引用服务名称
CRAWLAB_MONGO_PORT: "27017" # MongoDB port MongoDB 的端口
CRAWLAB_MONGO_DB: "dbname" # MongoDB database MongoDB 的数据库
CRAWLAB_MONGO_USERNAME: "dbusername" # MongoDB username MongoDB 的用户名
CRAWLAB_MONGO_PASSWORD: "dbpwd" # MongoDB password MongoDB 的密码
CRAWLAB_MONGO_AUTHSOURCE: "admin" # MongoDB auth source MongoDB 的验证源
CRAWLAB_REDIS_ADDRESS: "" # Redis host address Redis 的地址,在 docker compose 网络中,直接引用服务名称
CRAWLAB_REDIS_PORT: "6379" # Redis port Redis 的端口
CRAWLAB_REDIS_DATABASE: "1" # Redis database Redis 的数据库
CRAWLAB_REDIS_PASSWORD: "dbpwd" # Redis password Redis 的密码
CRAWLAB_LOG_LEVEL: "info" # log level 日志级别. 默认为 info
ports:
- "8080:8080" # frontend port mapping 前端端口映射
depends_on:
- mongo
- redis
mongo:
image: mongo:latest
restart: always

redis:
image: redis:latest
restart: always

 

worker节点

version: '3.3'
services:
  worker:
    image: tikazyq/crawlab:latest
    container_name: worker
    environment:
      # CRAWLAB_API_ADDRESS: "https://<your_api_ip>:<your_api_port>"  # backend API address 后端 API 地址. 适用于 https 或者源码部署
      CRAWLAB_SERVER_MASTER: "N"  # whether to be master node 是否为主节点,主节点为 Y,工作节点为 N
      CRAWLAB_MONGO_HOST: ""  # MongoDB host address MongoDB 的地址,在 docker compose 网络中,直接引用服务名称
      CRAWLAB_MONGO_PORT: "27017"  # MongoDB port MongoDB 的端口
      CRAWLAB_MONGO_DB: "dbname"  # MongoDB database MongoDB 的数据库
      CRAWLAB_MONGO_USERNAME: "dbusername"  # MongoDB username MongoDB 的用户名
      CRAWLAB_MONGO_PASSWORD: "dbpwd"  # MongoDB password MongoDB 的密码
      CRAWLAB_MONGO_AUTHSOURCE: "admin"  # MongoDB auth source MongoDB 的验证源
      CRAWLAB_REDIS_ADDRESS: ""  # Redis host address Redis 的地址,在 docker compose 网络中,直接引用服务名称
      CRAWLAB_REDIS_PORT: "6379"  # Redis port Redis 的端口
      CRAWLAB_REDIS_DATABASE: "1"  # Redis database Redis 的数据库
      CRAWLAB_REDIS_PASSWORD: "dbpwd"  # Redis password Redis 的密码
      CRAWLAB_LOG_LEVEL: "info"  # log level 日志级别. 默认为 info
    ports:
      - "8080:8080" # frontend port mapping 前端端口映射
    depends_on:
      - mongo
      - redis
  mongo:
    image: mongo:latest
    restart: always

  redis:
    image: redis:latest
    restart: always

 

三、docker-compose up启动

master端和worker端启动:

docker-compose up -d #-d就是后台启动

 

启动成功图:

 

 

 

这时可以打开localhost:8080查看节点信息。默认账号密码都是admin:

 

 

然后就可以部署你的爬虫了。看起来很简单当初踩了好多坑。

 

posted @ 2021-09-10 11:20  Ccdjun  阅读(631)  评论(0编辑  收藏  举报