1. 程式人生 > 程式設計 >Crawlab 單節點服務叢集搭建部署簡明教程

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

使用預設的賬號密碼 admin/admin 嘗試登入,能登入則正常

否則請檢視執行日誌/tmp/crawlabs.log排查錯誤

6、其它爬蟲的整合與對接

7、常見問題 Q&A

tikazyq.github.io/crawlab-doc…

另外,感謝微信“Crawlab 開發交流群”的群主及同仁在博主部署時提供的各種幫助。 有部署上的疑問,大家可以留言一起交流。

參考資料: