信息传输/软件/信息技术服务
运行
维护
服务
运行维护服务


简介

运行维护服务(多数情况下简称为「运维服务」)指的是信息技术从业人员通过监控、调试、阅读日志等手段使计算机服务按照规划保持长期稳定运行的状态的服务。

评判标准

一般来说,能让服务正常运行即为达到目标,没有特定标准。没做好运维的例子就是你现在正在访问的这个网站无法正常访问,无法正常提供服务。 从个人工作的角度看:互联网运维项目是保证为客户提供长期稳定的运营维护服务,可以包括但不限于:开发改修、数据整理、客户要求整改、客户服务、安全保障、障害处理、系统监视、应急处理等等,保障系统的稳定运作和对客户应答要求的处理。

维护分类

操作系统安全

Linux 系统

我们一般采用Ubuntu/ Redhat/CentOS/ SUSE等稳定且不太激进的(尤其是Redhat)发行版为运行系统。 Linux内核的开源协议写的很清楚,任何使用此内核开发的发行版或衍生发行版必须无条件开放源代码,也可以任意修改和商用 。于是,在Redhat的基础上就有了CentOS。它们更新几乎同步,但线上生产环境用CentOS居多。ubuntu一般用在机器学习,算法训练等。比如Tensorflow深度学习框架就需要用到ubuntu运行 不大推荐使用Arch系列,Fedora等激进更新的系统,这样会造成许多问题 补充一下上面说的 Fedora是Redhat的测试平台 有新的软件或功能更新会先推给Fedora 一旦测试转为稳定版 才会推送给Redhat更新

Windows 系统

Windows Server操作系统由微软公司提供技术支持。 Windows Server最新版本是Windows Server 2019。

网络安全及应用安全

web应用中间件基本有以下几种:Apache/Nginx/Tomcat/Node.js/IIS (用它的非常少且是Windows服务器) 一般的PHP网站大体可 分为LAMP和LNMP架构 它们的区别就是用来提供Web服务的是Apache还是Nginx 除此之外 还有一些基于NGINX衍生的更强的一些版本,比如Tengine和OpenResty 后面会介绍 大多数情况下 用到的都是前两者比较多 比如你现在看到的回形针手册 就是基于LNMP运行的 Nginx有高性能低占用的特点 可以轻松应对超高的并发 虽然 处理动态请求的能力不如Apache 但是如果你的用户很多或者服务器的配置相对较低 那用nginx就对了 采用php-fpm fastcgi模式连接php,负载量可以更大 缺点是 守护进程全部交给PHP-fpm去做了 对php-fpm的依赖性会很大 如果php-fpm死了 网站就掉了

不过 Apache也不是一无是处 稳定 可靠 多模块 和PHP通信基本靠模块 PHP基本不用做太多配置 处理PHP文件的和rewrite能力也比nginx强很多 但是…..并发有点不理想 Apache采用同步阻塞型设计 请求一多(基本四万多的并发)我赌Apache扛不住。 Apache一个请求对应一个进程 极易导致进程阻塞 从而导致网站无法访问 但nginx就基本不会出现请求阻塞的情况 I/O方面 Apache采用的是低效的select模型 而nginx采用的是epoll和kqueue模型 就像 Apache烧水 按了开关以后坐那等着 开了再去干别的 而nginx按下开关以后去煮饭 等水开了 它饭也煮好了

刚才说的Tengine就是某宝为了适应他们的大访问量需求开发的nginx优化版 除了提高了访问承受能力以外还加了许多高级功能和新特性 比如 动态加载模块 它在某里全线产品线上得到了广泛应用 比如 某猫商城 某宝 和为它们默默提供着计算能力的那家云计算厂商 细细的看 你会发现他们用的就是自家的Tengine做的官网

OpenResty也是国人开发的一款优化版的nginx 特点在于模块多 可通过lua脚本进行扩展 ,以功(花)能(里)齐(胡)全(哨)著称 也是有很多好用的功能 性能比官方版本提升数倍,它也有很多自有的第三方模块 而且 继承了nignx的优良传统,市场份额也是在不断攀升。 一般 为了提高访问速度 还会使用CDN对静态文件进行加速 ,比如 回形针就使用了CDN给网站加速。

那么 你需要知道 什么是CDN? 简单说 CDN就是把数据中心里的数据缓存在离你比较近的CDN节点上 再通过负载均衡算法智能分配用户访问节点,比如 北京的用户访问北京节点 广州的用户访问广州节点一样 就近访问 镜像缓存 这就是CDN加速的原理。 同样的 用户访问CDN服务器 而不是直接访问源站服务器 这样也可以降低源站服务器和数据中心的压力。 和它们一样 回形针手册也采用了CDN加速 上个图

