查看原文
其他

服务器知识大全 | Linux 运维工作需要具备哪些知识?

一次性进群,长期免费索取教程,没有付费教程。

教程列表见微信公众号底部菜单

进微信群回复公众号:微信群;QQ群:16004488


微信公众号:计算机与网络安全

ID:Computer-network

服务器知识科普大全


服务器对每个从事IT工作的人来说并不陌生,但是服务器所涉及的各种知识细节,并非大家都十分清楚,为了让大家深入了解服务器的关键知识点,笔者特意抽时间总结了这篇科普文章,旨在帮助读者全面了解服务器。今天内容就从服务器的架构和分类开始。


按照服务器体系架构,服务器主要分为非x86服务器和x86两类;非x86服务器包括大型机、小型机和UNIX服务器,它们是使用RISC或EPIC,并且主要采用UNIX和其它专用操作系统,RISC处理器主要包括IBM公司的Power和PowerPC处理器,SUN和富士通合作研发的SPARC处理器。EPIC处理器主要是Intel研发的安腾处理器等。

x86服务器又称CISC架构服务器,采用Intel或其它兼容x86指令集的处理器芯片和Windows操作系统的服务器。服务器按照不同分类方法主要分为如下:

  • CISC:Complex Instruction Set Computing 复杂指令集计算

  • RISC:Reduced Instruction Set Computing 精简指令集计算

  • EPIC:Explicitly Parallel Instruction Computing 显式并行指令运算

实际上,服务器的分类没有一个统一的标准,下面从多个纬度来看服务器的分类可以加深我们对各种服务器的认识。

高度计量单位


U为机柜安装空间的高度度量单位,1U = 44.45 mm = 1.75 inch

 

容量计量单位


是一种容量计量单位,通常在标示内存等具有一般容量的储存媒介之储存容量时使用。一般指磁盘空间、文档大小时使用。

速率单位


指在一个数据传送系统中,单位时间内通过设备比特、字符、块等的平均量。一般在描述传输速率或带宽时使用。如果是比特/秒,就用bit/s(kbit/s, Mbit/s),如果是字节/秒,就用B/s(kB/s、 MB/s、 KB/s), 小写的k代表1000, 大写的K代表1024。

 

计算单位和峰值


每秒浮点运算次数(亦称每秒峰值速度)是每秒所执行的浮点运算次数(Floating point Operations Per Second)的简称,被用来估算电脑效能,尤其是在使用到大量浮点运算的科学计算领域中。

端口自协商


是一个以太网的过程,两个相连的设备选择通用的传输参数,如速度、双工模式和流量控制。在这个过程中,连接的设备首先共享它们的能力(10、100、1000BASE-T),然后选择它们都支持的最高性能传输模式。在OSI模型中,对于以太网,在IEEE 802.3对其做了定义。

 

服务器主要软件


BIOS(Basic Input/Output System)是服务器上电后最先运行的软件。它包括基本输入输出控制程序、上电自检程序、系统启动自举程序、系统设置信息。BIOS是服务器硬件和OS之间的抽象层,用来设置硬件,为OS运行做准备。 BIOS设置程序是储存在BIOS芯片中的。

 

UEFI(Unified Extensible Firmware Interface)下一代BIOS是UEFI,即统一的可扩展固定接口。这种接口用于操作系统自动从预启动的操作环境,加载到一种操作系统上,从而使开机程序化繁为简,节省时间。

 

CMOS(complementary metal-oxide-semiconductor)是电脑主机板上一块特殊的RAM芯片,是系统参数存放的地方。CMOS存储器是用来存储BIOS设定后的要保存数据的。

 

BMC(baseboard management controller)对服务器进行监控和管理。

 

OS(Operatingsystem)和位数,主要分32bit和64bit操作系统,计算机处理器在RAM(随机存取储存器)处理信息的效率,取决于32位和64位版本。64位版本比32位的可以处理更多的内存和应用程序。


