4006-838-530
当前位置: 主页 > FAQ

部署方法三:集群/负载均衡部署

发布时间:2026-11-07 07:08   浏览次数:次   作者:E企盈


⚠️自行搭建集群环境的,E企盈不提供任何除本帖外的技术、文档支持,如自行搭建集群环境导致的程序问题,E企盈不承诺提供任何免费的售后支持!


本建议方案是基本集群方案,具体方案需要根据需求评估设计!方案拓扑图如下:
使用swoole做集群,必须有完备的运维体系. (如: 管理多设备能力等等)

基础架构选购注意:

所有资源必须在同一地域同一可用区。 

购买的资源分类、标签等等操作属于管理范畴,与业务运行毫无关系。  客户可验收后自行配置或者客户自己购买时设置。 委托我们购买一律走默认,不会设置任何标签,资源分类等操作。

 

部署方法三:集群/负载均衡部署(图1)

执⾏概要
具体⽬标
提⾼商城系统可⽤性SLA(99.9%),实现商城⾼并发,⾼负时,将流量分配到集群某节点中进⾏处理。避免单点故障和出现瓶颈问题。

⽬标
架构实施后:
1.动静态服务器、数据库服务器可横向扩容。
2.避免单点故障
3.使⽤redis作为数据库缓存

解决⽅案
1.使⽤动静分离技术,动态和静态资源分布到不同服务器处理。
2.数据库使⽤读写分离技术,减轻商城读数据压⼒。
3.使⽤redis服务器减轻⾼负载时对数据库服务器的冲击

项⽬⼤纲
• 访问流程
1.客户通过互联⽹访问GSLB或CDN,进⼊负载均衡器(购买阿⾥云负载均衡)
2.通过负载均衡器进⼊静态服务器组(nginx)2核4G*2台。服务通过systemd管理
3.动态服务器组(php)4核8G*3台,处理php动态资源。服务通过supervisord管理
4.redis服务器(标准版双副本2G主从)
5.数据库实现读写分离(阿⾥云rds)读写实例:8核16G。只读实例:8核16G(读写分离可选)

项目预算
1.报价为按年付费,某些资源按营运商实际使⽤量、时长计算。项目预算阿里云部分取2024年6月官方报价。
2.部署项⽬⼯期+测试需2周,见下图!

 

部署方法三:集群/负载均衡部署(图2)

服务器实例都需要公网ip,商城业务需要使用
注:特别提醒,服务器预算只是按年实例费用,不包含按量费用预估. 无论为了应对一次活动做集群,还是长期使用, 负载均衡搭建服务费都是10000元.

按月购买实例资源的大概价格=(固定费用-10000)/12*1.3

具体费用以营运商报价为准!

每月运维费用
10 台以下服务器 8800/月;10 台以上每增加 3台服务器(不足 3 台按 3 台计算)每月报价增加 2500 元, 即11300;

商城系统相关配置

配置守护进程
所有相关业务必须统一用户执行
 
可以使用supervisor去管理进程
集群客户需要修改
supervisord.conf需要修改如下
[inet_http_server]   
port=*:9001
 
守护进程配置(为保持一致性, 只能一台服务器起队列queue守护进程)
[program:queue]
command=/path/to/daemon.sh /path/to/php
autostart=true
autorestart=true
user=root
numprocs=1
redirect_stderr=true
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=5
stdout_logfile=/path/to/storage/logs/worker.log
 
swoole进程配置
[program:swoole]
command=/path/to/swoole.sh /usr/local/bin/php
autostart=true
autorestart=true
user=root
numprocs=1
redirect_stderr=true
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=5
stdout_logfile=/path/to/storage/logs/swoole.log
 

说明:
swoole核心后端API: /path/to/swoole.sh     swoole.sh文件位置
队列: /path/to/daemon.sh     daemon.sh文件位置
/path/to/php               php执行文件位置
/path/to/storage/logs/swoole.lo. 日志位置
/path/to/storage/logs/worker.log      日志位置

 
商城后台填写相应服务器内网ip
 
部署方法三:集群/负载均衡部署(图3)
 
 
 
独立框架读写分离设置:
database/config.php 配置 读库信息

$config = array();

$config['db']['master']['host'] = 'IP';
$config['db']['master']['username'] = 'USER';
$config['db']['master']['password'] = 'PASSWORD';
$config['db']['master']['port'] = '3306';
$config['db']['master']['database'] = 'DBNAME';
$config['db']['master']['tablepre'] = 'ims_';


$config['db']['slave_status'] = true;
$config['db']['slave']['1']['host'] = 'IP';
$config['db']['slave']['1']['username'] = 'USER';
$config['db']['slave']['1']['password'] = 'PASSWORD';
$config['db']['slave']['1']['port'] = '3306';
$config['db']['slave']['1']['database'] = 'DBNAME';
$config['db']['slave']['1']['tablepre'] = 'ims_';


商城跟目录下编辑.env 添加 DB_CONNECTION=mysql_slave 为开启读写分离
 
1. 迁移商城务必删除商城目录下bootstrap/cache/*缓存文件,并重启php-fpm程序或swoole
2. 如使用swoole, 修改代码必须重启swoole才能生效
3.不要放通9001对公网访问,出问题的自行负责.