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


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

本建议方案是基本集群方案,具体方案需要根据需求评估设计!方案拓扑图如下:

注意

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

 

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

 



执⾏概要
具体⽬标
提⾼商城系统可⽤性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动态资源。服务通过systemd管理
4.redis服务器(标准版双副本2G主从)
5.数据库实现读写分离(阿⾥云rds)读写实例:8核16G。只读实例:8核16G(读写分离可选)

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

 

服务器实例都需要公网ip,商城业务需要使用
注:特别提醒,服务器预算只是按月实例费用,不包含按量费用预估,具体费用以阿里云报价为准!

 

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

商城系统相关配置

配置守护进程
使用nginx或apache运行的用户执行,这个必须开机就执行
/path/to/yun_shop/daemon.sh /path/to/php
 
可以使用supervisor去管理进程
集群客户需要修改
supervisord.conf需要修改如下
[inet_http_server]   
port=*:9001
 
守护进程配置
[program:queue]
command=/path/to/daemon.sh /path/to/php
autostart=true
autorestart=true
user=www
numprocs=1
redirect_stderr=true
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=5
stdout_logfile=/path/to/storage/logs/worker.log
 
说明:
/path/to/daemon.sh     daemon.sh文件位置
/path/to/php               php执行文件位置
/path/to/storage/logs/worker.log      日志位置
 
商城后台填写相应服务器内网ip
 
 
 
 
独立框架读写分离设置:
database/config.php 配置 读库信息

<?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 为开启读写分离

 
2、迁移商城务必删除商城目录下bootstrap/cache/*缓存文件,并重启php程序
3.不要放通9001对公网访问,出问题的自行负责.

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部