简单理解下,64位版本可以处理的物理内存在4GB以上,高达128GB,而32位版本最多可以处理4 GB的内存。因此,如果你在计算机上安装32位版本的Windows,那么安装4GB以上的RAM是没意义的。

 

服务器标准

 

ATCA(AdvancedTelecom Computing Architecture)国际标准,ATCA脱胎于在电信、航天、工业控制、医疗器械、智能交通、军事装备等领域应用广泛的新一代主流工业计算技术:CompactPCI标准。是为下一代融合通信及数据网络应用提供的一个高性价比的,基于模块化结构的、兼容的、并可扩展的硬件构架。

 

ATCA由一系列规范组成,包括定义了结构、电源、散热、互联与系统管理的核心规范PICMG3.0以及定义了点对点互联协议的5个辅助规范组成(以太和光纤传输、InfiniBand传输、星形传输、PCI-Express传输和RapidIO传输)。

 

OSCA(Open Service Converged Architecture)开放服务汇聚架构, 是华为基于ATCA标准自研的服务器平台。

 

OSTA(Open Standards Telecom Architecture)是由华为技术公司生产的强大的服务处理平台。它由处理器子系统、交换网络子系统、机电子系统和设备管理子系统组成。

 

服务器的逻辑结构


服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。计算机的五大组成部分,最重要的部分是CPU 和内存。CPU 进行判断和计算,内存为CPU 计算提供数据。

缓存


缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾,因为CPU运算速度要比内存读写速度快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存。CPU缓存是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多。


缓存的工作原理是当CPU要读取一个数据时,首先从缓存中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。


目前所有主流处理器大都具有一级缓存(level 1 cache,简称 L1 cache)和二级缓存(L2 cache), 少数高端处理器还集成了三级缓存(L3 cache)。


  • 一级缓存可分为一级指令缓存(instruction cache)和一级数据缓存(data cache)。一级指令缓存用于暂时存储并向CPU 递送各类运算指令;一级数据缓存用于暂时存储并向CPU 递送运算所需数据,这就是一级缓存的作用。

  • 二级缓存就是一级缓存的缓冲器:一级缓存制造成本很高因此它的容量有限,二级缓存的作用就是存储那些CPU处理时需要用到、一级缓存又无法存储的数据。

  • 三级缓存和内存可以看作是二级缓存的缓冲器,它们的容量递增,但单位制造成本却递减。

 

内存(Memory)和存储(Storage)的区别


大多数人常将内存(Memory)与储存空间(Storage)两个名字混为一谈,尤其是在谈到两者的容量的时候。内存(Memory)是指计算机中所安装的随机存取内存的容量,而储存(Storage)是指计算机内硬盘的容量。


为了避免混淆,我们将计算机比喻为一个有办公桌与档案柜的办公室。档案柜代表计算机中提供储存所有所需档案及资料的硬盘,工作时将需要的档案从档案柜中取出并放到办公桌上以方便取得,办公桌就像保持资料及数据取用方便的内存。

 

内存频率


内存主频和CPU主频一样,习惯上被用来表示内存的速度,它代表着该内存所能达到的最高工作频率。内存主频是以MHz(兆赫)为单位来计量的。内存主频越高在一定程度上代表着内存所能达到的速度越快。内存主频决定着该内存最高能在什么样的频率正常工作。

 

系统启动方式


启动系统通常有三种方式:冷启动、热启动和复位启动。


  • 冷启动:过程包括上电、全面自检、系统引导及初始化等工作;

  • 热启动:和冷启动的区别是不需要重新上电、自检的范围很小;

  • 复位启动:和冷启动的区别仅仅在于无须上电。

 

交换与路由


交换:完成信号由设备入口到出口的转发。只要是和符合该定义的所有设备都可被称为交换设备。


二层交换机工作在数据链路层。二层交换机就是普通的交换,把数据以帧的形式发送出去。三层交换机工作在网络层。三层交换机既可以作交换机又可以做路由器。


