太原网站优化推广,注册公司需要登录的网址,网上备案,百度seo快排软件分布式爬虫往往都需要多个环境#xff0c;多个进程#xff0c;如果手动去管理这些环境是很费事的#xff0c;使用Docker集群就能很好地帮你解决这些问题#xff0c;让你的爬虫管理变得简单。 主节点安装Docker
这里主节点建议大家使用Ubuntu#xff0c;从节点随意。 Ubun… 分布式爬虫往往都需要多个环境多个进程如果手动去管理这些环境是很费事的使用Docker集群就能很好地帮你解决这些问题让你的爬虫管理变得简单。 主节点安装Docker
这里主节点建议大家使用Ubuntu从节点随意。 Ubuntu 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 [archamd64] https://download.docker.com/linux/ubuntu bionic stable apt-get update apt-get install -y docker-ce Centos yum update -y yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fast yum -y install docker-ce
启动Docker
所用ip为本机公网ip systemctl start docker --advertise-addr 33.22.11.123
新建Manager节点 docker swarm init
运行后会产生如下结果
从返回结果中保存以下命令 每个Salve节点都需要使用此命令加入集群 docker swarm join --token SWMTKN-1-u4959x22226d0588888888ep3rnnnnnnnnnccepdmmmmmdu-3d4444444444444444pm68ow 2.3.4.5:2377
如果忘了这条命令可以使用以下命令重置 docker swarm join-token manager
查看集群状态
你可以看到有一个主节点在运行 docker node ls
创建私有源 使用Docker自带的私有源 # 拉取私有源镜像 docker pull registry:latest # 启动私有源 docker run -d -p 8181:5000 --name registry -v /tmp/registry:/tmp/registry docker.io/registry:latest # 为此http私有源添加信任 echo { insecure-registries:[33.22.11.123:8181] } /etc/docker/daemon.json # 重启Docker systemctl restart docker
搭建Redis进行测试
参考以下文章进行安装配置centos7安装redis - 知乎
编写脚本往Redis里放入测试数据 import redis client redis.Redis(host33.22.11.123, port6379) for i in range(100): client.lpush(test, 测试数据 {}.format(i))
编写Dockerfile from python:3.6 label mantainertest-spider user root ENV PYTHONUNBUFFERED0 ENV PYTHONIOENCODINGutf-8 run python3 -m pip install redis copy spider.py spider.py cmd python3 spider.py
编写测试爬虫 import time import redis client redis.Redis(host33.22.11.123, port6379) while True: data client.lpop(test) if data: print(spider data) time.sleep(10)
构建Docker镜像
将Dockerfile跟测试爬虫都放在同一目录 docker build -t localhost:8003/spider:0.01 .
上传镜像到私有云 这里需要特别注意由于我们要把这个镜像上传到私有源供Slave服务器上面的从节点下载所以镜像的命名方式需要满足localhost:8003/自定义名字:版本号这样的格式。其中的自定义名字和版本号可以根据实际情况进行修改。在本文的例子中我由于要模拟一个爬虫的程序所以给它取名为spider由于是第1次构建所以版本号用的是0.01。 docker push localhost:8181/spider:0.01
新建Salve节点 yum update -y yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fast yum -y install docker-ce echo { insecure-registries:[33.22.11.123:8181] } /etc/docker/daemon.json systemctl start docker docker swarm join --token SWMTKN-1-23fg5ptocob5u2oeyh0984444444229990o2fp8ga4sl-5qwkvghtnzbqjnvk5dxqdqym7 33.22.11.123:2377
使用3个容器创建spider的服务
--replicas 用来指定开启的容器数量 但是一般一开始的代码可能会有不少bug所以建议先使用1个容器来运行观察日志发现没有问题以后再进行扩展。 docker service create --name spider --replicas 3 --network host 45.77.138.242:8003/spider:0.01
查看容器的运行状况 docker service ps spider
查看容器运行日志 # 查看指定ID的服务日志 docker service logs -f 容器ID # 查看所有spider服务的日志 docker service ps spider | grep Running | awk {print $1} | xargs -i docker service logs --tail 20 {}
横向扩展
如果你的机器数量小于你开启的服务数量将会在1台机器上开启多个镜像 docker service scale spider10
更新爬虫 提交新的镜像到私有源 docker build -t 33.22.11.123:8003/spider:0.02 . docker push 33.22.11.123:8181/spider:0.02 更新Salve中的镜像 如果不关闭现有服务直接更新就会依次次更新 # 关闭服务再更新 docker service scale spider0 docker service update --image 33.22.11.123:8181/spider:0.02 spider docker service scale spider10
是不是觉得如果在100台服务器上安装Docker还是很麻烦下一篇 我们使用Fabric就可以自动化配置Docker集群让你解放双手。 往期文章 一周一技 | 批量插入数据到MongoDB并去重 一周一技 | Scrapy如何POST提交空JSON数据 一周一技 | 盘点Python的骚操作 一周一技 | 把很多小姐姐合成一个小姐姐的马赛克拼图 一周一技 | 如何让Python-Pyinstaller打包的程序小于10M 一周一技 | 登陆淘宝如何绕过滑块验证 一周一技 | 利用爬虫技术做一个短信轰炸鸡