Crawlab 单节点服务集群搭建部署简明教程

举报
Marvin Zhang 发表于 2020/11/29 17:00:34 2020/11/29
【摘要】 本文经授权转载自清雨的博客,作者会定期更新相关信息,欢迎前往阅读。1、安装 Docker CE → 传送门CentOS 使用者可以直接参考这篇文章:Docker CE 简明安装步骤 for CentOS2、一些前期准备sudo mkdir -p /opt/dockersudo chown ${USER} -R /opt/dockermkdir -p /opt/docker/crawlab/d...

本文经授权转载自清雨的博客,作者会定期更新相关信息,欢迎前往阅读。

1、安装 Docker CE → 传送门

CentOS 使用者可以直接参考这篇文章:Docker CE 简明安装步骤 for CentOS

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
touch /opt/docker/crawlab/docker-compose.yml
cat /dev/null > /opt/docker/crawlab/docker-compose.yml

3、编排 Docker Compose

cat << EOF > /opt/docker/crawlab/docker-compose.yml
version: '3.3'  # Docker Compose Version 根据自己的需要选择,不同版本的配置参数略有不同,请自行查阅官方文档
services:
  master:  # 主节点(服务名称)
    image: tikazyq/crawlab:latest
    container_name: crawlab-master
    environment:  # 环境变量
      # CRAWLAB_API_ADDRESS 请根据需求改成自己宿主机的物理 IP 地址
      CRAWLAB_API_ADDRESS: "192.168.31.200:8000"  # localhost IP,前端调用的 API 地址,默认为 localhost:8000
      CRAWLAB_SERVER_MASTER: "Y"  # 主节点(Y/N)
      CRAWLAB_TASK_WORKERS: "5"  #    任务并行执行个数,未配置此参数时,默认为:4
      CRAWLAB_LOG_LEVEL: "info"  # 日志级别
      CRAWLAB_MONGO_HOST: "mongo"  # MongoDB Host IP,由于在 Docker Compose Cluster 服务集群里,可直接引用服务名称
      CRAWLAB_REDIS_ADDRESS: "redis"  # Redis Host IP,由于在 Docker Compose Cluster 服务集群里,可直接引用服务名称
    volumes:  # 卷映射格式 "宿主:容器"
      - "/opt/docker/crawlab/spiders/:/app/spiders/"  # 持久化爬虫项目文件到宿主机本地
      - "/opt/docker/crawlab/logs/crawlab/:/var/logs/crawlab/"  # 持久化日志数据到宿主机本地
      - "/opt/docker/crawlab/tmp/:/tmp/"  # 持久化临时文件目录到宿主机本地
      - "/etc/localtime:/etc/localtime"  # 使容器时区与时间和宿主同步
    networks:  # 固定 ipv4_address,请根据自己的需求分配
      default:
        ipv4_address: "172.31.16.100"
    ports:  # 端口映射格式 "宿主:容器"
      - "8080:8080"  # frontend 开放前端页面访问端口
      - "8000:8000"  # frontend 和 backend 的通信端口(前端和后端的通信端口)
    depends_on:  # 依赖的服务
      - mongo
      - redis
  worker:  # 工作节点(服务名称)设置(如不需要工作节点,可将此 sercive 的整段配置此 docker-compose.yml 文件里删除)
    image: tikazyq/crawlab:latest
    container_name: crawlab-worker
    volumes:  # 卷映射格式 "宿主:容器"
      - "/etc/localtime:/etc/localtime"  # 使容器时区与时间和宿主同步
    networks:  # 固定 ipv4_address,请根据自己的需求分配
      default:
        ipv4_address: "172.31.16.101"
    environment:
      CRAWLAB_SERVER_MASTER: "N"  # 主节点(Y/N)
      CRAWLAB_TASK_WORKERS: "5"  #    任务并行执行个数,未配置此参数时,默认为:4
      CRAWLAB_MONGO_HOST: "mongo"  # MongoDB Host IP,由于在 Docker Compose Cluster 服务集群里,可直接引用服务名称
      CRAWLAB_REDIS_ADDRESS: "redis"  # Redis Host IP,由于在 Docker Compose Cluster 服务集群里,可直接引用服务名称
    depends_on:  # 依赖的服务
      - mongo
      - redis
  mongo:  # MongoDB 服务
    image: mongo:latest
    restart: always
    volumes:  # 卷映射格式 "宿主:容器"
      - "/etc/localtime:/etc/localtime"  # 使容器时区与时间和宿主同步
      - "/opt/docker/crawlab/data/mongodb/:/data/db/"  # 持久化 MongoDB 数据到宿主机本地
    networks:  # 固定 ipv4_address,请根据自己的需求分配
      default:
        ipv4_address: "172.31.16.251"
    ports:  # 端口映射格式 "宿主:容器"
      - "27017:27017"
  redis: # Redis 服务
    image: redis:latest
    restart: always
    volumes:  # 卷映射格式 "宿主:容器"
      - "/etc/localtime:/etc/localtime"  # 使容器时区与时间和宿主同步
      - "/opt/docker/crawlab/data/redis/:/data/"  # 持久化 Redis 数据到宿主机本地
    networks:  # 固定 ipv4_address,请根据自己的需求分配
      default:
        ipv4_address: "172.31.16.252"
    ports:  # 端口映射格式 "宿主:容器"
      - "6379:6379"

networks:  # 配置此 Docker Compose Cluster 服务集群的网络
  default:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: "172.31.16.0/24"  # 固定网域,请根据自己的需求分配
          # 以下配置为 Docker Compose 2.X 版本的参数,3.X 版本已移除部分支持
          # gateway: "172.31.16.254"  # 配置固定的子网网关
          # ip_range: "172.31.16.1/24"  # 固定网域里允许分配的 IP 地址子网段范围

# 配置参考资料:
# https://tikazyq.github.io/crawlab-docs/Config/
# https://docs.docker.com/compose/compose-file/

EOF

一些关于配置的说明:

  • 固定各个服务的 IP 是为了方便和物理网络的其它服务对接,此时只要在物理网络终端设置好路由表,就能直接通过 Docker 服务的 Subnet 网段,便捷的访问运行在容器里的各类服务。
  • MongoDB 和 Redis 的数据持久化到本地可根据自己的需求来设置,如果想在执行 docker-compose down 命令后保存原本的任务队列/任务运行详情/定时任务设置等,则必须持久化 MongoDB 的数据,至于 Redis 的数据未持久化是否有影响,博主这边暂时未测试过。

P.S:一定要同步容器时区设置,否则定时任务可能无法按照你预设的时间执行。

4、运行 Crawlab 服务集群

# 切换到 Crawlab 工作目录
cd /opt/docker/crawlab
# 后台启动 Crawlab 服务群,并重定向运行日志至 /tmp/crawlabs.log
nohup docker-compose up > /tmp/crawlabs.log 2>&1 &

5、测试集群是否能正常工作

打开 http://localhost:8080/ 或 http://<;your_ip>:8080/

使用默认的账号密码 admin/admin 尝试登录,能登录则正常

否则请查看运行日志/tmp/crawlabs.log排查错误

6、其它爬虫的集成与对接

参考资料:

  • https://tikazyq.github.io/crawlab-docs/Config/
  • https://docs.docker.com/compose/compose-file/
  • https://tikazyq.github.io/crawlab-docs/QA/
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。