数据库安全及存储备份

现在分为两大阵营:结构与非结构性数据库,结构性代表:MySQL,非结构性代表:Redis/ MongoDB 。 为了能够可持续访问,我们一般选择结构嵌套非结构,例如用MySQL做底层进行长期数据存取,用Redis做服务响应,但是这需要一个中间件。示例:酷安(底层好像不是用的MySQL,但是确实是用Redis来做响应)

那么 你需要知道 什么是Redis? Redis 是一个高性能的基于内存的键值对数据库 一般用于做缓存中间件,比如用它来缓存商品信息啊 PHP的会话Session之类的 简单说 Redis就是一个挡箭牌,如果设置好Redis缓存 用户请求服务器 服务器会去查询Redis缓存里有没有所查询数据 如果有就直接返回给用户 如果没有 Redis才会去查询数据库 并设置好Redis缓存返回给用户。 而前面说了 Redis是基于内存的嘛 所以这个时间基本不需要计算量。 就比较快速。

提起Redis 我要说三个问题 缓存雪崩 缓存击穿 和缓存穿透 缓存雪崩 假设你每秒5000个请求Redis扛4900 所有或大面积的Redis缓存在同一时间全部失效,所有的请求就会都涌入数据库,而MySQL性能比较低嘛 你知道的,可能 DBA还来不及反应 数据库就被打挂了。 这就是缓存雪崩,解决方案是:设置每次缓存的失效时间随机,随机算法你随意 不让它在同一时间一起失效就行了。 缓存击穿 缓存击穿嘛,举个例子 ,回形针的爆款视频放在服务器上 非常受咱们的欢迎 这支视频的缓存一直在扛着高并发 ,在它缓存失效的瞬间,所有的请求还是会一起涌到数据库 打垮数据库。 解决方案嘛: 对于热点键值对不设置过期时间 更新了手动刷新缓存 或者 给它过期时间设置长一些 还是 推荐第一种方式 保险。 缓存穿透 缓存穿透 就是绕过Redis缓存层直接打你数据库,举个例子 数据库里的所有ID都是张每羊开始以下简称“羊” 数据结构的ID即为 羊1 羊2 羊n…… 那 攻击者要是用我们可爱的吴松磊做索引呢(邪魅一笑)? 这时候 他给服务器发一个查询磊n的请求 Redis没查到 当然会去查数据库 如果 并发一多 数据库还是会吃不消。

解决方案嘛: 构造过滤器 对非法的查询请求进行过滤 然后降级返回一个友好的提示就好啦~

其他待添加

工作流程

服务器操作系统通常使用Linux或Windows server 操作系统。在工业环境中,Linux占据了极大部分市场。 运行维护服务工程师需要保证所提供的服务、服务器数据保持畅通快速完整。通常使用冗余备份与集群相关技术。

产品的整个生命周期里运维的职责重要而广泛,但运维工程师们的职责不仅限于这部分工作,还需要总结工作中遇到的问题,抽取出相关的技术方向、研发相关的工具和平台以支持/优化业务的发展并提高运维的效率,相关技术工作主要包括:

  • 服务监控技术:包括监控平台的研发、应用,服务监控准确性、实时性、全面性的保障
  • 服务故障管理:包括服务的故障预案设计,预案的自动化执行,故障的总结并反馈到产品/系统的设计层面进行优化以提高产品的稳定性
  • 服务容量管理:测量服务的容量,规划服务的机房建设,扩容、迁移等工作
  • 服务性能优化:从各个方向,包括网络优化、操作系统优化、应用优化、客户端优化等,提高服务的性能和响应速度,改善用户体验
  • 服务全局流量调度:接入服务的流量,根据容量和服务状态在各个机房间分配流量
  • 服务任务调度:服务的各种定时/非定时任务的调度触发及状态监控
  • 服务安全保障:包括服务的访问安全、防攻击、权限控制等
  • 数据传输技术:包括p2p等各类传输技术的研发应用,也远距离大数据传输等问题的解决
  • 服务自动发布部署:部署平台/工具的研发,及平台/工具的使用,做到安全、高效的发布服务
  • 服务集群管理:包括服务的服务器管理、大规模集群管理等
  • 服务成本优化:尽可能降低服务运行使用的资源,降低服务运行成本
  • 数据库管理(DBA):通过设计、开发和管理高性能数据库集群,使数据库服务更稳定、更高效、更易于管理。
  • 平台化的开发:类docker和google borg平台的开发管理,及服务接入技术
  • 分布式存储平台的开发优化:类google gfs等分布式存储平台的研发及服务接入

