使用Docker Swarm搭建分布式爬虫集群的方法示例

2020-06-17 06:43:13易采站长站整理

在爬虫开发过程中,你肯定遇到过需要把爬虫部署在多个服务器上面的情况。此时你是怎么操作的呢?逐一SSH登录每个服务器,使用git拉下代码,然后运行?代码修改了,于是又要一个服务器一个服务器登录上去依次更新?

有时候爬虫只需要在一个服务器上面运行,有时候需要在200个服务器上面运行。你是怎么快速切换的呢?一个服务器一个服务器登录上去开关?或者聪明一点,在Redis里面设置一个可以修改的标记,只有标记对应的服务器上面的爬虫运行?

A爬虫已经在所有服务器上面部署了,现在又做了一个B爬虫,你是不是又得依次登录每个服务器再一次部署?

如果你确实是这么做的,那么你应该后悔没有早一点看到这篇文章。看完本文以后,你能够做到:

2分钟内把一个新爬虫部署到50台服务器上:


docker build -t localhost:8003/spider:0.01 .
docker push localhost:8002/spider:0.01
docker service create --name spider --replicas 50 --network host 45.77.138.242:8003/spider:0.01

30秒内把爬虫从50台服务器扩展到500台服务器:


docker service scale spider=500

30秒内批量关闭所有服务器上的爬虫:


docker service scale spider=0

1分钟内批量更新所有机器上的爬虫:


docker build -t localhost:8003/spider:0.02 .
docker push localhost:8003/spider:0.02
docker service update --image 45.77.138.242:8003/spider:0.02 spider

这篇文章不会教你怎么使用Docker,所以请确定你有一些Docker基础再来看本文。

Docker Swarm是什么

Docker Swarm是Docker自带的一个集群管理模块。他能够实现Docker集群的创建和管理。

环境搭建

本文将会使用3台Ubuntu 18.04的服务器来进行演示。这三台服务器安排如下:

Master:45.77.138.242

Slave-1:199.247.30.74

Slave-2:95.179.143.21

Docker Swarm是基于Docker的模块,所以首先要在3台服务器上安装Docker。安装完成Docker以后,所有的操作都在Docker中完成。

在Master上安装Docker

通过依次执行下面的命令,在Master服务器上安装Docker


apt-get update
apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
apt-get update
apt-get install -y docker-ce

创建Manager节点

一个Docker Swarm集群需要Manager节点。现在初始化Master服务器,作为集群的Manager节点。运行下面一条命令。