路由:是把信息从源穿过网络传递到目的地的行为,在路上,至少遇到一个中间节点。它们的主要区别在于桥接发生在OSI参考协议的第二层(链接层),而路由发生在第三层(网络层)。这一区别使二者在传递信息的过程中使用不同的信息,从而以不同的方式来完成其任务。


  • 接入交换机:一般用于直接连接电脑。通常将网络中直接面向用户连接或访问网络的部分称为接入层。负责连接机柜内部的服务器。

  • 汇聚交换机:汇聚相当于一个局部或重要的中转站,将位于接入层和核心层之间的部分称为分布层或汇聚层。完成接入层交换机流量的汇聚,并与核心层交换机连接。

  • 核心交换机:相当于一个出口或总汇总。完成数据报文的高速转发,并提供对外的网络接口。

 

堆叠和级联


级联和堆叠是多台交换机或集线器连接在一起的两种方式。它们的主要目的是增加端口密度,主要区别:


级联是上下关系(总线型、树型或星型的级联),堆叠是平等关系(堆叠中多台交换机作为一个整体对外体现为一台逻辑设备)。


  • 级联可以连接不同类型或厂家的交换机,而堆叠只有在同系列的交换机之间。

  • 交换机间的级联在理论上没有级联数的限制。叠堆有最大限制,堆叠中多台交换机作为一个整体对外体现为一台逻辑设备。

 

堆叠组建时会选举出一台交换机做为主交换机(Master),剩下的交换机称为从交换机(Slave)。主交换机是整个堆叠系统中的控制中心。堆叠中每一台交换机都同时具备成为主交换机或者从交换机的能力。

 

浮点数精度

 

  • 半精度浮点数是一种计算机使用的二进制浮点数数据类型。半精度浮点数使用2字节(16位)存储。

  • 单精度浮点数格式是一种计算机数据格式,在计算机存储器中占用4个字节(32 bits),利用“浮点”(浮动小数点)的方法,可以表示一个范围很大的数值。

  • 双精度浮点数(Double)是计算机使用的一种数据类型。比起单精度浮点数,双精度浮点数使用 64 位(8字节)来存储一个浮点数。

 

时间跳变和渐变

 

NTP client和server的时间同步有两种情况:时间跳变(time step)和渐变(time slew)。时间跳变是指在client和server间时间偏差(Offset)过大时(默认128ms),瞬间调整client端的系统时间。

 

时间渐变是指时间差较小时,通过改变client端的时钟频率,进而改变client端中"1秒"的"真实时间",保持client端时间连续性。如果client端比server端慢10s,client端的中每1秒现实时间是1.0005秒,虽然client端的时间仍然是1秒1秒增加的,通过调整每秒的实际时间,直到与server的时间相同。

 

FC SAN的Zone


Zone是FC SAN特有一种概念,目的用来配置同一个交换机上面不同设备之间的访问权限。同在一个zone里面的设备可以互相访问。Brocade交换机有个Default zone,出厂时候所有交换机端口都在一个default zone里面,默认是不允许互相访问的。


  • Zone可以根据交换机端口ID(Domain 、Port ID)或者设备WWN来划分。

  • 一个Zone里面可以部分设备是交换机端口ID,部分是WWN的混合Zone。

  • Hard Zone和Soft Zone是早期交换机厂商根据对Zone实现方式做的一个分类。通过硬件来实现的叫做Hard Zone,通过软件来实现叫做soft zone;早期一般称基于端口ID的Zone为Hard zone,基于WWN的Zone为Soft Zone。现在这两个类型的Zone都是基于硬件实现。

  • 最佳使用WWN来划分Zone,始终遵循Single Initiator原则 。

  • 交换机通常把多个Zone纳入一个Zone Set管理,每个交换机可以保留多个Zone Set配置,一次有且只有一个Zone Set配置能够被激活。

 

TPC基准(Benchmark)标准规范


