第9章 大型网站运维
本章对大型网站系统的运维从共性到个性进行案例分析,阐述大型网站运维的现状,运维团队建设、明晰网站运维的目标和主要职责,根据网站技术架构,分析典型大型网站运维的体系框架和技术关键。
第1节 大型网站概述
本书所属的大型网站基于运维复杂性角度,即网站运维相关的指标,如网站规模、知名度、服务器规模、页面浏览量PV等达到一定量级,这里大型网站的量级界定为服务器规模大于千台,日PV量上千万。
1.大型网站分类
**按发展阶段划分:**分为web1.0、web2.0及云计算时代的web3.0网站。
**按应用类型划分:**分为:资讯类网站、交易类网站、社会性网站、游戏类网站、功能类网站等。
2.大型网站的特点
从性能的角度来看有以下特点:并发用户数多、流量大;系统24小时不间断服务的高可用性;需要使用大量服务器以存储和管理海量数据;用户分布广泛、网络情况复杂;层出不穷的安全问题;产品更新、需求变更快,发布频繁,以适应不断变化的用户需求;系统架构由简到繁的不断变化。
3.大型网站架构的演化
一个成熟的大型网站的系统架构并不是开始设计就具备完整得高性能、高可用、安全等特性,它总是随着用户量的增加,业务能力的扩展逐渐演变完善的。
**最开始的网站架构:**最初的架构,应用程序、数据库、文件都部署在一台服务器上。
**应用、数据、文件分离:**随着业务的扩展,一台服务器已经不能满足性能需求,故将应用程序、数据库、文件各自部署在独立的服务器上,并且根据服务器的用途配置不同的硬件,达到最佳的性能效果。
**利用缓存改善网站性能:**在大部分网站系统中,都会利用缓存技术改善系统的性能,使用缓存主要源于热点数据的存在,大部分网站访问都遵循28原则(即80%的访问请求,最终落在20%的数据上),所以可以对热点数据进行缓存,减少这些数据的访问路径,提高用户体验。
常见的缓存方式:本地缓存、分布式缓存;还有CDN(内容分发网络)、反向代理等。
OS Cache 就是常用的本地缓存组件;Memcached、Redis就是常用的分布式缓存。
**使用集群改善应用服务器性能:**应用服务器作用网站的入口,会承担大量的请求,往往通过应用服务器集群来分担请求数。应用服务器前面部署负载均衡服务器调度用户请求,根据分发策略将请求分发到多个应用服务器节点。
负载均衡技术硬件:F5,价格比较贵。
负载均衡技术软件:LVS 、Nginx、HAProxy。
**数据库读写分离和分库分表:**随着用户量的增加,数据库成为最大的瓶颈,改善数据库性能常用的手段是进行读写分离以及分表。
读写分离就是将数据库分为读库和写库,通过主备功能实现数据同步。
库分表则分为水平切分和垂直切分。水平切分是对一个数据库特大的表进行拆分,例如用户表。垂直切分则是根据业务不同来切分,如用户业务、商品业务相关的表放在不同的数据库中。
使用CDN和方向代理提高网站性能:
CND将数据内容缓存到运营商的机房,用户访问时先从最近的运营商获取数据,这样大大减少了网络访问的路径。
反向代理则是部署在网站的机房,当用户请求到达时首先访问反向代理服务器,反向代理服务器将缓存的数据返回给用户,如果没有缓存数据才会继续通过应用服务器获取,也减少了获取数据的成本。反向代理有Squid,Nginx。
**使用分布式文件系统:**用户一天天增加,业务量越来越大,产生的文件越来越多,单台的文件服务器已经不能满足需求,需要分布式的文件系统支撑。常用的分布式文件系统有NFS。
**使用NoSQL和搜索引擎:**NoSQL泛指非关系型的数据库。常用的NoSQL有Mongodb和Redis,搜索引擎有Lucene。
**将应用服务器进行业务拆分:**随着业务进一步扩展,应用程序变得非常臃肿,需要将应用程序进行业务拆分,如百度分为新闻、网页、图片等业务。每个业务应用负责相对独立的业务运作,业务之间通过消息进行通信或者同享数据库来实现。
**搭建分布式服务:**各个业务应用都会使用到一些基本的业务服务,例如用户服务、订单服务、支付服务、安全服务,这些服务是支撑各业务应用的基本要素。将这些服务抽取出来利用分布式服务框架搭建分布式服务。
第2节 大型网站运维背景知识
1.大型网站运维的定义
我们定义的大型网站,服务器规模大于1000台,PV每天至少上亿等。
大型网站的产生过程:首先公司管理层给出指导思想,产品经理定位市场需求进行调研、分析、最终给出详细设计;架构师根据产品设计的需求完成网络规划、架构设计等;开发工程师将设计code实现出来、测试工程师对应用进行测试;运维工程师进行运维。
信息系统管理员日常工作:将日常机械性手工工作通过工具实现,提高效率;解决现实中服务存在的问题;大规模集群管理工具的开发。
2.运维工程师需要什么样的技能及素质
**技能方面:**开发能力;通用应用方面需要了解;系统、网络、安全、存储、CDN、DB等需要相当了解,知道其原理。
**个人素质方面:**沟通能力、团队协作;工作中需要胆大心细;主动性、执行力、意志力;需要有探索创新精神。
**合格的运维工程师:**保证服务达到要求的线上标准,保证线上稳定;不断地提升应用的可靠性与健壮性、性能优化、安全提升;网站各层面监控、统计的覆盖度,软件、硬件、运行状态,能监控的都需要监控统计,避免监控死角、并能实时了解应用的运转情况;通过创新思维解决运维效率问题;运维知识的积累与沉淀、文档的完备性;计划性和执行力;自动化运维。
3.运维关键技术点
**监控:**主要包括故障监控和性能、流量、负载等状态监控。
**故障管理:**硬件故障问题、应用故障问题。
**自动化:**将日常手动进行的一些工作通过工具,系统自动来完成。
第3节 政府门户网站运维案例分析
1.运维服务总则
**安全性:**门户网站及内容管理平台应用的安全性;门户网站及内容管理平台数据的安全性。
**稳定性:**运维要求系统不间断服务,即提供7×24不间断服务,专人值守,监控网站,意外情况下,及时通知信息中心相关负责人,并做好各项应急准备。
IT运维体系的建立:
运维初期,以“系统日常运行和支持”为主,重点解决服务支持流程,对方生的问题进行维护和处理,运维后期,关注运维服务的长期计划和改进,考虑服务提供。
针对政府门户网站,运维的主要任务是解决发生的问题,对IT基础架构进行基本的配置管理,主要实现“服务台”、“事件管理”、“问题管理”、和“配置管理”。
为提高运维人员解决问题的能力和效率,运维体系扩展加设“知识库”,以提高运维技术的积累、传承、利用。
系统运维故障等级:
一级故障:是指系统发生严重故障,业务发生终端,或虽然业务未中断但已经无法保证及时、正确的情况,对用户业务的运行有严重影响。
二级故障:是指对于系统发生的非严重故障,业务并未中断,业务仍然及时、正确的情况,但性能有所下降。
三级故障:是指系统发生轻微的故障,系统有警告信息等,对系统没有较大影响的故障。
**系统运维制度建设:**在信息化运维中,制度建设是一道必要的保障。
进行IT运维制度化:转变运维观念,树立规范化意识;建立事件处理流程,强化规范执行力度。
2.运维团队组织
**组建原则:**应急响应服务能力;实施人员具有良好的职业道德,不损害用户利益;驻场工程师配置具备安全的稳定性;美工配置具有良好的网页及平面设计能力,丰富的网站制作经验;在项目实施过程中不随意变换拟派的项目经理。
**人员角色:**IT服务管理是以流程为中心的,针对每个流程,定义了一系列角色,每个角色被赋予特定的职责和任务,实现责权利的统一
**工作岗位设置:**管理岗;技术岗。
**组织机构:**在运维组织设计中,重点考虑人员、角色、岗位三个因素。
**人员安排:**运维团队人员安排。
3.运维服务内容
网站内容保障服务;
日常巡检服务;
网站安全服务;
数据库备份及备份验证;
应对黑客攻击和网站故障;
灾备演练;
应急处理流程;
技术支持;
网络设备日常运行维护;
主机系统日常运行维护;
存储设备日常运行维护;
数据库日常运行维护。