咱们在上一节实现了Scrapyd和Docker的对接,这样每台主机就不用再安装Python环境和安装Scrapyd了,直接执行一句Docker命令运行Scrapyd服务便可。可是这种作法有个前提,那就是每台主机都安装Docker,而后再去运行Scrapyd服务。若是咱们须要部署10台主机的话,工做量确实不小。
html
一种方案是,一台主机已经安装好各类开发环境,咱们取到它的镜像,而后用镜像来批量复制多台主机,批量部署就能够轻松实现了。git
另外一种方案是,咱们在新建主机的时候直接指定一个运行脚本,脚本里写好配置各类环境的命令,指定其在新建主机的时候自动执行,那么主机建立以后全部的环境就按照自定义的命令配置好了,这样也能够很方便地实现批量部署。github
目前不少服务商都提供云主机服务,如阿里云、腾讯云、Azure、Amazon等,不一样的服务商提供了不一样的批量部署云主机的方式。例如,腾讯云提供了建立自定义镜像的服务,在新建主机的时候使用自定义镜像建立新的主机便可,这样就能够批量生成多个相同的环境。Azure提供了模板部署的服务,咱们能够在模板中指定新建主机时执行的配置环境的命令,这样在主机建立以后环境就配置完成了。json
本节咱们就来看看这两种批量部署的方式,来实现Docker和Scrapyd服务的批量部署。bash
以腾讯云为例进行说明。首先须要有一台已经安装好环境的云主机,Docker和Scrapyd镜像均已经正确安装,Scrapyd镜像启动加到开机启动脚本中,能够在开机时自动启动。
微信
进入腾讯云后台,点击更多选项制做镜像,以下图所示。网络
输入镜像的一些配置信息,以下图所示。架构
确认制做镜像,稍等片刻便可制做成功。分布式
接下来,建立新的主机,在新建主机时选择已经制做好的镜像便可,以下图所示。ide
后续配置过程按照提示进行便可。
配置完成以后登陆新到云主机,便可看到当前主机Docker和Scrapyd镜像都已经安装好,Scrapyd服务已经正常运行。
咱们就经过自定义镜像的方式实现了相同环境的云主机的批量部署。
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服务正常运行。
以上内容即是批量部署的两种方法。在大规模分布式爬虫架构中,若是须要批量部署多个爬虫环境,使用如上方法能够快速批量完成环境的搭建工做,而不用再去逐个主机配置环境。
到此为止,咱们解决了批量部署的问题,建立主机完毕以后便可直接使用Scrapyd服务。
本资源首发于崔庆才的我的博客静觅: Python3网络爬虫开发实战教程 | 静觅
如想了解更多爬虫资讯,请关注个人我的微信公众号:进击的Coder
weixin.qq.com/r/5zsjOyvEZ… (二维码自动识别)