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

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

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

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

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

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

?
1
2
3
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台服务器:

?
1
docker service scale spider=500

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

?
1
docker service scale spider=0

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

?
1
2
3
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

?
1
2
3
4
5
6
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节点。运行下面一条命令。

?
1
docker swarm init

运行完成以后,可以看到的返回结果下图所示。

%小知识:使用Docker Swarm搭建分布式爬虫集群的方法示例-猿站网-插图

这个返回结果中,给出了一条命令:

复制代码 代码如下:
docker swarm join –token swmtkn-1-0hqsajb64iynkg8ocp8uruktii5esuo4qiaxmqw2pddnkls9av-dfj7nf1x3vr5qcj4cqiusu4pv 45.77.138.242:2377

这条命令需要在每一个从节点(slave)中执行。现在先把这个命令记录下来。

初始化完成以后,得到一个只有1台服务器的docker 集群。执行如下命令:

?
1
docker node ls

可以看到当前这个集群的状态,如下图所示。

%小知识:使用Docker Swarm搭建分布式爬虫集群的方法示例-1猿站网-插图

创建私有源(可选)

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

私有源本身也是一个docker的镜像,先将拉取下来:

?
1
docker pull registry:latest

如下图所示。

%小知识:使用Docker Swarm搭建分布式爬虫集群的方法示例-2猿站网-插图

现在启动私有源:

复制代码 代码如下:
docker run -d -p 8003:5000 –name registry -v /tmp/registry:/tmp/registry docker.io/registry:latest

如下图所示。

%小知识:使用Docker Swarm搭建分布式爬虫集群的方法示例-3猿站网-插图

在启动命令中,设置了对外开放的端口为8003端口,所以私有源的地址为:45.77.138.242:8003

提示:

这样搭建的私有源是http方式,并且没有权限验证机制,所以如果对公网开放,你需要再使用防火墙做一下ip白名单,从而保证数据的安全。

允许docker使用可信任的http私有源(可选)

如果你使用上面一个小节的命令搭建了自己的私有源,由于docker默认是不允许使用http方式的私有源的,因此你需要配置docker,让docker信任它。

使用下面命令配置docker:

?
1
echo { “insecure-registries”:[“45.77.138.242:8003”] }
声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:Docker容器内不能联网的6种解决方案

2023-4-5 14:04:39

建站知识

小知识:Docker创建运行多个mysql容器的方法示例

2023-4-5 14:19:24

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索