乐趣区

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

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

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://&lt;;your_ip>:8080/

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

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

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

7、常见问题 Q&A

https://tikazyq.github.io/cra…

另外,感谢微信“Crawlab 开发交流群”的群主及同仁在博主部署时提供的各种帮助。
有部署上的疑问,大家可以留言一起交流。

参考资料:

  • https://tikazyq.github.io/cra…
  • https://docs.docker.com/compo…
  • https://tikazyq.github.io/cra…

本文由文章发布工具 ArtiPub 自动生成

退出移动版