如何进行分离式部署
假设需要部署4台服务器提供高可用服务:
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
01、选定192.168.1.1
服务器专门用于部署 redis 服务,所以启动 redis-server 服务即可。
02、其余三台服务器192.168.1.2~4
按照进程切分分别部署独立的业务worker实例:
192.168.1.2
机器只部署生产器进程实例(producer进程实例)192.168.1.3
机器只部署下载器进程实例(downloader进程实例)192.168.1.4
机器只部署解析器进程实例(parser进程实例)
03、设置服务器192.168.1.2
的producer进程实例配置
vim /path/to/PHPCreeper-Application/Application/Spider/Weather/Config/AppProducer.php
主要配置生产任务的间隔时间,比如设定每隔2秒生产一条任务:
<?php
return array(
'interval' => 2,
);
04、设置服务器192.168.1.4
的parser进程实例配置
vim /path/to/PHPCreeper-Application/Application/Spider/Weather/Config/AppParser.php
假设服务器192.168.1.4
的parser实例监听端口 8888:
<?php
return array(
'socket' => array(
'server' => array(
'scheme' => 'websocket',
'host' => '192.168.1.4',
'port' => 8888,
),
),
);
05、设置服务器192.168.1.3
的downloader进程实例的socket配置:
vim /path/to/PHPCreeper-Application/Application/Spider/Weather/Config/AppDownloader.php
分别配置地址指向对应的parser实例监听地址, 当然也可以指向其中任意一台目标parser实例监听地址
<?php
return array(
'socket' => array(
'client' => array(
'parser' => array(
[
'scheme' => 'ws', //必须和目标parser实例监听协议相对应
'host' => '192.168.1.4', //请填写目标parser实例监听地址
'port' => 8888, //请填写目标parser实例监听端口
],
),
),
),
);
06、分别设置三台服务器192.168.1.2~4
的redis配置:
vim /path/to/PHPCreeper-Application/Application/Spider/Weather/Config/database.php
配置数据库主机地址指向:192.168.1.1:6379
<?php
return array(
'redis' => array(
'prefix' => 'Weather',
'host' => '192.168.1.1',
'port' => 6379,
'database' => 0,
),
);
07、启动服务器192.168.1.2
的producer进程实例
php /path/to/PHPCreeper-Application/Application/Spider/Weather/Start/AppProducer.php start
08、启动服务器192.168.1.3
的downloader进程实例
php /path/to/PHPCreeper-Application/Application/Spider/Weather/Start/AppDownloader.php start
09、启动服务器192.168.1.4
的parser进程实例
php /path/to/PHPCreeper-Application/Application/Spider/Weather/Start/AppParser.php start
10、至此分离式部署完毕。