项⽬描述

项⽬需求

近年来为适应业务发展的需求,世界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版本。 (实现⽆缝切换)

Linux运维实战项⽬进阶的更多相关文章

  1. LINUX运维实战案例之文件已删除但空间不释放问题的分析与解决办法

    1.错误现象 运维的监控系统发来通知,报告一台服务器空间满了,登陆服务器查看,根分区确实没有空间了,如下图所示: 这里首先说明一下服务器的一些删除策略,由于Linux没有回收站功能,我们的线上服务器所 ...

  2. Linux运维实战之DNS(bind)服务器的安装与配置

    转自http://sweetpotato.blog.51cto.com/533893/1598225 上次博文我们讨论了DNS的基础,本次博文我们重点来看看如何配置一台DNS服务器. [本次博文的主要 ...

  3. Linux运维实战之磁盘分区、格式化及挂载(一)

    在网络系统中,磁盘和文件系统管理是两个非常基本.同时也是非常重要的管理任务,特别是文件系统管理,因为它与用户权限和整个网络系统的安全息息相关.本次博文的主题是关于Linux系统中磁盘分区.格式化及挂载 ...

  4. Linux运维实战——如何利用文件节点删除乱码文件

    引言 linux系统中删除文件可以用rm [filename] 命令,然而有些系统或程序自动生成的文件或者文件夹名称却是乱码. 虽然部分文件/文件夹可以通过复制粘贴名字的方式来删除,但是仍然有些文件无 ...

  5. Linux 运维工程师学习成长路线上要经历哪四个阶段?

    之前曾看到一篇新闻,Linux之父建议大家找一份基于Linux和开源环境的工作.今天就来聊一聊我的想法,本人8年Linux运维一线经验,呆过很多互联网公司,从一线运维做到运维架构师一职,也见证了中国运 ...

  6. Linux运维工程师学习成长路线

    不过大家的留言都很精彩,希望大家也可以去留言区逛一逛~~ 好在这不是最后一期送书,之前已经有了好多活动,小编一定继续为大家多送些福利. 希望大家可以一如既往的关注脚本之家,支持爱你们的小编,共同进步! ...

  7. Linux运维企业架构实战系列

    Linux运维企业架构项目实战系列 项目实战1-LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2-LVS.nginx实现负载均衡系列 2.1 项目实战2.1-实现基于LVS负载均衡集 ...

  8. Linux运维企业架构项目实战系列

    Linux运维企业架构项目实战系列 项目实战1—LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2—LVS.nginx实现负载均衡系列2.1 项目实战2.1—实现基于LVS负载均衡集群 ...

  9. Linux运维项目实战系列

    Linux运维项目实战系列 项目实战1-LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2-项目实战2-实现基于LVS负载均衡集群的电商网站架构 2.1项目实战2.1-nginx 反向 ...

  10. [ Linux运维学习 ] 路径及实战项目合集

    我们知道运维工程师(Operations)最基本的职责就是负责服务的稳定性并确保整个服务的高可用性,同时不断优化系统架构.提升部署效率.优化资源利用率,确保服务可以7*24H不间断地为用户提供服务. ...

随机推荐

  1. 关于uni-app开发的微信小程序顶部导航条机型适配

    背景: 小程序顶部导航栏那里的样式和功能都是小程序自带的,当我们在pages.json里的pages里新加一条页面配置时,会自动生成一个带顶部导航栏的空白页面,当然也可以再配置里"navig ...

  2. Leecode 53.最大子数组和(Java 贪心算法、动态规划两种方法)

    想法(没看解析之前想不出来)   -----------------看了解析和答案 1.贪心算法,若当前元素的之前和<0,则丢弃当前元素之前的数列 设一个maxSum作为子序列最大和,一个sum ...

  3. DNS Capture: UDP, TCP, IP-Fragmentation, EDNS, ECS, Cookie

    EDNS 扩展实现"EDNS Client Subnet" (ECS) 和 DNS cookies.' 这里不讨论相关概念,实现如有疑问请查看: https://weberblog ...

  4. MyCat中间件的坑

    首先说一下为什么选择MyCat,mysql分表分库的工具还有sharding-jdbc,是jar包的形式集成到项目的,可以相对灵活的配置自定义分片策略(PS:其实大部分业务场景是分片策略越简单越好啊, ...

  5. docker基本操作 备忘

    docker 基本操作 通过镜像运行容器 - docker run -d -it -p 5555:5555 镜像名 启动容器,并将进入容器中的bash命令行 进入容器 - docker attach ...

  6. ElasticSearch在linux环境安装和启动

    1.下载 https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-8-0 2.安装启动 2.1 错误1 Java HotSp ...

  7. 21.C++的对象模型

    程序1: #pragma warning(disable:4996) //2022年9月21日19:20:29 #include <iostream> using namespace st ...

  8. 【WEB UI自动化】Selenium爬取用户的知乎回答时遇到10002:请求参数异常,请升级客户端后重试

    这里分享一个低配版知乎爬虫,利用了Selenium模块 爬取的过程中遇到了10002:请求参数异常,请升级客户端后重试,调用知乎某用户的回答API返回的HTTP状态码是403 Forbidden 之后 ...

  9. C++温故补缺(十九):atomic类

    atomic 参考:c++11 多线程(3)atomic 总结 - 简书.c++11 atomic Npgw的博客.C++11 并发指南系列 - Haippy - 博客园. atomic_flag a ...

  10. 简述SpringAOP的实现原理

    ​ Spring默认采取的动态代理机制实现AOP,当动态代理不可用时 (代理类无接口)会使用CGlib机制. Spring提供了两种方式来生成代理对象:JDKProxy和Cglib,具体使用哪种方式生 ...