1 前言
1.1设计目标
- 保障业务持续性,避免单点故障
- 保障业务可用性,提升系统性能,提高系统业务承载能力
1.2设计思路
采用“独立服务器角色”的思路,使每种服务器角色(任务分发、运算、中间件、缓存、数据库等)独立的存在于内网的不同主机上,各司其职,以整体提高系统性能。
1.2优点
- 发生服务器宕机或其他服务器事故后,能快速定位问题源;
- 各服务器角色独立,排查、排除问题方便;
- 可靠性高,非关键性节点服务器(中间件、缓存)宕机,网站仍能访问。
1.3缺点
- 配置成本高,运维难度大。
2 系统构架方案
该方案适合日均访问量比较大,且对安全以及可靠性有要求的用户。一般可以保持比较有效的业务连续性。
2.1平台技术指标
- 日峰值PV承载量:300万
- 日峰值IP(UV)承载量:60万(按照PV量得五分之一进行计算)
- 日均订单量:10000单,峰值:15000单
- 搜索打开速度:2-4秒 (如使用CDN服务为5-3.5秒)
- DNS解析速度:2~0.4秒
注:平台指标为预估值,实际架构的性能表现会受到网络环境,二次开发代码执行效率、页面复杂程度、瞬间并发量等影响。平台实际的承载量要以压力测试数据为准。
2.2平台角色划分
系统架构采用7机(未包含前端代理,如果是物理机部署,需要增加1台服务器做集群的代理)系统架构采用7台物理服务器(或云主机),各司其职,组网后可以达到一定的可靠性、可用性,具体设计如下:
- 负载均衡服务器:haproxy(或者SLB)
- APP的主WEB服务器:php-fpm+nginx
- APP的从WEB服务器: php-fpm +nginx
- APP的从WEB服务器: php-fpm +nginx
- 静态资源服务器(图片以及静态文件):nginx
- 主DB服务器:my sql主数据库(master)
- 从DB服务器:my sql容灾数据库(slave)
- 中间件服务器:redis+memcache
注:平台指标为预估值,实际架构表现会受到网络环境,二次开发代码执行效率和数据量的影响。平台实际的承载量要以压力测试数据为准。
2.3集群架构图
2.4架构设计说明
- Web端服务器设计
- Web端针对不同产品模组,通过负载均衡器,确保效率,保障安全。
- 负载均衡,使用haproxy完成分发(或SLB)
- 接到80端请求后,先经过haproxy,并进行任务分发,接到分发任务的web服务器进行任务处理,针对静态页面相关任务由NGINX完成处理,针对动态页面相关任务通过cgi动态解析,由PHP-FPM完成处理。
- MYsql服务器设计
- Mysql主要用于存储核心业务数据,采用主从分离的方式进行配置,减缓主数据库压力的,提供紧急情况的应急保障。
- Mysql首先要配置读写分离模式,并且程序本身也要支持,配置方式为在php里面开启slave设置,注释去掉,配成相应主机即可启用。
- 中间件及缓存服务器设计
- 中间件服务器采用Redis KVstore,主要存储网站配置信息,web接到任务指令后,针对此类信息直接调用,减轻Mysql的压力。
- 缓存服务器采用Memcache,原理与Redis KVstore一致,主要存储前端缓存、session会话,web接到任务指令后,针对此类信息直接调用,减轻Mysql的压力。
- 同步服务:建议采用NFS磁盘挂载,类似于windows的文件共享服务,非常适合3台web服务器间的代码同步,相较于rsync主从推送服务和lsyncd自动同步服务来说,没有时间间隔,达到实时同步效果。
- 计划任务:在BBC的web服务器上配置,针对BBC商城的订单导入导出,报表分析,缓存定期优化等。
2.5平台硬件配备
分组 | 建议配置 | 数量 | 功能 |
负载均衡服务器 | 8核16G | (2) | 负载均衡; |
APP web server1 | 16核32G | 1 | Nginx静态处理Php运算 |
APP web server2 | 16核32G | 1 | Nginx静态处理Php运算 |
APP web server3 | 16核32G | 1 | Nginx静态处理Php运算 |
Images等静态资源分离 | 2核4 G,要求磁盘足够大 | 1 | Nginx静态处理 |
DB主server(master) | 16核64G | 1 | Mysql主库写数据 |
DB从server(slave) | 16核32G | 1 | Mysql从库读数据 |
缓存服务器 | 16核32G | 1 | Redis kvstore数据读写、memcache 缓存读写 |
带宽 | 50M | | 双线或单线 |
2.6平台软件配备
软件 | 版本 | 说明 |
操作系统CentOS | Centos64位6.3/6.5 | 作为电商平台的基础操作架构稳定、高效、安全 |
Web应用 Nginx | 1.2.9以上 | 高性能Web服务器,并发性能强 |
Web应用PHP | 5.3.6以上 | php脚本解析引擎,运行于fast cgi模式下 |
数据MySQL | 5.6 | 应用最广泛的关系型数据库 |
缓存Memcache | 1.4或以上 | 高速缓存提升查询速度 |
Redis | 3.0或以上 | Kvstore数据存储,为mysql减压 |
数据库备份 | mysqldump | Mysql自带的数据库备份工具 |
3 系统部署方案
3.1服务器操作系统版本说明
3.2操作系统初始化说明
主机目录说明:
- /boot 200M 启动分区
- /40G 根分区
- /data 数据和应用分区 剩余大小
系统目录说明:
- /data/www 用户数据web数据目录,和配置文件
- /data/logs web日志
- / 一般不放用户文件
- /usr 一般系统程序存放
- /var 系统的日志
3.3系统压力点
- Mysql:链接数与IOPS,对于内存有较高要求。
- Web:除双11、秒杀活动等大并发量或者请求访问量大的情况,正常来说web压力不是很大(如果要做秒杀活动,需要提前做压力测试)。
- Redis:链接数与IOPS,对于内存有较高要求。
- 磁盘:IO读写,访问时会频繁写日志,影响性能。