TPC(Transaction Processing Performance Council)是由数10家会员公司创建的非盈利组织,总部设在美国。TPC的成员主要是计算机软硬件厂家,而非计算机用户,它的功能是制定商务应用基准程序(Benchmark)的标准规范、性能和价格度量,并管理测试结果的发布。


TPC已经推出了多套Benchmarks,被称为TPC-A、TPC-B、TPC-C和TPC-D。其中A和B已经过时不再使用了。TPC-C是在线事务处理(OLTP)的基准程序,TPC-D是决策支持(Decision Support)的基准程序。TPC即将推出TPC-E,作为大型企业(Enterprise)信息服务的基准程序。


TPC-C使用三种性能和价格度量,其中性能由TPC-C吞吐率衡量,单位是tpmC。tpm是Transactions Per Minute的简称;C指TPC中的C基准程序。它的定义是每分钟内系统处理的新订单个数。

 

CPU亲和性


处理器亲和性又称处理器关联。通过处理器关联可以将虚拟机或虚拟处理器映射到一个或多个物理处理器上。该技术基于对称多处理机操作系统中的Native Central Queue调度算法。队列(Queue)中的每一个任务(进程或线程)都有一个标签(Tag)来指定它们倾向的处理器。在分配处理器的阶段,每个任务就会分配到它们所倾向的处理器上。


处理器亲和性利用了这样一个事实,就是进程上一次运行后的残余信息会保留在处理器的状态中(也就是指处理器的缓存)。如果下一次仍然将该进程调度到同一个处理器上,就能避免一些不好的情况(比如缓存未命中),使得进程的运行更加高效。


调度算法对于处理器亲和性的支持各不相同。有些调度算法在它认为合适的情况下会允许把一个任务调度到不同的处理器上。比如当两个计算密集型的任务(A和B)同时对一个处理器具有亲和性时,另外一个处理器可能就被闲置了。这种情况下许多调度算法会把任务B调度到第二个处理器上,使得多处理器的利用更加充分。


处理器亲和性能够有效地解决一些高速缓存的问题,但却不能缓解负载均衡的问题。而且,在异构系统中,处理器亲和性问题会变得更加复杂。

 

简单网络管理协议(SNMP)


SNMPv1/v2/v3/v2c主要用于网络监控和管理。在SNMP模型中,有一或多个管理系统和多个被管理系统。每一个被管理系统上有运行一个代理(Agent)软件通过SNMP向管理系统报告信息。一个SNMP管理的网络由下列三个关键组件组成:


  • 网络管理系统(NMS):运行应用程序监视并控制被管理的设备。也称为管理实体(managing entity),网络管理员在这儿与网络设备进行交互。NMS提供网络管理需要的大量运算和记忆资源。一个被管理的网络可能存在一个以上的NMS。

  • 被管理的设备(managed device):一个被管理的设备是一个网络节点,它包含一个存在于被管理的网络中的SNMP代理。被管理的设备通过管理信息库(MIB)收集并存储管理信息,并且让网络管理系统能够通过SNMP代理者获取这项信息。

  • 代理(agent):运行在被管理设备中的网络管理软件。代理控制本机的管理信息,以和SNMP兼容的格式发送这些信息。

Linux 运维工作需要具备哪些知识?


什么是大型网站运维?


首先明确一下,全文所讲的”运维“是指:大型网站运维,与其它运维的区别还是蛮大的;然后我们再对大型网站与小型网站进行范围定义,此定义主要从运维复杂性角度考虑,如网站规范、知名度、服务器 量级、pv量等考虑,其它因素不是重点;因此,我们先定义服务器规模大于1000台,pv每天至少上亿(至少国内排名前10),如sina、baidu、 QQ,http://51.com等等;其它小型网站可能没有真正意义上的运维工程师,这与网站规范不够和成本因素有关,更多的是集合网络、系统 、开发工作于一身的“复合性人才”,就如有些公司把一些合同采购都纳入了运维职责范围,还有如IDC网络规划也纳入运维职责。所以,非常重要一定需要明白:运维对其它关联工种必须非常了解熟悉:网络、系统、系统开发、存储,安全,DB等;我在这里所讲的运维工程师就是指专职运维工程师。


