在爬虫开发过程中,你肯定遇到过需要把爬虫部署在多个服务器上面的情况。此时你是怎么操作的呢?逐一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 upload/201810151144480516.png" style="border: 0px; max-width: 900px; height: auto;" alt="" />这个返回结果中,给出了一条命令:
docker swarm join --token SWMTKN-1-0hqsajb64iynkg8ocp8uruktii5esuo4qiaxmqw2pddnkls9av-dfj7nf1x3vr5qcj4cqiusu4pv 45.77.138.242:2377
这条命令需要在每一个从节点(Slave)中执行。现在先把这个命令记录下来。
初始化完成以后,得到一个只有1台服务器的Docker 集群。执行如下命令:
docker node ls
可以看到当前这个集群的状态,如下图所示。

创建私有源(可选)
创建私有源并不是一个必需的操作。之所以需要私有源,是因为项目的Docker镜像可能会涉及到公司机密,不能上传到DockerHub这种公共平台。如果你的镜像可以公开上传DockerHub,或者你已经有一个可以用的私有镜像源,那么你可以直接使用它们,跳过本小节和下一小节。
私有源本身也是一个Docker的镜像,先将拉取下来:
