SimplerWorker部署(二)--分布式部署

        使用多台低配置服务器相互协作工作,以达到系统最高性能为目标。

不吹牛逼了,开始干活吧!

1. 安装多台虚拟机

集群需要多台服务器配合,由于硬件限制,这里以四台虚拟机为例。

1.1clone虚拟机

给一台虚拟机分配2G内存,20G硬盘,1核cpu,虚拟机使用桥接方式,如下图:


1.1.2 clone虚拟机

    根据上一章节,搭建好一台虚拟机,clone成多台,我们以clone一台为例,将安装好的虚拟关机

    虚拟机-》管理-》克隆-》“下一步”-》“下一步”-》“克隆类型”,选择“创建完整克隆(F)”-》“新虚拟机名称”,名称和路径不要有中文-》“完成”

    等待clone完成后,被克隆的虚拟机将自动开机,接下来就是配置网卡了。

1.2 修改网卡配置

这里以一台虚拟机配置为例,余下的也这样配置

1.2.1 查看ip和mac地址

虚拟机-》编辑-》虚拟网络编辑器-》选择类型为“NAT模式”项-》点击“DHCP配置”

虚拟机-》设置-》硬件-》网络适配器-》“网络连接”下的“高级”,查看mac地址

1.2.2 修改mac地址和绑定ip

查看Mac地址和ip

    使用Root用户登录Linux,进入shell终端,查看ifcfg-enoxxxxx文件

ls /etc/sysconfig/network-scripts/


需要修改的文件为 ifcfg-eno16777736(不同机子后面的数字不一样,但是都是以 ifcfg-eno 开头)

填写1.2.1查看到的ip和Mac

填写如下红色框处,填写完保存退出(执行命令   :wq )


删除备份文件和隐藏文件

删除备份文件和隐藏文件,执行如下命令:

rm /etc/sysconfig/network-scripts/ifcfg-eno16777736~

rm /etc/sysconfig/network-scripts/.ifcfg-eno16777736*

1.2.3 配置dns

填写dns

vim /etc/resolv.conf


删除自动备份和隐藏文件:  

rm   /etc/resolv.conf~   -rf
rm    /etc/.resolv.conf*    -rf

重启系统,执行命令: reboot 或者点击关机图标关机.

1.2.4 重启网络

执行命令   

service network restart


如果重启失败,请自行百度解决,也可以看下我是怎么粗暴解决的,参考我抄袭的文章:

Failed to start LSB: Bring up/down networking

1.3     Ip指向站点

在《环境部署》一文中,我们已经将代码部署好,但是不同的服务器域名和ip不同,所以我们需要每个虚拟的NGINX下的conf都要修改。

1.3.1 增加ip指向

给当前站点增加ip指向,配置文件:

vim /usr/local/nginx/conf/vhost/www.sw.com.conf


1.3.2 更改default指向

vim /usr/local/nginx/conf/nginx.conf

修改root站点指向,修改包含为enable-php-thinkphp.conf , 如下图:

 

1.3.3 重启nginx

执行命令:

 /etc/init.d/nginxrestart


此时访问ip地址,可访问到站点了,其它三台虚拟机也配置各自ip指向各自站点。

2.     安装多台物理机

多台物理机安装,将全部采用ip方式,没有域名。除了以多台物理机安装《环境搭建》方式搭建多台物理机服务器代替克隆外,其它跟安装多台虚拟机一致

3.      安装多台云服务器

多台云服务器安装和多台物理机安装一致

4.     如何分布式部署

为了部署更加接近真实环境(多台物理机或多台云服务器),这里在虚拟机上也采用ip方式进行部署演示。

4.1    资源分配

通过对虚拟的部署,我们有了四台主机,ip地址分别是192.168.218.128、192.168.218.129、192.168.218.130、192.168.218.131,四台虚拟机功能分别如下:

192.168.218.128:充当registergatewaybusinessworker服务器,gatewaybusinessworker服务器分别开启4个进程

192.168.218.129:充当businessworker服务器,开启4个进程

192.168.218.130192.168.218.131:充当gateway服务器,分别开启4个进程

 

4.2    部署第一台(register)

第一台服务器为ip地址为192.168.218.128的服务器,充当registergatewaybusinessworker服务器,gatewaybusinessworker分别开启4个进程。

4.2.1               修改gatewayClient的register地址

 

修改代码 ./config/worker/config.php

在return 中返回 

 "register_ip_port" =>'192.168.218.128:1236',

说明:192.168.218.128 为当前服务器ip地址,1236register监听端口,提供gatewaybusinessworker连接。

 

4.2.2               修改服务器启动参数

修改代码: ./application/worker/controller/Server.php

protected $register =true;// 是否将当前服务器配置为 register 服务器
protected $registerIpPort ='192.168.218.128:1236';// register 服务器的ip和端口(一定要填写,不管 register 是true还是false)

protected $businessWorker = true; // 是否配置为business_worker服务器
protected $businessWorkerCount = 4;  //  当前business_worker服务器开启的进程数

protected $gateway = true; // 是否将当期服务器配置为gateway服务器
protected $gatewayLanIp ='192.168.218.128';// 当前gateway服务器ip地址(内网ip)
protected $gatewayWebSocket = '192.168.218.128:8082';//服务器webSocket地址和端口,提供客户端连接,一般是当前gateway服务器外网ip和端口
protected $gatewayCount = 4; // 当前gateway服务器的进程数
protected $gatewayStartPort = 2300;/*当前gateway服务器的内部通讯起始端口,如果gateway_count为4,则一般会使用2300 2301 2302 2303 4个端口作为内部通讯端口*/
4.2.3 导入数据库

编辑文件 ./config/databases.php ,把服务器地址、数据库名、用户名、密码设置成当前mysql服务器mysql对应信息。

导入sw.sql数据库。例如下图,导入到sw数据库中。



4.2.4  部署代码

将修改好后的代码部署到ip地址为192.168.218.128 的服务器上,例如,这里部署到:/home/wwwroot/SimplerWorker/下,同时进行命令:

cd   /home/wwwroot/SimplerWorker/
chown   -R   www:www */*
chgrp   -R   www  */*

 

4.3    部署第二台(businessworker)

第二台ip地址为:192.168.218.129,充当businessworker服务器,开启4个进程

4.3.1               修改gatewayClient的register地址

修改代码  ./config/worker/config.php

在return 中返回 

 "register_ip_port" =>'192.168.218.128:1236',

说明:192.168.218.128 为当前服务器ip地址,1236register监听端口,提供gatewaybusinessworker连接。这个地址不变,表示这个businessworker服务器需要到第一台(192.168.218.128)的服务器上获取gatewayworker注册列表信息。

4.3.2               修改服务器启动参数

修改代码: ./application/worker/controller/Server.php (红色字体为修改处)

    protected $register =false;// 是否将当前服务器配置为 register 服务器
    protected $registerIpPort ='192.168.218.128:1236';// register 服务器的ip和端口(一定要填写,不管 register 是true还是false)

    protected $businessWorker = true; // 是否配置为business_worker服务器
    protected $businessWorkerCount = 4;  //  当前business_worker服务器开启的进程数

    protected $gateway =false; // 是否将当期服务器配置为gateway服务器
    protected $gatewayLanIp ='192.168.218.128';// 当前gateway服务器ip地址(内网ip)
    protected $gatewayWebSocket ='192.168.218.128:8082';// 服务器webSocket地址和端口,提供客户端连接,一般是当前gateway服务器外网ip和端口
    protected $gatewayCount = 4; // 当前gateway服务器的进程数
    protected $gatewayStartPort = 2300;/*当前gateway服务器的内部通讯起始端口,如果gateway_count为4,则一般会使用2300 2301 2302 2303 4个端口作为内部通讯端口*/

4.3.3 导入数据库

编辑文件 ./config/databases.php ,把服务器地址、数据库名、用户名、密码设置成当前mysql服务器mysql对应信息。

导入sw.sql数据库。例如下图,导入到sw数据库中。



 

4.3.4               部署代码

将修改好后的代码部署到ip地址为192.168.218.129 的服务器上,例如,这里部署到:/home/wwwroot/SimplerWorker/下。同时进行命令:

cd   /home/wwwroot/SimplerWorker/
chown   -R   www:www */*
chgrp   -R   www  */*

4.4    部署第三台(gateway)

第三台服务器ip地址为:192.168.218.130,充当gateway服务器,分别开启4个进程。

 

4.4.1               修改gatewayClient的register地址

修改代码./config/worker/config.php

在return 中返回

  "register_ip_port" =>'192.168.218.128:1236',

说明:192.168.218.128 为当前服务器ip地址,1236register监听端口,提供gatewaybusinessworker连接。这个地址不变,表示这个gateway服务器需要向第一台(192.168.218.128)服务器上进行连接列表信息注册。

 

4.4.2               修改服务器启动参数

修改代码: ./application/worker/controller/Server.php (红色字体为修改处)

    protected $register = false;// 是否将当前服务器配置为 register 服务器
    protected $registerIpPort ='192.168.218.128:1236';// register 服务器的ip和端口(一定要填写,不管 register 是true还是false)

    protected $register =false;// 是否将当前服务器配置为 register 服务器
    protected $registerIpPort ='192.168.218.128:1236';// register 服务器的ip和端口(一定要填写,不管 register 是true还是false)

    protected $businessWorker = false; // 是否配置为business_worker服务器
    protected $businessWorkerCount= 4;  // 当前business_worker服务器开启的进程数

    protected $gateway = true; // 是否将当期服务器配置为gateway服务器
    protected $gatewayLanIp = '192.168.218.130';// 当前gateway服务器ip地址(内网ip)
    protected $gatewayWebSocket ='192.168.218.130:8082';// 服务器webSocket地址和端口,提供客户端连接,一般是当前gateway服务器外网ip和端口
    protected $gatewayCount = 4;// 当前gateway服务器的进程数
    protected $gatewayStartPort =2300;/*当前gateway服务器的内部通讯起始端口,如果gateway_count为4,则一般会使用2300 2301 2302 2303 4个端口作为内部通讯端口*/
4.4.3 导入数据库

编辑文件 ./config/databases.php ,把服务器地址、数据库名、用户名、密码设置成当前mysql服务器mysql对应信息。

导入sw.sql数据库。例如下图,导入到sw数据库中。



4.4.4               部署代码

将修改好后的代码部署到ip地址为192.168.218.130 的服务器上,例如,这里部署到:/home/wwwroot/SimplerWorker/下,同时进行命令:

cd   /home/wwwroot/SimplerWorker/
chown   -R   www:www */*
chgrp   -R   www  */*

4.5    部署第四台(gateway)

第四台部署和第三台一样(除了ip地址不同之外)

第三台服务器ip地址为:192.168.218.131,充当gateway服务器,分别开启4个进程。

 

4.5.1               修改gatewayClient的register地址

修改代码 ./config/worker/config.php

在return 中返回 

 "register_ip_port" =>'192.168.218.128:1236',

说明:192.168.218.128 为当前服务器ip地址,1236register监听端口,提供gatewaybusinessworker连接。这个地址不变,表示这个gateway服务器需要向第一台(192.168.218.128)服务器上进行连接列表信息注册。

 

4.5.2               修改服务器启动参数

修改代码:./application/worker/controller/Server.php (红色字体为修改处)

 

 

    protected $register = false;// 是否将当前服务器配置为 register 服务器
    protected $registerIpPort ='192.168.218.128:1236';// register 服务器的ip和端口(一定要填写,不管 register 是true还是false)

    protected $register =false;// 是否将当前服务器配置为 register 服务器
    protected $registerIpPort ='192.168.218.128:1236';// register 服务器的ip和端口(一定要填写,不管 register 是true还是false)

    protected $businessWorker = false; // 是否配置为business_worker服务器
    protected$businessWorkerCount = 4;  //  当前business_worker服务器开启的进程数

    protected $gateway = true; // 是否将当期服务器配置为gateway服务器
    protected $gatewayLanIp = '192.168.218.131';// 当前gateway服务器ip地址(内网ip)
    protected $gatewayWebSocket ='192.168.218.131:8082';// 服务器webSocket地址和端口,提供客户端连接,一般是当前gateway服务器外网ip和端口
    protected $gatewayCount = 4;// 当前gateway服务器的进程数
    protected $gatewayStartPort =2300;/*当前gateway服务器的内部通讯起始端口,如果gateway_count为4,则一般会使用2300 2301 2302 2303 4个端口作为内部通讯端口*/

 

4.5.3 导入数据库

编辑文件 ./config/databases.php ,把服务器地址、数据库名、用户名、密码设置成当前mysql服务器mysql对应信息。

导入sw.sql数据库。例如下图,导入到sw数据库中。


4.5.4               部署代码

将修改好后的代码部署到ip地址为192.168.218.131 的服务器上,例如,这里部署到:/home/wwwroot/SimplerWorker/下,同时进行命令:

cd   /home/wwwroot/SimplerWorker/
chown   -R   www:www */*
chgrp   -R   www  */*

4.6    启动服务器

我们分别启动四台服务器,先启动第一台,然后分别启动第二台,第三台。启动方式如下:

1. 使用root用户登录系统

2. 进入服务器的 /home/wwwroot/SimplerWorker/worker 目录

3. 以root执行命令 

 php worker_server.php start -d

第一台服务器启动成功将显示如下图所示:(都显示OK后,可以ctrl+c,此时register、businessworker、gateway以守护进程模式运行)

 

第二台服务器启动成功将显示如下图所示:

 

第三台服务器启动成功将显示如下图所示:

 

第四台服务器启动成功将显示如下图所示:

 

 

5.     初步测试

在其他网段,例如192.168.218.132 (需要能访问gateway服务器)下打开网页,输入: http://192.168.218.131/worker/index/index, F12打开控制台,点击网页上的“发送”按钮,将打印出 sw_user 表的信息。此时,分布式部署初步成功。

 

6.     DNS代理

在这里,我们有两台gateway服务器,而客户端要连接服务器,就需要连接gateway服务器,两台gateway服务器并不方便客户端接入。此时,我们需要做DNS负载均衡反向代理或者LVS负载均衡反向代理。这里我们直接使用nginx服务器的反向代理为例:

负载均衡反向代理的作用:优化服务器负载,单一入口方便客户端接入,其它......

(DNS   代理我将在下一节讲解)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值