CentOs7下使用docker18.3部署crawlab分布式爬虫调度平台, 子节点部署,和子节点IP配置

CentOs7下使用docker18.3部署crawlab分布式爬虫调度平台, 子节点部署,和子节点IP配置转自:https://blog.gazer.win/essay/crawlab-single-node-deployment.html1、安装DockerCE→传送门 CentOS使用者可以直接参考这篇文章:DockerCE简明安装步骤forCentOS  因为需要,所以记录,内容主要来自于DockerDocs,方便自己以后查阅。 在需要自定义特殊的…

转自:https://blog.gazer.win/essay/crawlab-single-node-deployment.html

1、安装 Docker CE → 传送门
 CentOS 使用者可以直接参考这篇文章:

Docker CE 简明安装步骤 for CentOS

  因为需要,所以记录,内容主要来自于 Docker Docs,方便自己以后查阅。 在需要自定义特殊的安装参数(例…

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

出现该问题是因为只有使用–subnet创建的网络才能指定静态IP

创建网络

docker network create –driver bridge –subnet 172.22.1.0/24 –gateway 172.22.1.1 my_net3  

3、编排 Docker Compose, 指定容器IP,  这里使用默认网络

version: '3.3'
services:
  master: 
    image: tikazyq/crawlab:0.4.2
    container_name: master
    networks:  # 固定 ipv4_address,请根据自己的需求分配
      default:
        ipv4_address: "172.22.1.5"
    volumes:  # 卷映射格式 "宿主:容器"
      - "/opt/docker/crawlab/spiders/:/app/spiders/"  # 持久化爬虫项目文件到宿主机本地
      - "/opt/docker/crawlab/logs/crawlab/:/var/logs/crawlab/"  # 持久化日志数据到宿主机本地
      - "/opt/docker/crawlab/tmp/:/tmp/"  # 持久化临时文件目录到宿主机本地
      - "/etc/localtime:/etc/localtime"  # 使容器时区与时间和宿主同步
    environment:
      CRAWLAB_API_ADDRESS: "http://IP:8000"  # backend API address 后端 API 地址,设置为 http://<宿主机IP>:<端口>,端口为映射出来的端口
      CRAWLAB_SERVER_MASTER: "Y"  # whether to be master node 是否为主节点,主节点为 Y,工作节点为 N
      CRAWLAB_MONGO_HOST: "mongo"  # MongoDB host address MongoDB 的地址,在 docker compose 网络中,直接引用服务名称
      CRAWLAB_REDIS_ADDRESS: "redis"  # Redis host address Redis 的地址,在 docker compose 网络中,直接引用服务名称
    ports:    
      - "8080:8080" # frontend port mapping 前端端口映射
      - "8000:8000" # backend port mapping 后端端口映射 
    depends_on:
      - mongo
      - redis  
  worker:
    image: tikazyq/crawlab:0.4.2
    container_name: worker
    networks:  # 固定 ipv4_address,请根据自己的需求分配
      default:
        ipv4_address: "172.22.1.4"
    volumes:  # 卷映射格式 "宿主:容器"
      - "/opt/docker/crawlab/spiders/:/app/spiders/"  # 持久化爬虫项目文件到宿主机本地
      - "/opt/docker/crawlab/logs/crawlab/:/var/logs/crawlab/"  # 持久化日志数据到宿主机本地
      - "/opt/docker/crawlab/tmp/:/tmp/"  # 持久化临时文件目录到宿主机本地
      - "/etc/localtime:/etc/localtime"  # 使容器时区与时间和宿主同步
    environment:
      CRAWLAB_SERVER_MASTER: "N"
      CRAWLAB_MONGO_HOST: "mongo"
      CRAWLAB_REDIS_ADDRESS: "redis"
    depends_on:
      - mongo
      - redis
  mongo:
    image: mongo:latest
    restart: always
    networks:  # 固定 ipv4_address,请根据自己的需求分配
      default:
        ipv4_address: "172.22.1.3"
    volumes:
      - "/etc/localtime:/etc/localtime"  # 使容器时区与时间和宿主同步
      # - "/opt/crawlab/mongo/data/db:/data/db"  # make data persistent 持久化
    ports:
      - "27017:27017"  # expose port to host machine 暴露接口到宿主机
  redis:
    image: redis:latest
    restart: always
    networks:  # 固定 ipv4_address,请根据自己的需求分配
      default:
        ipv4_address: "172.22.1.2"
    volumes:
      - "/etc/localtime:/etc/localtime"  # 使容器时区与时间和宿主同步
      # - "/opt/crawlab/redis/data:/data" # make data persistent 持久化
    ports:
      - "6379:6379"  # expose port to host machine 暴露接口到宿主机

networks:
  default:
    external:
      name: my_net3 # 指定已经存在的 brige 网络

find / -name “docker-compose.y*”

CentOs7下使用docker18.3部署crawlab分布式爬虫调度平台, 子节点部署,和子节点IP配置

CentOs7下使用docker18.3部署crawlab分布式爬虫调度平台, 子节点部署,和子节点IP配置

启动crawlab: docker-compose up

停止crawlab: docker-compose stop

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

———————————主服务器已经部署完毕,开始部署单个工作节点

1. 查看网络模式
docker network ls
查看源数据
docker network inspect  mynet
删除网络
docker network rm 3eee248f70d7
查询容器ip
docker inspect 80228a42d5c8 | grep IPAddress

2.修改三台主机的Docker0的网络地址
编辑主机1上的 /etc/docker/daemon.json 文件,添加内容:{ "bip": "172.17.43.1/24" }
编辑主机2上的 /etc/docker/daemon.json 文件,添加内容:{ "bip":"172.17.42.1/24" }
编辑主机3上的 /etc/docker/daemon.json 文件,添加内容:{ "bip":"172.17.44.1/24" }
分别重启docker容器: systemctl restart docker

3.三台服务器 都要 -》 CentOS7 永久开启路由转发(写入内核)

编辑此文件:vi /etc/sysctl.conf
加入此行 : net.ipv4.ip_forward = 1
加载一下:sysctl -p

4.修改时间,保证各个服务器时间同步  date -s "2019-11-22 11:20:00"

5.创建子节点网络
docker network create --driver bridge --subnet=172.19.2.0/16 --gateway=172.19.1.1 mynet202
创建工作节点,连接上主服务器的命令: 使用刚才创建的网段mynet202
docker run --restart always --name worker202 --network=mynet202 --ip 172.19.2.2\
        -e CRAWLAB_REDIS_ADDRESS=192.168.10.203 \
        -e CRAWLAB_MONGO_HOST=192.168.10.203 \
        -e CRAWLAB_SERVER_MASTER=N \
        -e CRAWLAB_LOG_ISDELETEPERIODICALLY="Y" \
        -e CRAWLAB_LOG_DELETEFREQUENCY="@daily" \
        -v /var/logs/crawlab:/var/logs/crawlab \
        -v /etc/localtime:/etc/localtime \
        tikazyq/crawlab:latest

6.由于crawlab执行python有些库找不到,需要自己安装,进入容器安装python库
docker exec -it  容器id  /bin/bash 
pip install psycopg2-binary 
pip install pymysql
pip install jsonpath

安装完毕相关库,需要重启crawlab, 启动命令:docker-compose up 

 

看看效果:

CentOs7下使用docker18.3部署crawlab分布式爬虫调度平台, 子节点部署,和子节点IP配置

今天的文章CentOs7下使用docker18.3部署crawlab分布式爬虫调度平台, 子节点部署,和子节点IP配置分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/7507.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注