我们再来说说一般产品的“出生”流程:


1、首先公司管理层给出指导思想,PM定位市场需求(或copy成熟应用)进行调研、分析、最终给出详细设计。


2、架构师根据产品设计的需求,如pv大小预估、服务器规模、应用架构等因素完成网络规划,架构设计等(基本上对网络变动不大,除非大项目)


3、开发工程师将设计code实现出来、测试工程师对应用进行测试。


4、好,到运维工程师出马了。首先明确一点不是说前三步就与运维工作无关了,恰恰相反,前三步与运维关系很大:应用的前期架构设计、软/硬件资源评估申请采购、应用设计性能隐患及评估、IDC、服务性能安全调优、服务器系统级优化(与特定应用有关)等都需运维全程参与,并主导整个应用上线项目;运维工程师负责产品服务器上架准备工作,服务器系统安装、网络、IP、通用工具集安装。运维工程师还需要对上线的应用系统架构是否合理、是否具备可扩展性、及安全隐患等因素负责,并负责最后将产品(程序)、网络、系统三者进行拼接并最优化的组合在一起,最终完成产品上线提供用户使用,并周而复使:需求->开发(升级)->测试->上线(性能、安全问题等之前预估外的问题随之慢慢就全出来了)在这里提一点:网站开发模式与传统软件开发完全不一样,网站一天开发上线1~5个升级版本是家常便饭,用户体验为王嘛,如果某个线上问题像M$ 需要1年解决,用户早跑光了;应用上线后,运维工作才刚开始,具体工作可能包括:升级版本上线工作、服务监控、应用状态统计、日常服务状态巡检、突发故障处理、服务日常变更调整、集群管理、服务性能评估优化、数据库管理优化、随着应用PV增减进行应用架构的伸缩、安全、运维开发工作:


a 、尽量将日常机械性手工工作通过工具实现(如服务监控、应用状态统计、服务上线等等),提高效率。


b、解决现实中服务存在的问题,如高可靠性、可扩展性问题等。


c、大规模集群管理工具的开发,如1万台机器如何在1分钟内完成密码修改、或运行指定任务?2000台服务器如何快速安装操作系统?各分布式IDC、存储集群中数PT级的数据如何快速的存储、共享、分析?等一系列挑战都需运维工程师的努力。


在此说明一下其它配合工种情况,在整个项目中,前端应用对于网络/系统工程师来说是黑匣子,同时开发工程师职责只是负责完成应用的功能性开发,并对应用本身性能、安全性等应用本身负责,它不负责或关心网络/系统架构方面事宜,当然软/硬件采购人员等事业部其它同事也不会关心这些问题,各司其职,但项目的核心是运维工程师~!所有其它部门的桥梁。


上面说了很多,我想大家应该对运维有一些概念了,在此打个比方吧,如果我们是一辆高速行驶在高速公路上的汽车,那运维工程师就是司机兼维修工,这个司机不简单,有时需要在高速行驶过程中换轮胎、并根据道路情况换档位、当汽车速度越来越快,汽车本身不能满足高速度时对汽车性能调优或零件升级、高速行进中解决汽车故障及性能问题、时刻关注前方安全问题,并先知先觉的采取规避手段。这就是运维工作~!


最后说一下运维工程师的职责:”确保线上稳定“,看似简单,但实属不容易,运维工程师必须在诸多不利因素中进行权衡:新产品模式对现有架构及技术的冲击、产品高频度的升级带来的线上BUG隐患、运维自动化管理承度不高导致的人为失误、IT行业追求的高效率导致流程执行上的缺失、用户增涨带来的性能及架构上的压力、IT行业宽松的技术管理文化、创新风险、互联网安全性问题等因素,都会是网站稳定的大敌,运维工程师必须把控好这最后一关,需具体高度的责任感、原则性及协调能力,如果能做到各因素的最佳平衡,那就是一名优秀的运维工程师了。


