第一部分:定义
运维工程师,字面理解运行维护。
linux运维即linux运维工程师,集合网络、系统、数据库、开发、安全工作于一身的“复合性人才”。
除了传统IT运维部分,运维人员还是管理制度、规范流程的制定、推行、监督角色。
运维流程,运维规范,运维制度,自动化智能化,批量部署,批量管理,网站架构优化,监控预警,流量及日志分析统计,权限,安全优化管理,账户统一认证等这才是运维人员该做的。
运维的核心是运维思想,并非运维技术本身。如何推进完善运维工作,提升工作效率,提升团队以一当十的战斗力才是最核心的内容。
运维宗旨是7*24小时网络稳定,用户体验良好。有经验的运维人员会先思考,再动作,经验不足的运维人员会先做,遇到问题再思考,这也是完全不同的层次和思想。
第二部分:10个基本技能点
本人是 Linux 运维工程师,对这方面有点心得,现在我说说要掌握哪方面的工具吧!
说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具。
微观来说,则需要运维工程师了解系统的每一个工作步骤。
宏观来说,需要了解整个系统的架构,不同服务是如何一环扣一环工作的;
1、Linux 系统基础
这个不用说了,是基础中的基础,连这个都不会就别干了,参考书籍,可以看鸟哥 Linux 基础篇,至少要掌握这书 60% 内容,没必须全部掌握,但基本命令总得会吧!
2、 网络服务
服务有很多种,每间公司都会用到不同的,但基础的服务肯定要掌握,如 FTP, DNS,SAMBA, 邮件, 这几个大概学一下就行,LAMP 和 LNMP 是必须要熟练,我所指的不是光光会搭建,而是要很熟悉里面的相当配置才行,因为公司最关键的绝对是 Web 服务器,所以 nginx 和 apache 要熟悉,特别是 nginx 一定要很熟悉才行,至少有些公司还会用 tomcat,这个也最好学一下。
其实网络服务方面不用太担心,一般公司的环境都已经搭建好,就算有新服务器或让你整改,公司会有相应的文档让你参照来弄,不会让你乱来的,但至少相关的配置一定要学熟,而且肯定是编译安装多,那些模块要熟悉一下他的作用,特别是 PHP 那些模块。
这 2 点只是基础,也是必要条件,不能说是工具,以下才是真正要掌握的工具。
3、shell 脚本和另一个脚本语言
shell 是运维人员必须具备的,不懂这个连入职都不行,至少也要写出一些系统管理脚本,最简单也得写个监控 CPU,内存比率的脚本吧!这是最最最基本了,别以为会写那些猜数字和计算什么数的,这些没什么作用,只作学习意义,写系统脚本才是最有意义,而另一个脚本语言是可选的,一般是 3P,即 python, perl 和 php,php 就不需要考虑了,除非你要做开发,我个人建议学 python 会比较好,难实现自动化运维,perl 是文本处理很强大,反正这两个学一个就行了。
4、sed 和 awk 工具
必须要掌握,在掌握这两个工具同时,还要掌握正则表达式,这个就痛苦了,正则是最难学的表达式,但结合到 sed 和 awk 中会很强大,在处理文本内容和过滤 Web 内容时十分有用,不过在学 shell 的同时一般会经常结合用到的,所以学第 3 点就会顺便学第 4 点。
5、 文本处理命令
sort , tr , cut, paste, uniq, tee 等,必学,也是结合第 3 点时一并学习的。
6 、数据库
首选 MySQL,别问我为什么不学 SQL Server 和 Oracle,因为 linux 用得最多绝对是 MySQL,增删改查必学,特别要学熟查,其它方面可能不太需要,因为运维人员使用最多还是查,哪些优化和开发语句不会让你弄的。
7 、防火墙
不学不行,防火墙也算是个难点,说难不难,说易不易,最重要弄懂规则,如果学过 CCNA 的朋友可能会比较好学,因为 iptables 也有 NAT 表,原理是一样的,而 FILTER 表用得最多,反正不学就肯定不合格。
8 、监控工具
十分十分重要,我个人建议,最好学这 3 个,cacti,nagios,zibbix,企业用得最多应该是 nagios 和 zibbix,反正都学吧!但 nagios 会有点难,因为会涉及到用脚本写自动监控,那个地方很难。
9 、集群和热备
这个很重要,肯定要懂的,但到了公司就不会让你去弄,因为新手基本不让你碰,集群工具有很多,最好学是 LVS,这是必学,最好也学学 nginx 集群,反向代理,还有热备,这个就更多工具能实现了,像我公司是自己开发热备工具的,mysql 热备也要学,就是主从复制,这个别告诉我容易,其实不容易的,要学懂整个流程一点也不容易,只照着做根本没意思。
10 、数据备份
不学不行,工具有很多,但至少要把 RAID 的原理弄懂,特别是企业最常用的 1+0 或 0+1,自己做实验也要弄出来,备份工具有很多,如 tar, dump, rsync 等,最好多了解一下。
这 10 点已经可以入门了,因为有些技术会比较难学,例如 apache 和 nginx 中还有些很重要的技术,如系统调优和服务优化,还有程序优化,这些在没接触工作前很难学习到的,所以先把这 10 点学了吧!估计要学熟至少 3 个月不止,就脚本那部分已经让你很吃力了,我建议是先学熟 shell,等工作后再学另一门脚本语言,这样会比较好。
以上就是踏入 Linux 运维工程师需要掌握的工具,其实还有很多工具要掌握的,但你在学习环境中是很难学到,最后我再提醒一下,这里所指的工具相当于技能,而不是像 Windows 或 ubuntu 那些图形化工具,那些工具没用的,还有,学 Linux 就别装图形界面,这样虚拟机就不用吃太多内存,而且绝对不建议在真机上装 Linux,根本达不到学习效果。
第三部分:发展路线
linux运维发展路线常见的就是下面两条路线:
第一条:运维应用-->系统架构-->运维开发-->系统开发
第二条:运维应用-->应用dba-->架构dba-->开发DBA
下面详细每个阶段的职位说明(以北上广为例):
01.运维应用级别:
这个阶段就是玩别人的软件,例如:linux,nginx,mysql,php,nagios 大多数的linux运维工程师,网络工程师,系统工程师都是这个阶段。 这个阶段的工资平均3-10K。处在这个阶段的伙伴们要注意了。
这里属于金字塔的底端,工资是相对比较低的。
02.系统架构级别:
这个阶段就是用已知软件架构大规模集群方案以及实现各种技术方案
这个就是所谓的系统架构师,如果是程序开发就是程序架构师。
这个阶段的工资平均10K-30K,属于运维应用上层,需要靠技术,沟通,思想三条线通力配合才能达到这个水平。
03.运维开发级别:
这个阶段就是利用已知语言,开发基本的应用层工具,例如:web管理系统
这个阶段的平均工资大概10-30K,如果具备前两个运维应用和系统架构的积淀, 那么工资30-60K很轻松。
04.系统开发级别:
这个阶段就是修改开源的软件,或者开发新的服务软件(例如:也开发一个web软件,存储软件)与底层软件(例如:OS)这个阶段的平均工资大概20-60K,如果具备前两个运维应用和系统架构的积淀,工资更高!
05.数据库管理和架构:
这个阶段就是也主要是玩别人的软件,但是由于数据相对更重要,所以工资要一些。
数据库也需要架构,所以数据库的高级阶段工资也会较高,数据库开发职位不多,就不说了。
这个阶段的工资平均10K-40K。要求至少第一层运维应用的能力。其他能力有就是加分。
(一)三条具体学习路线对应上面发展规划
第一条:linux运维工程师-->linux顶级架构师-->python运维开发-->C语言运维系统开发
第二条:linux运维工程师-->linux顶级架构师-->php运维开发-->C语言运维系统开发
第三条:linux运维工程师-->MySQL高级DBA
提示:【以上路线技术掌握60%内容,加以时日,每条路线工资20K+】
(二)精品学习路线发展规划
第一条:linux运维工程师-->linux顶级架构师
第二条:linux运维工程师-->python运维系统开发
第三条:linux运维工程师-->php运维系统开发
提示:【以上路线技术掌握60%内容,加以时日,每条路线工资10K+】