专栏首页进击的Coder分布式爬虫的部署之Scrapyd批量部署

分布式爬虫的部署之Scrapyd批量部署

我们在上一节实现了Scrapyd和Docker的对接,这样每台主机就不用再安装Python环境和安装Scrapyd了,直接执行一句Docker命令运行Scrapyd服务即可。但是这种做法有个前提,那就是每台主机都安装Docker,然后再去运行Scrapyd服务。如果我们需要部署10台主机的话,工作量确实不小。

一种方案是,一台主机已经安装好各种开发环境,我们取到它的镜像,然后用镜像来批量复制多台主机,批量部署就可以轻松实现了。

另一种方案是,我们在新建主机的时候直接指定一个运行脚本,脚本里写好配置各种环境的命令,指定其在新建主机的时候自动执行,那么主机创建之后所有的环境就按照自定义的命令配置好了,这样也可以很方便地实现批量部署。

目前很多服务商都提供云主机服务,如阿里云、腾讯云、Azure、Amazon等,不同的服务商提供了不同的批量部署云主机的方式。例如,腾讯云提供了创建自定义镜像的服务,在新建主机的时候使用自定义镜像创建新的主机即可,这样就可以批量生成多个相同的环境。Azure提供了模板部署的服务,我们可以在模板中指定新建主机时执行的配置环境的命令,这样在主机创建之后环境就配置完成了。

本节我们就来看看这两种批量部署的方式,来实现Docker和Scrapyd服务的批量部署。

一、镜像部署

以腾讯云为例进行说明。首先需要有一台已经安装好环境的云主机,Docker和Scrapyd镜像均已经正确安装,Scrapyd镜像启动加到开机启动脚本中,可以在开机时自动启动。

进入腾讯云后台,点击更多选项制作镜像,如下图所示。

输入镜像的一些配置信息,如下图所示。

确认制作镜像,稍等片刻即可制作成功。

接下来,创建新的主机,在新建主机时选择已经制作好的镜像即可,如下图所示。

后续配置过程按照提示进行即可。

配置完成之后登录新到云主机,即可看到当前主机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服务。

本文分享自微信公众号 - 进击的Coder(FightingCoder),作者:崔庆才

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 分布式爬虫的部署之Gerapy分布式管理

    崔庆才
  • 内网主机从外面连接不了?SSH反向隧道来帮你!

    崔庆才
  • 用了几年 Python,但你可能连这个都没学透

    在 Python 中用的最多的可能就是 import 了,几乎我们写的每个 Python 脚本都是需要的,但这个 import 其实也有些讲究的,比如用不好很可...

    崔庆才
  • python HTTP请求--reque

    python中你用什么库发送HTTP请求呢,urllib,urllib2? 下面介绍一个更简单的:requests。 使用requests,可以简洁高效的发...

    py3study
  • SFFAI分享 | 古纾旸:Generative model is more than just GANs【附PPT与视频资料】

    近些年来,随着深度学习和对抗生成网络的兴起,图像生成领域取得了巨大的进步。然而,对于计算机视觉领域的生成问题,并非只有生成对抗网络这样唯一的解决途径。在SFFA...

    马上科普尚尚
  • WAS 8.5在AIX上无法启动图形化概要管理工具WCT或PMT之解 博客分类: IBM WebSphere Java IBM WebSp

    问题描述:WAS 8.5在AIX上因缺少相应的组件包,而无法启动图形化概要管理工具WCT或PMT

    阿敏总司令
  • 测度转换 (下) – 漂移项转换

    先考虑一个在 P 测度下的标准正态随机变量 X1 ~ N(0, 1) 和 X2 ~ N(-μ, 1),令事件 A = {a ≤ X ≤ y},我们可写出 X1 ...

    用户5753894
  • 机器学习:基于网格的聚类算法

    俗话说:“物以类聚,人以群分”,在机器学习中,聚类算法是一种无监督分类算法。聚类算法很多,包括基于划分的聚类算法(如:kmeans),基于层次的聚类算法(如:B...

    张蓓
  • 全球最大的基金公司富达投资未来战略:人工智能、区块链和虚拟现实

    拥有72年历史、管理资产高达7万亿美元的富达投资正大举投资人工智能、区块链和虚拟现实技术,每年在技术研发上投资25亿美元,先后建立了富达应用技术中心、富达实验室...

    点滴科技资讯
  • 吴恩达机器学习笔记-4

    偏斜类(skewed classes)问题,表现为训练集中有非常多的同一种类的实例,只有很少或没有其他类的实例。

    happy123.me

扫码关注云+社区

领取腾讯云代金券