运维工作师需要什么样的技能及素质


做为一名运维工程师需要什么样的技能及素质呢,首先说说技能吧,如大家上面所看到,运维是一个集多IT工种技能与一身的岗位,对系统->网络 ->存储->协议->需求->开发->测试->安全等各环节都需要了解一些,但对于某些环节需熟悉甚至精通,如系统 (基本操作系统的熟悉使用,*nix,windows ..)、协议、系统开发(日常很重要的工作是自动运维化相关开发、大规模集群工具开发、管理)、通用应用(如lvs、ha、web server 、db、中间件、存储等)、网络,IDC拓朴架构;


技能方面总结以下几点:


1、开发能力,这点非常重要,因为运维工具都需要自已开发,开发语言:perl、python、php(其中之一)、shell(awk,sed,expect….等),需要有过实际项目开发经验,否则工作会非常痛苦。


2、通用应用方面需要了解:操作系统(目前国内主要是linux、bsd)、webserver相关 (nginx,apahe,php,lighttpd,java。。。)、数据库(mysql,oralce)、其它杂七八拉的东东;系统优化,高可靠性;这些只是加分项,不需必备,可以边工作边慢慢学,这些东西都不难。当然在运维中,有些是有分工偏重点不一样。


3、系统、网络、安全,存储,CDN,DB等需要相当了解,知道其相关原理。


个人素质方面:


1、沟通能力、团队协作:运维工作跨部门、跨工种工作很多,需善于沟通、并且团队协作能力要强;这应该是现代企业的基本素质要求了,不多说。


2、工作中需胆大心细:胆大才能创新、不走寻常路,特别对于运维这种新的工种,更需创新才能促进发展;心细,运维工程师是网站admin,最高线上权限者,一不小心就会遗憾终生或打入十八层地狱。


3、主动性、执行力、精力旺盛、抗压能力强:由于IT行业的特性,变化快;往往计划赶不上变化,运维工作就更突出了,比如国内各大公司服务器往往是全国各地,哪里便宜性价比高,就那往搬,进行大规模服务迁移(牵扯的服务器成百上千台),这是一个非常头痛的问题;往往时间 非常紧迫,如限1周内完成,这种情况下,运维工程师的主动性及执行力就有很高的要求了:计划、方案、服务无缝迁移、机器搬迁上架、环境准备、安全评估、性能评估、基建、各关联部门扯皮,7X24小紧急事故响应等。


4、其它就是一些基本素质了:头脑要灵光、逻辑思维能力强、为人谦虚稳重、亲和力、乐于助人、有大局观。


5、最后一点,做网站运维需要有探索创新精神,通过创新型思维解决现实中的问题,因为这是一个处于幼年的职业(国外也一样,但比国内起步早点),没有成熟体系或方法论可以借鉴,只能靠大家自已摸索努力。


怎样才算是一个合格的运维工程师


1、保证服务达到要求的线上标准,如99.9%;保证线上稳定,这是运维工程师的基本责职所在。


2、不断的提升应用的可靠性与健壮性、性能优化、安全提升;这方面非常考验主动性和创新思维。


3、网站各层面监控、统计的覆盖度,软件、硬件、运行状态,能监控的都需要监控统计,避免监控死角、并能实时了解应用的运转情况。


4、通过创新思维解决运维效率问题;目前各公司大部份运维主要工作还是依赖人工操作干预,需要尽可能的解放双手。


5、运维知识的积累与沉淀、文档的完备性,运维是一个经验性非常强的岗位,好的经验与陷阱都需积累下来,避免重复性范错。


6、计划性和执行力;工作有计划,计划后想法设法达到目标,不找借口。


7、自动化运维;能对日常机械化工作进行提炼、设计并开发成工具、系统,能让系统自动完成的尽量依靠系统;让大家更多的时间用于思考、创新思维、做自已喜欢的事情。


以上只是技术上的一些层面,当然个人意识也是很重要的。


