温馨提示:帖子内容附有图文说明,须登录查看!
⚠️自行搭建集群环境的,芸众不提供任何除本帖外的技术、文档支持,如自行搭建集群环境导致的程序问题,芸众不承诺提供任何免费的售后支持!
本建议方案是基本集群方案,具体方案需要根据需求评估设计!方案拓扑图如下:
执⾏概要
具体⽬标
提⾼商城系统可⽤性SLA(99.9%),实现商城⾼并发,⾼负时,将任务分配到集群的节点中进⾏处理。避免单台处理出现瓶颈问题。
⽬标
架构实施后:
1.动静态服务器、数据库服务器可横向扩容。
2.避免单点故障
3.使⽤redis作为数据库缓存
解决⽅案
1.使⽤动静分离技术,动态和静态资源分布到不同服务器处理。
2.数据库使⽤读写分离技术,减轻商城读数据压⼒。
3.使⽤redis服务器减轻⾼负载时对数据库服务器的冲击
项⽬⼤纲
• 访问流程
1.客户通过互联⽹访问GSLB或CDN,进⼊负载均衡器(购买阿⾥云负载均衡)
2.通过负载均衡器进⼊静态服务器组(nginx)2核4G*2台。
3.动态服务器组(php)4核8G*3台,处理php动态资源
4.redis服务器(标准版双副本2G主从)
5.数据库实现读写分离(阿⾥云rds)读写实例:8核16G。只读实例:8核16G(读写分离可选)
项目预算
1.单价为⽉付费,按实际使⽤量计算总价,只包含购买阿⾥云实例的价格。项目预算阿里云部分取2020年9月官方报价。
2.部署项⽬⼯期+测试需2周,见下图!
注:特别提醒,服务器预算只是按月实例费用,不包含按量费用预估,具体费用以阿里云报价为准!
商城系统相关配置
配置守护进程 使用nginx或apache运行的用户执行,这个必须开机就执行 /path/to/yun_shop/daemon.sh /path/to/php
可以使用supervisor去管理进程 集群客户需要修改 supervisord.conf需要修改如下 [inet_http_server]
port=*:9001
守护进程配置 [program:domain]
process_name=%(program_name)s_%(process_num)02d
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 多少台后端服务器安装supervisor就填多少台
重启守护进程必须全部都需要重启.不能只重启一个守护进程
服务器维护时,需要在上图中删除对应下线的机器,不然点概括会一直loading.....
独立框架读写分离设置:
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 为开启读写分离
注意: 1、底层架构是负载均衡的,如使用supervisor管理进程需要每台后端服务器都安装配置好supervisor 2、迁移服务器务必删除商城目录下bootstrap/cache/config.php缓存文件,并重启php程序(微擎版迁移也必须操作) 3.不要放通9001对公网访问,出问题的自行负责.
|