小张,3年网工一枚,常常抱怨:薪资不高,琐事一堆,常常背锅。

眼看一把年纪了,发现不能再这样下去了,向我讨教一条逆袭之路!

既然要说,那就和大家一起分享下吧,顺便总结下十几年的Linux运维经验。

聊聊:自己吧!

最早接触Linux是在2000年,那时,我还在上大学。一个从荷兰归来的同学,带回一个Linux的拷贝版,版本还是个人版Redhat6.2。

为安装这个系统,我们挑灯夜战,不亦乐乎。那时Linux的学习资料还很少,能够学习的书籍也不多,网上Linux技术社区更不多,便凭着Redhat6.2自带的几页使用说明开始了Linux学习生涯。

这算是我学Linux的起点吧。其实学Linux门槛很低,只要你想学,有热情,有学习能力,几个月时间就能轻松上手干活。

Linux:快速入门?

那么通过什么学习方法,能够快速入门Linux呢?我这么多年的工作和学习,总结出了下面一套方法,希望对大家有用。

1>多动手实践,理论结合实际

这个太重要了,我见过太多的人,懒于动手,觉得能看懂,能听懂,就不去实践练习,结果觉得什么都懂的人,在真正干活的时候傻眼了。

很多Linux知识,例如每个命令的参数含义,在书本上说得很清楚,看起来也很容易理解,但是组合起来使用,却并不那么容易,没有多次的动手练习,其中的技巧是无法完全掌握的。

2>一定要习惯命令行方式工作

Linux下90%的操作都是在命令行下完成的,因而,命令是必须要熟练掌握的,可能刚刚从windows下转到Linux的新手会感到困难。

3>选择一个适合自己的Linux发行版本

linux的发行版本太多了,目前大约有300多个linux的发行版本,但是,请不要为此而感到没有头绪,根据自己学习Linux的方向,选择适合自己的发行版本。

例如,如果喜欢Linux的企业级应用,想从事linux服务器管理方面工作的话,推荐学习CentOS版本或者Red Hat Enterprise Linux发行版本;而如果是开发、测试等等,推荐你选择Ubuntu Linux;如果你已经是Linux的初中级学者,想继续深入学习,推荐你选择CentOS或者Debian Linux等。

4>学会做笔记、写实录

这个我的体会很深,学的再多,都是会忘记的,见过很多初学者,学过了,但是因为工作环境暂时用不到,所以很快又忘了,难道要无数遍的学吗?

谁都会忘记,但是有个方法可以让你忘记后迅速找回已经学过的知识,那就是做笔记,写学习实录,笔记要做的非常详细,甚至可以像流水账一样都行,只要自己能看懂即可,特别是学习过程中,自己遇到的坑,一定要写的足够详细,这样的话,在需要重新熟悉这部分知识的时候,可以迅速唤醒之前的记忆。

如果有条件,也可以把自己的学习过程通过视频的方式录制下来,这样更有助于以后的备忘查询,效果更好。

5>学会自我学习、独立学习

学习一项技能的过程,核心是自己,不能依赖任何人,不管你是报了培训班,还是找了私教,他们只是你学习过程中的引路人,他们的作用是帮助你把握学习方式,帮助你少走弯路,同时把他们多年的经验分享给你,除此之外,其它都要靠你自己,所以,在这个过程中,要养成独立学习能力。

什么叫独立学习,那就是出现问题,先自己解决,能解决,那就是进步,不能解决了,再去问老师,那怎么独立解决呢,这需要依赖一些网络工具,最典型的就是搜索引擎,出现问题了,最简单的就是把出现的错误复制到搜索引擎,99%都能找到答案,这就是独立学习能力。此外,还可以通过使用Linux自身提供了强大的联机帮助文档,QQ、微信技术交流群等多种形式,都可以去提问并解决问题。

独立思考并解决问题,不但锻炼了自己独立解决问题的能力,在技术上也能得到快速提高。如果通过向人询问得到答案后,要思考为何这么做,然后做笔记记录解决过程。最忌讳的方式是只要遇到问题,就去问人,虽然这样可能会很快解决问题,但是长久下去遇到问题就会依赖别人,技术上也不会进步。

运维:学什么?

做一名合格的运维人,要学的技术是很多的,具体有哪些,下面是我做的一个简单总结:

1>基础运维技能