运维职业的迷惘、现状与发展前景


运维岗位不像其它岗位,如研发工程师、测试工程师等,有非常明确的职责定位及职业规划,比较有职业认同感与成就感;而运维工作可能给人的感觉是哪方面都了解一些,但又都比上专职工程师更精通、感觉平时被关注度比较低(除非线上出现故障),慢慢的大家就会迷惘,对职业发展产生困惑,为什么会有这种现象呢?除了职业本身特点外,主要还是因为对运维了解不深入、做得不深入导致;其实这个问题其它岗位也会出现,但我发现运维更典型,更容易出现这个问题;


运维现状:


1、处于刚起步的初级阶段,各大公司有此专职,但重视或重要程度不高,可替代性强;小公司更多是由其它岗位来兼顾做这一块工作,没有专职,也不可能做得深入。


2、技术层次比较低;主要处于技术探索、积累阶段,没有型成体系化的理念、技术。


3、体力劳动偏大;这个问题主要与第二点有关系,很多事情还是依靠人力进行,没有完成好的提练,对于大规模集群没有成熟的自动化管理方法,在此说明一下,大规模集群与运维工作是息息相关的如果只是百十来台机器,那就没有运维太大的生存空间了。


4、优秀运维人才的极度缺乏;目前各大公司基本上都靠自已培养,这个现状导致行业内运维人才的流动性非常低,非常多好的技术都局限在各大公司内部,如 google 50万台机器科学的管理,或者国内互联公司top 10 的一些运维经验,这些经验是非常有价值的东西并决定了一个公司的核心竞争力;这些问题进而导致业内先进运维技术的流通、贯通、与借签,并最终将限制了运维发展。


5、很多优秀的运维经验都掌握在大公司手中;这不在于公司的技术实力,而在于大公司的技术规模、海量PV、硬件规模足够大,如baidu可怕的流量、 http://51.com海量数据~~~~这些因素决定了他们遇到的问题都是其它中/小公司还没有遇到的,或即将遇到。但大公司可能已有很好的解决方案或系统。


发展前景:


1、从行业角度来看,随着中国互联网的高速发展(目前中国网民已跃升为全球第一)、网站规模越来越来大、架构越来越复杂;对专职网站运维工程师、网站架构师的要求会越来越急迫,特别是对有经验的优秀运维人才需求量大,而且是越老越值钱;目前国内基本上都是选择毕业生培养(限于大公司),培养成本高,而且没有经验人才加入会导致公司技术更新缓慢、影响公司的技术发展;当然,毕业生也有好处:白纸一张,可塑性强,比较认同并容易融入企业文化。


2、从个人角度,运维工程师技术含量及要求会越来越高,同时也是对公司应用、架构最了解最熟悉的人、越来越得到重视。


3、网站运维将成为一个融合多学科(网络、系统、开发、安全、应用架构、存储等)的综合性技术岗位,给大家提供一个很好的个人能力与技术广度的发展空间。


4、运维工作的相关经验将会变得非常重要,而且也将成为个人的核心竞争力,具备很好的各层面问题的解决能力及方案提供、全局思考能力等。


5、特长发挥和兴趣的培养;由于运维岗位所接触的知识面非常广阔,更容易培养或发挥出个人某些方面的特长或爱好,如内核、网络、开发、数据库等方面,可以做得非常深入精通、成为这方面的专家。


6、如果真要以后不想做运维了,转到其它岗位也比较容易,不会有太大的局限性。当然了,你得真正用心去做。


7、技术发展方向:网站/系统架构师。


运维关键技术点解剖


1、 大规模集群管理问题


