操作和维护工程师在早期阶段是一项非常艰苦的工作。在此期间,可以修理计算机,粉碎网络电缆和移动机器。它似乎没有地位!时间也是碎片化的,各种琐碎的事物都围绕着你。很难反映个人价值观,逐渐对行业感到困惑,并感到没有前途。
这些枯燥乏味的工作确实让人缺乏。从技术角度来看,这些实际上是基本技能。它将不可避免地有助于后期的操作和维护工作,因为我也来到这里并且能够深刻理解它。因此,在这个时期,我们必须保持积极的态度,继续学习。将来的某一天,我相信我会把它归还给你!
那么,转到话题,根据我多年的运维工作经验,与大家分享下一位高级操作维护工程师的学习路线。
主
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服务
每家公司基本上都有一个允许网站运行的网站,需要建立一个网络服务平台。
如果您使用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,日志等。
您还可以使用仪表板显示多个实时关键数据,例如Grafana,这将非常酷。
6,Shell脚本编程高级
Shell脚本是Linux自动化工作的工具。他们必须精通写作,因此您应该进一步学习函数,数组,信号,电子邮件等。
文本处理三个火枪手(grep,sed,awk)都要打6个啊,预计Linux文本处理。
7,Python开发基础
Shell脚本只能执行一些基本任务,并且希望完成更复杂的任务,例如调用API,多进程等。我需要学习一门高级语言。
Python是操作和维护领域最常用的语言。它很容易使用。学习它没有错!此阶段可用于掌握基础知识,例如基本语法结构,文件对象操作,函数,迭代对象,异常处理,电子邮件,数据库编程。等待。
高级
1,Web静态缓存
用户大喊大叫慢慢访问网站,服务器资源仍然非常丰富!对网站的慢速访问可能不是由服务器资源的饱和引起的,并且存在许多影响因素,例如网络和转发层的数量。
对于网络,存在南北通信问题,并且它们之间的访问将是缓慢的。这可以通过使用CDN解决,同时缓存静态页面,尽可能在最上层拦截请求,并减少后端请求和响应时间。如果您不使用CDN,您可以使用Squid,Varnish,Nginx等缓存服务来实现静态页面缓存并将其放在流量条目中。
2,集群
在单个服务器资源有限之后,抵御高流量是不可持续的。解决此问题的最关键技术是使用负载均衡器水平扩展多个Web服务器并同时提供外部服务。这将使性能翻倍。负载平衡器的主流开源技术是LVS,HAProxy和Nginx。一定要熟悉一两个!
解决了Web服务器的性能瓶颈问题。数据库更为关键。它仍然是聚集的。就学习MySQL而言,它可以是主从架构。在此基础上,读写分离,主要负责编写,更多来自负责阅读,来自库。它可以水平扩展,前面增加了一个四层负载平衡器,可以承载数以千万计的PV,这是合适的!
高可用性软件也可用,避免单点武器,主流有Keepalived,Heartbeat等。
网站图片太多了! NFS共享存储支持,处理速度很慢,很好搞定!分布式文件系统,并行处理任务,无单点,高可靠性,高性能等特性,主流有FastDFS,MFS,HDFS,Ceph,GFS等。在早期,我建议学习FastDFS以满足中小型大小的需求。
3,虚拟化
硬件服务器资源利用率非常低,甚至浪费!您可以虚拟化更多空闲服务器并生成大量虚拟机。每个虚拟机都是一个完整的操作系统。可以大大提高资源利用率。建议学习开源KVM + OpenStack云平台。
虚拟机可以作为基础平台,但应用程序业务的弹性扩展太重了!启动几分钟,文件太大了,快速扩展太费劲了!
毋庸置疑,上部容器,容器的主要特征是快速部署和环境隔离。服务封装在镜像中,可以在几分钟内创建数百个容器。
主流容器技术不是Docker。
当然,生产环境单机Docker在大多数情况下无法满足业务需求,可以部署Kubernetes,Swarm集群管理容器,形成大型资源池,集中管理,并为基础架构提供强有力的支持。
4,自动化
反复和反复的工作,不仅无法提高效率,而且价值也没有体现出来。
所有操作和维护工作都是标准化的,例如环境版本,目录结构,操作系统等。在标准化的基础上,它可以更加自动化。使用一个小鼠标或一些命令,您可以完成一项很酷且很酷的复杂任务!
因此,所有操作都尽可能自动化,减少了人为错误并提高了工作效率。
主流服务器集中管理工具:Ansible,Saltstack您可以选择这两个选项中的任何一个。
持续集成工具:Jenkins
5,Python开发先进
您可以进一步学习Python开发并掌握面向对象的编程。
最好学习一个Web框架开发网站,如Django,Flask,主要是开发运维管理系统,将一些复杂的流程写入平台,然后集成集中管理工具,创建属于的管理平台。操作和维护本身。 。
6,日志分析系统
日志也很重要,定期分析可以揭示潜在的陷阱并提取有价值的东西。
开源系统的日志系统:ELK
学习部署和使用以提供开发的日志查看要求。
7,性能优化
仅部署是不够的,性能优化可以最大化服务负载。
这件作品也很难,也是高薪的关键点之一。为了钱,你必须努力学习!
在硬件,操作和软件层之外思考。
意识
1,坚持
学习是一个漫长的过程,是我们每个人一生都需要的职业。
你坚持,很难坚持,而且坚持!
2,目标
Linux操作和维护如何从高级升级到高级?掌握哪些必要的技能? Linux操作和维护如何从高级升级到高级?掌握哪些必要的技能?
如果没有目标,则不称为工作,如果没有量化,则不称为目标。
在每个阶段,设定目标。
例如:首先设置一个可以实现的小目标,赚到一亿!
3,分享
学会分享,技术的价值在于有效地将知识传递给外界,让更多人了解它。
只要每个人都拿出一些东西,你认为会变成什么样?
Linux操作和维护如何从高级升级到高级?掌握哪些必要的技能?
方向是对的,我不怕路!
十大Linux常识
1,GNU和GPL
GNU项目(也称为Geno项目)是Richard Stallman于1983年9月27日发起的自由软件集体协作计划。其目标是创建一个完全免费的操作系统。 GNU也被称为自由软件工程项目。
GPL是GNU通用公共许可证(GPL),“反版权”概念,是保护GNU软件免于免费使用,复制,研究,修改和分发的GNU协议之一。同时,必须以源代码的形式发布软件。
GNU系统与Linux内核相结合,形成一个完整的操作系统:基于Linux的GNU系统,通常称为“GNU/Linux”或简称Linux。
2,Linux发行版典型的Linux发行版包括:Linux内核,一些GNU库和工具,命令行shell,X Window系统的图形界面以及相应的桌面环境,如KDE或GNOME,并包含来自办公套件的数千个应用程序,编译器,文本编辑器到科学工具应用软件。
主流分布:
红帽企业Linux,CentOS,SUSE,Ubuntu,Debian,Fedora,Gentoo
3,Unix和Linux
Linux是基于Unix的,属于Unix类。 Uinx操作系统支持支持多CPU架构的多用户,多任务,多线程和操作系统。 Linux继承了Unix以网络为中心的设计理念,是一个稳定的多用户网络操作系统。
4,交换分区
当物理内存不足时,Swap分区(交换区域)与Swap交换。也就是说,当系统的物理内存不足时,硬盘上的一部分空间被释放以供当前运行的程序使用。当这些程序运行时,保存的数据将从交换分区恢复到内存。没有存储空间的程序通常是长时间未操作的程序。
交换空间一般应大于或等于物理内存的大小,而最小值不应小于64M,最大值应为物理内存的两倍。
5,GRUB的概念
GNU GRUB(GRand Unified Bootloader“GRUB”)是GNU项目中的多操作系统引导启动管理器。
GRUB是一个支持多个操作系统的引导启动管理器。在具有多个操作系统的计算机中,GRUB可以选择用户在计算机启动时要运行的操作系统。同时,GRUB可以在Linux系统分区上引导不同的内核,也可以用于将引导参数传递给内核,例如进入单用户模式。
6,缓冲区和缓存
缓存是CPU和内存之间的临时存储。缓存大小远小于内存,但交换速度比内存快得多。 Cache通过缓冲文件数据块解决了CPU运行速度与内存读/写速度之间的矛盾,提高了CPU与内存之间的数据交换速度。缓存缓存越大,CPU处理的速度就越快。
缓冲区(缓冲区)缓存通过缓存磁盘(I/O设备)块加速对磁盘上数据的访问,减少I/O,并改善内存和硬盘(或其他I/O设备)之间的数据交换速度。缓冲区即将写入磁盘,并从磁盘读取缓存。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:设备文件存储目录。像终端,磁盘,CD-ROM等
/var:存储频繁更改的数据,例如日志,电子邮件等。
/home:普通用户目录的默认存储目录。
/opt:存储第三方软件的目录,例如用户定义的软件包和已编译的软件包,将安装到此目录中。
/lib:库文件和内核模块存储目录,其中包含系统程序所需的所有共享库文件。
9,硬链接和软链接
硬链接:硬链接是使用相同索引节点(inode编号)的链接,也就是说,它可以允许多个文件名指向同一个文件索引节点(硬链接不支持目录链接,不能交叉分区)链接),删除硬链接不会影响inode的源文件及其下的多个硬链接。
来源新链接
软链接(符号链接):符号链接是以路径形式创建的链接,类似于指向窗口的快捷链接。符号链接允许创建多个文件名以链接到同一源文件,并删除源文件。所有软连接都将无法使用。 (软链接支持目录,支持跨分区,跨文件系统)