项⽬描述
项⽬需求
近年来为适应业务发展的需求,世界500强XX企业准备进⾏⼤规模的电⼦商务建设, 同时,希望能通过Linux平台,利⽤开源技术,来实现⼤型互联⽹电⼦商务⽹站架构建设和业务⽀撑,现要求成⽴运维技术保障部门,并邀请你担当运维部门经理,对整个运维部门进⾏部署和规划。当你拿到该项⽬时,需要做以下⼏⽅⾯事情
整体项⽬分为四个⼤阶段:
⼀、前期筹划阶段
⼆、项⽬实施阶段
三、项⽬升级改造阶段
四、项⽬验收和维护阶段
⼀、前期筹划阶段
1、业务需求描述:
本公司计划组建电⼦商务⼦公司,计划三个⽉内进⾏业务上线,上线前,需要完成⼈员配置、服务器选型、基础系统、软件选型、架构⽅案设计初步可实施⽅案等相关准备⼯作。
本公司上线初期,每⽇PV300W,总请求3000W, QPS并发⽇均值300,峰值900,先实现本业务量架构和基础服务。上线1个⽉后,集团会⼤⼒推⼴相关业务,预计三个⽉后将达到每⽇总请PV2500W 总请求数2.5亿 QPS⽇均为2000, QPS峰值6000。
假设单台server能承载200QPS,单台缓存能承载2000QPS,缓存命中率90%,单台数据库能承载5000QPS,每次QPS都包含⼀次数据库查询。
⽬前需要给出两套⽅案,前期⽅案和后期⽅案:
前期⽅案:适应于初期上线阶段,架构容量能保证峰值的2倍,能⽀撑公司正常业务,有基础设施,保证正常上线下流程。
后期⽅案:在前期⽅案基础上,进⾏改造,适⽤于推⼴后阶段,需要保证架构容量能保证峰值的2倍。全部应⽤⽆单点,要求有测试环境,全部系统⽆单点,并要求架构可快速扩容,有监控、管理、备份⽅案和策略,需要降级⽅案,切换⽅案,上线流程⽅案。
⼆、项⽬准备⼯作
1、⼈员分⼯规划
2、硬件和软件选型
3、架构设计
第⼀阶段业务⽀撑架构图
三、项⽬实施阶段
项⽬实施步骤(先画出⾃⼰的架构图) :
1、服务器信息录⼊(IP、内存、 CPU、硬盘)
2、操作系统选型和批量安装(系统安装)
3、系统初始化(关闭不需要的服务、做安全控制、建⽴
对应⽬录、调整系统核⼼参数)
4、根据服务器⾓⾊,安装应⽤(根据选择⾓⾊进⾏服
务)
5、对应⽤进⾏和配置和管理
6、代码上线和服务器启动
7、对应服务确认,确保业务正常(服务可访问,业务正
常)
8、所需监控项⽬添加(系统和应⽤)
9、前端业务规则配置(负载均衡配置后端逻辑)
10、对外提供服务 (对外可提供服务)
要求:
1、全部机房服务器跟时钟服务器进⾏时钟同步
2、全部机房服务器都有⾃⼰的主机名
3、所有主机名可通过机房DNS服务做解析,跳板机可⽆密码登陆机房其他所有机器
4、软件放到/usr/local/软件名⽬录中, /etc/下有软连接配置⽂件,数据都放到/data/⽬录下,如⽹页数据放到/data/webapps/ , ⽇志放到/data/logs/,如/data/logs/nginx.log,所有应⽤尽可能源码安装,没有的可官⽹download
5、图⽚需要放到单独服务器,前端负载均衡做规则分离
6、监控需要监控⽹卡流量、内存、 CPU、磁盘使⽤、load、应⽤软件状态等指标
7、 Mysql每周⽇夜⾥3点做⼀次全量备份,周⼀到周六每天夜⾥2点做⼀次增量备份。本地备份完,放到备份服务器上。确保放成功后,将本地备份删除
8、 Haproxy对于业务实现应⽤层监控,基于http头部信息监控
9、可通过域名访问到对应⽹站和内容
10、要求⽤Puppet管理web server的nginx.conf、php.conf配置⽂件
11、⽤Ansible或者shell脚本批量对线上Web服务可进⾏代码更新,更新策略为⼀台⼀台更新
12、所有服务,都需要开机⾃动启动,并有服务管理脚本
13、 /data/logs⽬录下所有⽇志每天夜⾥1点,以.log结尾的进⾏压缩归档,并以压缩全格式时间命名
四、项⽬升级改造阶段
公司电商⽹站原只有每⽇PV300W,总请求3000W的业务量,随着集团业务要⾼速发展,预计三个⽉后,⽹站数据情况将增长为PV2500W 总请求数2.5亿的中型互联⽹规模⽹站,所需服务器200+此时,⽹站程序需要进⾏⼀次⼤改版, ⽼板也要求你对运维架构进⾏⼀次全⾯改造和业务升级,来满⾜新的业务场景。
要求:
在前期⽅案基础上,进⾏改造,适⽤于推⼴后阶段,需要保证架构容量能保证峰值的2倍。全部应⽤系统⽆单点,要求有测试环境、压测环境,核⼼节点主从切换⽅案,并要求架构可快速扩容,有监控、管理、备份⽅案和策略,需要有降级⽅案,回滚⽅案,上线流程等⽅案。
扩展项⽬架构图:
项⽬要求:
按上述描述,需要完成PV2500W 总请求数2.5亿, QPS峰值6000,的中型互联⽹规模⽹站架构, 假设单台server能承载200QPS,单台缓存能承载2000QPS,缓存命中率90%,单台数据库能承载5000QPS,每次QPS都包含⼀次数据库查询。
1、⽹站需要实现⾸页、列表页、详情页的缓存策略。通过varnish来抗⾼并发请求,缓存策略可⽤内存⽅式。
2、图⽚做分离需要缓存策略,并通过varnish进⾏缓存,缓存策略可⽤硬盘映射⽅式。
3、图⽚需要⽤分布式mogileFS做存储,做2份副本。
4、前端7层负载均衡实现mobile、 admin、 www站分离。
5、设⽴安全区域,安全区域只允许172.16⽹段和跳板机访问。
6、可尝试实现JumpServer跳板机项⽬。
7、搭建Mysql⾼可⽤架构,可选⽤MHA⽅案。
8、监控需要全覆盖⽆死⾓,监控系统、⽹络、应⽤、业务数据。(业务可调⽤LVS或者haproxy⽹络连接数来展⽰)
9、设计压测模型,通过压测⼯具,可评估系统的正常容量、峰值、 95线、等常见业务指标。
10、有⾃动化⽅案管理,可针对不同业务快速进⾏扩容。
11、有完善的备份⽅案,可针对不同配置⽂件、程序代码、数据库等进⾏有效备份。
12、对⽇志进⾏每⽇压缩归档处理,从业务、应⽤、等⾓度进⾏处理。
13、给出上线⽅案、回滚、降级⽅案,并能通过上线⽅案,更新程序代码从2.5更新到2.6版本。 (实现⽆缝切换)