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读写,访问时会频繁写日志,影响性能。