首先我们先要明确集群的概念,集群不是泛指各功能服务器的总合,而是指为了达到某一目的或功能的服务器、硬盘 资源的整合(机器数大于两台),对于应用来说它就是一个整体,目前常规集群可分为:高可用性集群(HA),负载均衡集群(如lvs),分布式储、计算存储集群(DFS,如google gfs ,yahoo hadoop),特定应用集群(某一特定功能服务器组合、如db、cache层等),目前互联网行业主要基于这四种类型;对于前两种类似,如果业务简单、应用上post操作比较少,可以简单的采用四层交换机 解决(如f5),达到服务高可用/负责均衡的作用,对于资源紧张的公司也有一些开源解决办法如lvs+ha,非常灵活;对于后两种,那就考验公司技术实力及应用特点了,第三种DFS主要应用于海量数据应用上,如邮件、搜索等应用,特别是搜索要求就更高了,除了简单海量存储,还包括数据挖掘、用户行为分析;如 google、yahoo就能保存分析近一年的用户记录数据,而baidu应该少于30天、soguo就更少了。。。这些对于搜索准备性、及用户体验是至关重要的。


接下来,我们再谈谈如何科学的管理集群,有以下关键几点:


I、监控


主要包括故障监控和性能、流量、负载等状态监控,这些监控关系到集群的健康运行,及潜在问题的及时发现与干预;


a、服务故障、状态监控:主要是对服务器自身、上层应用、关联服务数据交互监控;例如针对前端web server,我们就可以有很多种类型的监控,包括应用端口 状态监控,便于及时发现服务器或应用本身是否crash、通过icmp包探测服务器健康状态,更上层可能还包括应用各频道业务的监控,常用方法是采用面业特征码进行判断,或对重点页面进行签名,以网站被黑篡改(报警、并自动恢复被篡改数据)等等,这些只是一部份,还有N多监控方式,依应用特点而定,还有一些问题需解决,如集群过大,如何高性能的进行监控也是一个现实问题。


b、其它就是集群状态类的监控或统计,为我们合理管理调优集群提供数据参考、包括服务瓶颈、性能问题、异常流量、攻击等问题。


2、故障管理


a、硬件故障问题;对于成百上千或上万机器的N多集群,服务器死机、硬件故障概率是非常大的,几乎每时每刻都有服务硬件问题,死机、硬盘损坏、电源、内存、交换机。针对这种情况,我们在设计网站架构时需要充分考虑到这些问题,并将其视为常态;更多的依靠应用的冗余机制来规避这种风险,但给系统工程师足够宽裕的处理时间。(如google不是号称同时死800台机器,服务不会受到任何影响吗);这就是考验运维工程师及网站架构师功能的地方了,好的设计能达到google所描述自恢复能力,如gfs,糟糕的设计那就是一台服务器的死机可能会造成大面积服务的连锁故障反映,直接对用户拒绝响应。


b、应用故障问题;可能是某一bug被触发、或某一性能阀值被超越、攻击等情况不一而定,但重要的一点,是要有对这些问题的预防性措施,不能想当然,它不会出问题,如真出问题了,如何应对?这需要运维工程师平时做足功夫,包括应急响应速度、故障处理的科学性、备用方案的有效等。


3、自动化


自动化:简而言之,就是将我们日常手动进行的一些工作通过工具,系统自动来完成,解放我们的双手及枯燥的重复性劳动,例如:没有工具前,我们安装系统需要一台一台裸机安装,如2000台,可能需要10人/10天,搞烂N张光盘,人力成本更大。。。而现在通过自动化工具,只需几个简单命令 就能搞定、还有如机器人类程序,自动完成以往每天人工干预的工作,使其自动完成、汇报结果,并具备一定的专家系统能力,能做一些简单的是/非判断、优化选择等。。。这些好处非常明显不再多说。。。应该说,自动化运维是运维工程师职业化的一个追求,利已利公,虽然这是一个异常艰巨的任务:不断变更的业务、不规范化的应用设计、开发模式、网络架构变更、IDC变更、规范变动等因素,都可能会对现有自动化系统产生影响,所以需要模块化、接口化、变因参数化等因此,自动化相关工作,是运维工程师的核心重点工作之一,也是价值的体现。

    微信公众号:计算机与网络安全

    ID:Computer-network

    【推荐书籍】

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存