运维工程师前期是一个非常辛苦的工作。这段时间,他们可能会做电脑维修、网线、搬机器等工作。你个人价值难以体现,对行业逐渐迷茫,感觉没有发展前途。这些无聊的工作确实会让人缺乏。从技术角度来说,这些其实都是基本功,对后期的运维工作有帮助,因为我也是这样过来的,深有体会。因此,在这期间,我们一定要保持积极的心态,不断地学习。未来的某一天,我相信我会报答你的!好吧,让我们进入正题。结合我多年的运维经验,给大家分享一下高级运维工程师的学习路线。初级1.Linux基础入门阶段需要熟悉Linux/Windows操作系统的安装、目录结构、启动过程等。2.系统管理主要学习Linux系统。在生产环境中,工作基本都是在字符界面完成的,所以需要掌握几十个常用的基本管理命令,包括用户管理、磁盘分区、软件包管理、文件权限、文本处理、进程管理、性能分析工具等。3.必须熟悉基本的网络OSI和TCP/IP模型。必须了解基本的交换机和路由器概念和实现原理。4.Shell脚本编程基础掌握Shell的基本语法结构,能够编写简单的脚本。中级1.网络服务最常用的网络服务都要部署,比如vsftp、nfs、samba、bind、dhcp等,代码版本管理系统必不可少。学习主流的SVN和GIT,轻松部署使用。数据经常在服务器之间传输,所以能够使用:rsync和scp。数据同步:inotify/sersync。要重复完成一些任务,可以写成脚本定时运行,所以必须会配置Linux下的定时任务服务crond。2.Web服务每个公司基本上都有一个网站。要使网站运行起来,就需要搭建一个Web服务平台。如果用PHP语言开发,通常会搭建LAMP和LNMP网站平台。这是技术术语组合的拼写。单独来说,你必须会部署Apache、Nginx、MySQL和PHP。如果是JAVA语言开发,通常使用Tomcat来运行项目。为了提高访问速度,可以使用Nginx反向代理Tomcat。Nginx处理静态页面,Tomcat处理动态页面,实现动静分离。不是部署那么简单,还需要知道HTTP协议的工作原理和简单的性能调优。3.数据库数据库为MySQL,是目前世界上使用最广泛的开源数据库。学就对了!还需要了解一些简单的SQL语句、用户管理、常用存储引擎、数据库备份与恢复等。如果想深入,就必须知道主从复制、性能优化,以及主流的集群方案:MHA、MGR等。当然NoSQL这么火,学Redis和MongoDB就可以了。4.安全非常重要。不要等到系统受到威胁才制定安全策略。太晚了!因此,当服务器上线后,应立即实施安全访问控制策略,例如使用iptables限制只能访问可信源IP,关闭一些无用的服务和端口等。一些常见的安全威胁类型必须知道,否则如何对症下药!例如CC、DDOS、ARP等。5、监控系统监控必不可少,是及时发现问题、追溯问题的救命稻草。可以选择学习主流的Zabbix开源监控系统,功能丰富,可以满足基本的监控需求。监控点包括服务器基础资源、接口状态、服务性能、PV/UV、日志等,还可以设置一个dashboard显示几个实时关键数据,比如Grafana,会很酷。6.Shell脚本编程进阶Shell脚本是Linux自动完成工作的强大工具,必须熟练编写,因此需要进一步学习函数、数组、信号、发送邮件等。文本处理的三剑客(grep、sed、awk)都得打6,linux下的文本处理就靠它们了。7、Python开发基础Shell脚本只能完成一些基本的任务,想要完成更复杂的任务,比如调用API,多进程等,需要学习高级语言。Python是运维领域使用最多的语言。它易于使用,您可以学习它!基本的语法结构、文件对象操作、函数、迭代对象、异常处理、emailing、数据库编程等等,掌握这个阶段的基础就够了。进阶1.网页静态缓存用户老是抱怨访问网站慢,但是服务器资源还是很丰富的!网站访问缓慢可能不是服务器资源饱和造成的。影响因素很多,比如网络、转发层数等。对于网络来说,存在南北向的通信问题,他们之间的访问会很慢。这可以通过使用CDN来解决。同时缓存静态页面,在顶层拦截请求尽可能响应,减少后端请求和响应时间。如果不使用CDN,也可以使用Squid、Varnish、Nginx等缓存服务实现静态页面缓存,放在流量入口处。2、集群中单台服务器毕竟资源有限,抗住高流量肯定是不可能的。解决这个问题最关键的技术是利用负载均衡器水平扩展多个Web服务器,同时对外提供服务,从而实现性能的指数级扩展。负载均衡器的主流开源技术包括LVS、HAProxy和Nginx。你一定熟悉一两个吧!Web服务器的性能瓶颈已经解决,数据库更加关键。集群仍在使用。以MySQL为例,可以采用一主多从。在此基础上,读写分离,master负责写。多从库负责读取,从库可以水平扩展。前面有一个四层的负载均衡器,可以承载高阶的PV。是对的!高可用性软件还必须能够避免单点武器。主流的有Keepalived和Heartbeat等待。为什么网站上有这么多图片!NFS共享存储不支持,处理很慢。HDFS、Ceph、GFS等。前期建议学习FastDFS,可以满足中小企业的需求。3、虚拟化的硬件服务器资源利用率很低,很浪费!可以将闲置的服务器虚拟成很多虚拟机,每个虚拟机就是一个完整的操作系统。可以大大提高资源利用率。推荐学习开源的KVM+OpenStack云平台。虚拟机作为基础平台还好,但是应用业务的弹性伸缩太重了!启动需要几分钟,而且文件那么大,快速扩容太费力了!也就是说,容器的主要特点是快速部署和环境隔离。一个服务封装成一个镜像,分分钟创建上百个容器。主流的容器技术非Docker莫属。当然,生产环境中的单机Docker在大多数情况下是不能满足业务需求的。可部署Kubernetes和Swarm集群管理容器,形成大型资源池集中管理,为基础设施提供强大支撑。4、将重复性工作自动化,不仅不能提高效率,更不能体现价值。所有的运维工作都是标准化的,比如环境版本、目录结构、操作系统的统一。只有在标准化的基础上,才能实现更多的自动化。一个复杂的工作任务可以通过点击鼠标或几个命令来完成。因此,尽可能将所有操作自动化,以减少人为错误,提高工作效率。主流服务器集中管理工具:Ansible、Saltstack,任选其一即可。持续集成工具:Jenkins5、高级Python开发可以进一步学习Python开发,掌握面向对象编程。尽可能掌握一个web框架开发网站,比如Django,Flask,主要是开发一个运维管理系统,把一些复杂的流程写到平台里面,然后集成集中管理工具,打造一个属于自己的管理平台运维本身。6、日志分析系统日志也很重要。定期分析可以发现潜在的隐患,提取有价值的东西。一个开源的日志系统:ELK学习部署使用,提供开发日志查看需求。7.性能优化仅仅部署是不够的。性能优化可以尽可能增加服务容量。这个也是比较难的,也是高薪的重点之一。为了钱,你必须努力学习!可以从硬件层、操作系统层、软件层、架构层的维度来思考。意识1、坚持学习是一个很漫长的过程,是我们每个人需要坚持一生的事业。坚持重要,坚持难,成功在于坚持!2.目标没有目标就不是工作,没有量化就不是目标。在每个阶段,设定一个目标。比如:先定一个可以实现的小目标,赚个亿!3.分享并学会分享。技术的价值在于能够有效地将知识传递给外界,让更多的人知道。大家只要拿出点东西来,想想会发生什么?方向对了,路漫漫其修远兮!Linux常识十1、GNU和GPLGNU项目(又称Genu项目),由理查德·斯托曼(RichardStallman)于1983年9月27日公开发起的自由软件集体(FreeSoftwareCollective),其目标是创建一个完全自由的操作系统。GNU也称为自由软件工程项目。GPL即GNU的通用公共许可证(GNUGeneralPublicLicense,GPL),也就是“反版权”的概念。同时要求软件必须以源代码的形式发布。GNU系统和Linux内核结合起来形成一个完整的操作系统:基于Linux的GNU系统,通常称为“GNU/Linux”,简称Linux。2.Linux发行版一个典型的Linux发行版包括:Linux内核、一些GNU库和工具、命令行shell、具有图形界面的XWindow系统和相应的桌面环境,如KDE或GNOME,并包含数以千计来自办公应用软件的资源套件、编译器、文本编辑器到科学工具。主流发行版:RedHatEnterpriseLinux,CentOS,SUSE,Ubuntu,Debian,Fedora,Gentoo3,UnixandLinuxLinux是基于Unix的,属于Unix范畴。Uinx操作系统支持多用户、多任务、多线程,支持多CPU架构的操作系统。Linux继承了Unix以网络为中心的设计思想,是一个性能稳定的多用户网络操作系统。4.Swap分区Swap分区,即swap区,当物理内存不够用时系统与Swap进行交换。即当系统的物理内存不够用时,将硬盘中的一部分空间释放出来,供当前运行的程序使用。当那些程序要运行时,将保存的数据从Swap分区恢复到内存中。内存空间被释放的程序一般都是很久没有运行的程序。Swap空间一般应该大于等于物理内存的大小,不能小于64M,不能大于物理内存的两倍。五、GRUB的概念GNUGRUB(GRandUnifiedBootloader简称“GRUB”)是GNU工程中的一个多操作系统引导管理程序。GRUB是一个支持多种操作系统的引导管理器。在有多个操作系统的计算机中,GRUB可以用来在计算机启动时选择用户想要运行的操作系统。同时GRUB可以引导Linux系统分区上的不同内核,也可以用来给内核传递启动参数,比如进入单用户模式。6.Buffer和CacheCache(高速缓存)是位于CPU和内存之间的临时存储。缓存容量比内存小很多,但是交换速度比内存快很多。Cache通过缓存文件数据块,解决了CPU运算速度和内存读写速度之间的矛盾,提高了CPU和内存之间的数据交换速度。缓存越大,CPU处理速度越快。缓冲(buffer)缓存内存,通过缓存磁盘(I/O设备)数据块,加快访问磁盘上的数据,减少I/O,提高内存与硬盘(或其他I/O设备)之间的数据交换速度.Buffer即将写入磁盘,Cache是??从磁盘读取。7.TCP三次握手(1)请求方发送SYN(SYN=A)包,等待响应确认(2)响应方收到SYN,返回SYN(A+1)和自己的ACK(K)报文到请求终端(3)请求终端收到响应终端的SYN+ACK报文,再次向响应终端发送确认报文ACK(K+1)。请求端和响应端建立TCP连接,完成三次握手,开始数据传输。8、Linux系统目录结构Linux文件系统采用带链接的树形目录结构,即只有一个根目录(通常用“/”表示),包含下级子目录或文件的信息;子目录还可以包含有关子目录或文件的低级信息。/:上一层的根目录,整个文件系统层次的根目录。即文件系统的入口,顶级目录。/boot:包含Linux内核和系统启动程序所需的文件,如kernel、initrd;grub系统引导管理器也在这个目录中。/bin:基本系统所需的命令,功能与“/usr/bin”类似,该目录下的文件都是可执行文件。普通用户也可以执行。/sbin:基本的系统维护命令,只有超级用户才能使用。/etc:所有系统配置文件。/dev:设备文件存放目录。如终端、磁盘、光盘等。/var:存放经常变化的数据,如日志、邮件等。/home:普通用户目录的默认存放目录。/opt:第三方软件的存放目录,如用户自定义软件包、编译软件包等安装在该目录下。/lib:库文件和内核模块存放目录,包括系统程序所需的所有共享库文件。9、硬链接和软链接硬链接(HardLink):硬链接是使用同一个索引节点(inode号)的链接,即可以允许多个文件名指向同一个文件索引节点(hard链接不支持目录链接,不允许跨分区链接),删除一个硬链接不会影响索引节点的源文件及其下的多个硬链接。lnsourcenew-link软链接(符号链接,SymbolicLink):符号链接是以路径形式创建的链接,类似于windows中的快捷链接,一个符号链接允许创建多个文件名链接到同一个源文件,删除源文件,其下的所有软链接将不可用。(软链接支持目录、跨分区、跨文件系统)ln-ssourcenew-link10,RAID技术磁盘阵列(RedundantArraysofindependentDisks,RAID),廉价的冗余(独立)磁盘阵列。RAID是将多个独立的物理硬盘以不同的方式组合成一个硬盘组(逻辑硬盘),提供比单个硬盘更高的存储性能和数据备份技术。RAID技术可以将多个磁盘组合在一起作为一个逻辑卷,提供磁盘跨越功能;数据可以分成多个数据块(Block),并行写入/读取多个磁盘,提高访问磁盘的速度;通过镜像或验证操作提供容错。具体的功能是通过不同的RAID组合来实现的。从用户的角度来看,RAID组成的磁盘组就像一块硬盘,可以对其进行分区、格式化等操作。RAID的存储速度远高于单个硬盘,并且可以提供自动数据备份和良好的容错能力。RAID级别,不同的RAID组合分为不同的RAID级别:RAID0:称为Strippingstripe存储技术,所有磁盘完全并行读写,是最简单的磁盘阵列组成形式,只有2个以上的硬盘足够了,成本低,可以提供整个磁盘的性能和吞吐量,但是RAID0不提供数据冗余和错误修复功能,所以单个硬盘的损坏会导致所有数据丢失。(RAID0只是单纯提高磁盘容量和性能,不为数据提供可靠性保证,适用于对数据安全性要求不高的环境)RAID1:镜像存储,通过镜像两块磁盘之一的数据进行数据冗余在另一块磁盘上实现,两块磁盘产生相互备份的数据,其容量仅等于一块磁盘的容量。当数据写入一个磁盘时,会在另一个空闲磁盘上生成镜像,在不影响性能的情况下尽可能保证系统的可靠性和可修复性;当原始数据繁忙时,可以直接从镜像中复制读取数据(从两个硬盘中速度较快的那个),提高读取性能。相反,RAID1的写入速度较慢。RAID1一般支持“热插拔”,即阵列中硬盘的拆卸或更换可以在系统运行时进行,无需中断和退出系统。RAID1是磁盘阵列中硬盘单位成本相对较高的一种,但它提供了较高的数据安全性、可靠性和可用性。当硬盘出现故障时,系统可以自动切换到镜像盘进行读写,无需对无效数据进行Reorganize。RAID0+1:又称RAID10,实际上是RAID0和RAID1的结合,在不断以比特或字节为单位划分数据,并行读写多个磁盘的同时,对每个块磁盘进行镜像冗余。通过RAID0+1的组合形式,除了数据分布在多个磁盘上,每个磁盘都有自己的物理镜像磁盘,提供冗余,允许一个或更少的磁盘发生故障而不影响数据的可用性,具有快速的读写能力.RAID0+1需要至少4个硬盘才能在磁盘映像中创建一个条带集。RAID0+1技术不仅保证了数据的高可靠性,也保证了数据读写的高效率。RAID5:是一种平衡存储性能、数据安全和存储成本的存储方案。RAID5可以理解为RAID0和RAID1的折衷,RAID5至少需要三块硬盘。RAID5可以为系统提供数据安全,但保护程度低于镜像,磁盘空间利用率高于镜像。RAID5的数据读取速度与RAID0类似,只是多了一个奇偶校验信息,写入数据的速度比写入单盘略慢。同时,由于多个数据对应一个奇偶校验信息,RAID5比RAID1具有更高的磁盘空间利用率,存储成本也相对较低。是目前广泛使用的解决方案。