凡是关系到服务质量、效率、成本、安全等方面的工作,及涉及到的技术、组件、工具、平台都在运维的技术范畴里。做好每一个技术方向、完成相应的组件、工具、平台研发都能对履行运维职责起到积极的作用,对业务的发展发挥关键影响。 我们一般通过两种大途径保持服务的可持续性,在这里我们一般考虑Linux系统,并且我们不考虑人工监控

组织结构

部门分工

人员分工

经营设计

需求分析

目标界定

总体结构设计

详细结构设计

参数设计

设计实施

工具

一,内部保持

1,使用专为程序所写的守护进程

原理:守护程序作为一个独立的进程实时监控主程序的存活状态,一旦查询到主程序状态异常,则执行特定操作如重启主程序等 参考示例:NodeBB

2,系统层面的计划任务或者服务

原理:

二,外部监控

1,手动运维监控操作

原理:一般适用于网页等,通过定期访问指定页面来判定服务存活状态,一旦出现异常则通知用户 参考示例:PingZo

2, 建设监控平台自动化监控

通常市面上主流为Zabbix,Promethues+grafana,等等

三,平台工具

运维工程师使用的运维平台和工具包括:

  • Web服务器:apache、tomcat、nginx、lighttpd
  • 监控:nagios、ganglia、cacti、zabbix
  • 自动部署:ansible、sshpt、salt
  • 配置管理:puppet、cfengine
  • 负载均衡:lvs、haproxy、nginx
  • 传输工具:scribe、flume
  • 备份工具:rsync、wget
  • 数据库:mysql、oracle、sqlserver、InnerSystem cache
  • 分布式平台:hdfs、mapreduce、spark、storm、hive
  • 分布式数据库:hbase、cassandra、redis、MongoDB
  • 容器:lxc、docker
  • 虚拟化:openstack、xen、kvm
  • 安全:kerberos、selinux、acl、iptables
  • 问题追查:netstat、top、tcpdump、last

广义上所有开源的软件都是运维工程师会使用到的平台和工具,同时也包括运维各个技术方向上自行研发的各类平台。

设计和规划

位置与环境

投资与评估

规模与功能

风格与形式

成本

运维维护服务重点在于服务,主要成本体现在人工方面、设备替换方面。对于大型IDC、多业务系统等需要专业的运维管理系统,方便工程师对基础环境、系统运行状态进行监控。

税费

金融成本

原材料成本

房租成本

能耗成本

人工成本

一般运维维护由系统建设商提供为期1年的基础维护,对于需驻场人员的需另行核算。

设备折旧

收益管理

消费曲线

时间分布

空间分布

目标群体

容量控制

风险控制

行业

国内市场

产量

消费量

国际市场

产量

消费量

主要公司

标准

这里存放条目相关的国家标准

文档

这里存放于条目相关的其他文档

编辑成员
15 人

FengYing, 我的天呐!, 斩不尽相思, GlennZ, 不酸的Lemon, 宇不点, FrancisDrakeK, 木又, roc, bendi, 葛根雷雷, 笨笨伟, 会飞的小羊, Aloento, THE

评论(7)

你需要登录发表评论。
phantomlsh 2020-06-25 05:45:05
不太清楚“集群”,“虚拟化”,“容器服务”这些东西可以写在哪里
wdnmd 2020-06-08 21:23:38
这还这是个笑话
bendi 2019-05-07 21:06:10
“没做好运维的例子就是你现在正在访问的这个网站” is a joke !
杰瑞 2020-03-01 23:32:34
数据库是分为关系型数据库和非关系型数据库吧
oliuzhiyuo 2019-11-27 18:57:55
种类有些不对啊
20190520_yunwei. 2019-05-19 21:45:39
看样子占到地板了哈!
刚刚注册就来评论了。因为有网优转运维的想法,比较关注相关的内容,个人目前的优势就是对电脑和网络相关的方面有一定了解,但也只在个人用户能够接触到的方面,因为之前只是爱好。没什么编程基础,会用简单的vbs和bat代码....
如果有大佬看到希望能给点建议和方向。谢谢了!!....
12
回形针手册-icons