Crawlab 單節點服務叢集搭建部署簡明教程
阿新 • • 發佈:2019-12-31
本文經授權轉載自清雨的部落格,作者會定期更新相關資訊,歡迎前往閱讀。
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 開發交流群”的群主及同仁在博主部署時提供的各種幫助。 有部署上的疑問,大家可以留言一起交流。
參考資料: