分佈式爬蟲的部署之Scrapyd批量部署

咱們在上一節實現了Scrapyd和Docker的對接,這樣每臺主機就不用再安裝Python環境和安裝Scrapyd了,直接執行一句Docker命令運行Scrapyd服務便可。可是這種作法有個前提,那就是每臺主機都安裝Docker,而後再去運行Scrapyd服務。若是咱們須要部署10臺主機的話,工做量確實不小。
html

一種方案是,一臺主機已經安裝好各類開發環境,咱們取到它的鏡像,而後用鏡像來批量複製多臺主機,批量部署就能夠輕鬆實現了。git

另外一種方案是,咱們在新建主機的時候直接指定一個運行腳本,腳本里寫好配置各類環境的命令,指定其在新建主機的時候自動執行,那麼主機建立以後全部的環境就按照自定義的命令配置好了,這樣也能夠很方便地實現批量部署。github

目前不少服務商都提供雲主機服務,如阿里雲、騰訊雲、Azure、Amazon等,不一樣的服務商提供了不一樣的批量部署雲主機的方式。例如,騰訊雲提供了建立自定義鏡像的服務,在新建主機的時候使用自定義鏡像建立新的主機便可,這樣就能夠批量生成多個相同的環境。Azure提供了模板部署的服務,咱們能夠在模板中指定新建主機時執行的配置環境的命令,這樣在主機建立以後環境就配置完成了。json

本節咱們就來看看這兩種批量部署的方式,來實現Docker和Scrapyd服務的批量部署。bash

1、鏡像部署

以騰訊云爲例進行說明。首先須要有一臺已經安裝好環境的雲主機,Docker和Scrapyd鏡像均已經正確安裝,Scrapyd鏡像啓動加到開機啓動腳本中,能夠在開機時自動啓動。
微信

進入騰訊雲後臺,點擊更多選項製做鏡像,以下圖所示。網絡

輸入鏡像的一些配置信息,以下圖所示。架構

確認製做鏡像,稍等片刻便可製做成功。分佈式

接下來,建立新的主機,在新建主機時選擇已經制做好的鏡像便可,以下圖所示。ide

後續配置過程按照提示進行便可。

配置完成以後登陸新到雲主機,便可看到當前主機Docker和Scrapyd鏡像都已經安裝好,Scrapyd服務已經正常運行。

咱們就經過自定義鏡像的方式實現了相同環境的雲主機的批量部署。

2、模板部署

Azure的雲主機在部署時都會使用一個部署模板,這個模板其實是一個JSON文件,裏面包含了不少部署時的配置選項,如主機名稱、用戶名、密碼、主機型號等。在模板中咱們能夠指定新建完雲主機以後執行的命令行腳本,如安裝Docker、運行鏡像等。等部署工做所有完成以後,新建立的雲主機就已經完成環境配置,同時運行相關服務。

這裏提供一個部署Linux主機時自動安裝Docker和運行Scrapyd鏡像的模板,模板內容太多,源文件能夠查看:https://github.com/Python3WebSpider/ScrapydDeploy/blob/master/azuredeploy.json。模板中Microsoft.Compute/virtualMachines/extensions部分有一個commandToExecute字段,它能夠指定創建主機後自動執行的命令。這裏的命令完成的是安裝Docker並運行Scrapyd鏡像服務的過程。

首先安裝一個Azure組件,安裝過程能夠參考:https://docs.azure.cn/zh-cn/xplat-cli-install。以後就可使用azure命令行進行部署。

登陸Azure,這裏登陸的是中國區,命令以下:

azure login -e AzureChinaCloud複製代碼

若是沒有資源組的話,須要新建一個資源組,命令以下:

azure group create myResourceGroup chinanorth複製代碼

其中,myResourceGroup是資源組的名稱,能夠自行定義。

使用該模板進行部署,命令以下:

azure group deployment create --template-file azuredeploy.json myResourceGroup myDeploymentName複製代碼

其中,myResourceGroup是資源組的名稱,myDeploymentName是部署任務的名稱。

例如,部署一臺Linux主機的過程以下:

azure group deployment create --template-file azuredeploy.json MyResourceGroup SingleVMDeploy
info:    Executing command group deployment create
info:    Supply values for the following parameters
adminUsername:  datacrawl
adminPassword:  DataCrawl123
vmSize:  Standard_D2_v2
vmName:  datacrawl-vm
dnsLabelPrefix:  datacrawlvm
storageAccountName:  datacrawlstorage複製代碼

運行命令後會提示輸入各個配置參數,如主機用戶名、密碼等。以後等待整個部署工做完成便可,命令行會自動退出。而後,咱們登陸雲主機便可查看到Docker已經成功安裝而且Scrapyd服務正常運行。

3、結語

以上內容即是批量部署的兩種方法。在大規模分佈式爬蟲架構中,若是須要批量部署多個爬蟲環境,使用如上方法能夠快速批量完成環境的搭建工做,而不用再去逐個主機配置環境。

到此爲止,咱們解決了批量部署的問題,建立主機完畢以後便可直接使用Scrapyd服務。


本資源首發於崔慶才的我的博客靜覓: Python3網絡爬蟲開發實戰教程 | 靜覓

如想了解更多爬蟲資訊,請關注個人我的微信公衆號:進擊的Coder

weixin.qq.com/r/5zsjOyvEZ… (二維碼自動識別)

相關文章
相關標籤/搜索