centos7分布式部署pyspider(精简)

2023-05-16

**

0理论

**
以下内容摘自框架设计
pyspider 的架构主要分为 scheduler(调度器), fetcher(抓取器), processor(脚本执行):

在这里插入图片描述

  • 各个组件间使用消息队列连接,除了 scheduler 是单点的,fetcher 和 processor
    都是可以多实例分布式部署的。scheduler 负责整体的调度控制

  • 任务由 scheduler 发起调度,fetcher 抓取网页内容, processor执行预先编写的 python
    脚本,输出结果或产生新的提链任务(发往 scheduler),形成闭环。

  • 每个脚本可以灵活使用各种 python 库对页面进行解析,使用框架 API 控制下一步抓取动作,通过设置回调控制解析动作。

  • 意思就是,如果我们想要进行分布式的运行,那么我们需要公用 master 的 scheduler ,其他 slave 机子只需要跑自己的 fetcher 和 processor 即可

**

1.环境

**
系统版本:Linux 3.10.0-957.el7.x86_64
python版本:centos自带python2.7
更换镜像源请移步:https://blog.csdn.net/inslow/article/details/54177191

**

2.搭建

**

下载依赖:yum install -y ncurses-devel openssl openssl-devel zlib-devel gcc make glibc-devel libffi-devel glibc-static glibc-utils sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-deve

脚本安装和升级pip(已安装pip可忽略)

wget https://bootstrap.pypa.io/get-pip.py
$ python get-pip.py
$ pip -V  ##查看pip版本

**

3.安装依赖库

**

##直接安装
pip install pyspider
pip install mysql-connector
pip install redis
pip install pymongo
pip install six
systemctl stop firewalld
##此时启动pyspider,关闭防火墙即访问localhost:5000可看到webui页面

**

4.安装Supervisor

**

##管理多个进程,推荐使用Supervisor监控
yum install supervisor -y  
##若提示没有可用软件包 supervisor,则需要添加阿里的epel源。
vim /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
http://mirrors.aliyuncs.com/epel/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=http://mirrors.aliyun.com/epel/7/$basearch/debug
http://mirrors.aliyuncs.com/epel/7/$basearch/debug
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=0

[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=http://mirrors.aliyun.com/epel/7/SRPMS
http://mirrors.aliyuncs.com/epel/7/SRPMS
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=0

##再次安装
yum install supervisor -y  
##测试是否安装成功
echo_supervisord_conf

**

5.使用Supervisor

**

进入服务器centos01,经过第一步,基本环境已经搭好,首先编辑配置文件/root/config.json

这里我用的是外部数据库,所以本地没有安装mysql服务
{
“taskdb”: “mysql+taskdb://root:1234@192.168.2.100:3306/taskdb”,
“projectdb”:“mysql+taskdb://root:1234@192.168.2.100:3306/pyspider_projectdb”,
“resultdb”: “mysql+taskdb://root:1234@192.168.2.100:3306/pyspider_resultdb”,
“message_queue”: “mysql://root:root@192.168.2.67:3306/0”,
“webui”: {“port”: 5000 }
}

添加scheduler.ini、webui.ini 写入后,运行 supervisorctl reload 刷新配置,即会自动运行。

systemctl enable supervisord.service    ##添加到自启动服务
supervisorctl                           ##启动supervisor的命令行窗口
##假设在主机master中创建进程scheduler、webui


vim /etc/supervisord.d/scheduler.ini    ##写入以下内容并保存
[program:scheduler]
command      = pyspider -c /root/config.json scheduler  ##仅启动组件scheduler
directory    = /usr/lib/python2.7/site-packages/pyspider##这是我自己的pyspider地址
user         = root
process_name = %(program_name)s
autostart    = true
autorestart  = true
startsecs    = 3

redirect_stderr         = true
stdout_logfile_maxbytes = 500MB
stdout_logfile_backups  = 10
stdout_logfile          = /pyspider/supervisor/scheduler.log


vim /etc/supervisord.d/webui.ini    ##写入以下内容并保存
[program:webui]
command      = pyspider -c /root/config.json webui      ##仅启动组件webui
directory    = /usr/lib/python2.7/site-packages/pyspider
user         = root
process_name = %(program_name)s
autostart    = true
autorestart  = true
startsecs    = 3


redirect_stderr         = true
stdout_logfile_maxbytes = 500MB
stdout_logfile_backups  = 10
stdout_logfile          = /etc/supervisord.d/webui.log

进入服务器centos02centos03,在从机slave中创建进程fetcher、processor、result-worker ##注意这里是result-worker不是result_worker ,如果webui 如果和 scheduler 不在同一台机器上,需要设置 --scheduler-rpc 的地址,告诉 webui 如何与 scheduler 通信,以实现监控

centos01scheduler、webui
centos02fetcher、processor、result-worker
centos03fetcher、processor、result-worker

**

6.最后

**
进入三台机器,运行 supervisorctl reload
查看运行状态supervisorctl status

  • scheduler RUNNING pid 43638, uptime 21:09:12
  • webui RUNNING pid 43639, uptime 21:09:12
  • fetcher RUNNING pid 23783, uptime 21:09:12
  • phantomjs RUNNING pid 23785, uptime 21:09:12
  • processor RUNNING pid 23784, uptime 21:09:12
  • result_worker RUNNING pid 23782, uptime 21:09:12

访问 http://192.168.2.68:5000 即可,尽情爬取吧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

centos7分布式部署pyspider(精简) 的相关文章

随机推荐