Linux多种安装方式 硬盘RAID技术与RAID选型 Linux初始化init系统 系统服务管理工具systemd和sysvinit Linux下的shell编程入门 Linux下各种命令使用(常见80多个) 源码、yum、rpm方式安装软件 Linux用户权限管理 Linux磁盘与存储管理(LVM、fdisk) Linux内存与内存机制(swap、free) Linux文件系统有文件系统选型(ext3/ext4/xfs/nfs) Linux进程管理与监控crond

2>web运维技能

基于Apache的LAMP架构 基于nginx的LNMP架构 apache下https、反向代理、Prefork MPM、 Worker MPM apache+jk+tomcat web架构 nginx的反向代理、负载均衡、https、PHP-FPM应用

3>数据库运维技能

MySQL常用操作与基础调优策略 Xtrabackup工具的使用 MySQL Replication架构 MySQL高可用架构MHA MySQL读写分离中间件proxysql redis内存数据库以及主从架构

4>性能调优、故障排查技能

系统调优评估方法 CPU、内存、磁盘、网络性能评估工具与方法 线上Linux服务器基础优化技能 Linux软件防火墙iptables以及rsync数据备份

5>自动化运维技能

ansible的使用 ansible使用Playbooks管理复杂任务 puppet自动化工具的使用 saltstack自动化工具的使用

6>运维监控技能

zabbix运维监控平台 Ganglia分布式数据收集展示平台 nagios自动化告警平台 centreon一体化智能监控平台

7>集群架构技能

Keepalived高可用集群 LVS负载均衡集群 HAProxy负载均衡集群 Keepalived整合lvs与HAProxy

8>虚拟化、大数据技能

KVM虚拟化与虚拟机管理工具 ELK+Filebeat+Kafka+ZooKeeper日志分析平台架构 hadoop生态圈以及分布式集群 hbase、hive、pig等分布式计算工具 分布式计算MapReduce与yarn工 spark分布式计算框架

9>容器、容器编排

docker基础与镜像、容器、仓库 Dockerfile 定制镜像 Docker编排工具Compose使用 自动化容器操作平台Kubernetes(k8s)

成为:高薪运维?

要成为一名合格的,拿高薪的运维工程师,不但需要上面我们说的那些技术能力,还需要更多的个人素质能力,总结如下:

沟通能力、团队协作 主动性、执行力、精力旺盛、抗压能力强 工作中胆大心细、不走寻常路 逻辑思维能力要强,为人谦和

这些看似可有可无的能力,却是面试官最看重的点,它甚至比技术能力得分还高。当然技术也是衡量运维人员的标准,但是我认为仅占30%。

选择:运维or开发?

很多人跟开发比,觉得运维这个职位很low,干的都是一些打杂的活,还经常背锅。你错了!

随着云计算、大数据等的迅猛发展,运维这个岗位会越来越紧缺。因为未来是综合技能职业的天下,而运维就是一个要求综合技能的岗位。

我见过很多所谓牛逼的开发人员,做过各种大项目(超千万,过亿都有),开发过各种高并发的系统,可交流下来,发现这些人确实有超越常人的地方,但仅仅是在开发的某些方面。

而论综合技能,真的不敢恭维,起码的网络知识,系统安装等等都不会。这在一个分工细化的大公司里面,优势才能体现出来,而如果在一个小公司里面,完全没有优势可言了。

未来:运维+开发

未来是综合技能的天下。随着运维这个职业的发展,企业对运维技能的需求也在发生变化,例如现在很多运维岗位,都要求运维具备开发能力,这就是所谓的DevOps。

DevOps是 “开发”和“运维”的缩写,但它不仅仅是运维开发,它是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运维和质量保障(QA)部门之间的沟通、协作与整合。

从这个方向看,未来的运维是协作运维,公共开发的趋势。所以,运维人员要应对这个趋势,还需要精通一门开发语言,其实任何语言都行,那要推荐的话,当然是目前最流行,最有钱途的go、python、php等,不要求都掌握,挑选一个深入掌握它即可。

好了,运维相关的话题就说这么多,你是否也有小张类似的困惑,不要纠结了,借用《解忧杂货店》里面的一句话:

“其实所有纠结做选择的人心里早就有了答案,咨询只是想得到内心所倾向的选择。最终的所谓命运,还是自己一步步走出来的。”

是的,把握住方向,剩下的就靠自己一步步去努力,去坚持了!

如果你已经有了决定,那就马上行动起来吧,8位资深运维专家,还原一线生产环境中的运维难点,打造组合专栏《自动化运维必备实战秘籍》。

一定适合你快速入门! 《自动化运维必备实战