最近,跟一个同行朋友小张聊天,他非常苦恼,因为工作不如意,他入职这个企业已经3年了,做的是网络工程师,薪资不高,公司事情还一大堆,还经常被迫背锅,眼看一把年纪了,发现不能再这样下去了,想转行做运维。
经过与他的深聊,发现很多朋友都有类似问题。对于这些问题,我也有多年的学习经历和经验,既然要说,那就好好给大家分享下吧,也算总结下自己多年运维行业Linux运维的心理路程。
还是先来说说自己吧!
记得最早接触Linux是在2000年,那个时候,我还在上大学,一个同学从荷兰归来,带回一个Linux的拷贝版,记得版本还是个人版Redhat6.2。曾经为安装这个系统让我们忘记疲劳,挑灯夜战,不亦乐乎。那时Linux的学习资料还很少,能够学习的书籍也不多,网上Linux技术社区也很少,就凭着Redhat6.2自带的几页使用说明开始了学习linux的生涯。
这算是我学linux的开始吧,其实学linux门槛很低,只要你想学,都能学会,不需要太多的基础,有热情,有学习能力,几个月时间都能轻松上手干活。多年的运维工作中,接触过各种各样的同行或同事,有高中毕业的老鸟,也有研究生出来的新秀,都在这个行业做的很优秀。
要说他们的共同点,我觉得是兴趣和坚持。
那么通过什么学习方法,能够快速掌握入门linux呢,我这么多年的工作和学习,总结出了下面一套方法,希望对大家有用。
这个太重要了,我见过太多的人,懒于动手,觉得能看懂,能听懂,就不去实践练习,结果觉得什么都懂的人,在真正干活的时候傻眼了,能说,就是不知道如何下手,就是少实践的真实体现。
很多Linux知识,例如每个命令的参数含义,在书本上说得很清楚,看起来也很容易理解,但是一旦组合起来使用,却并不那么容易,没有多次的动手练习,其中的技巧是无法完全掌握的。
Linux下90%的操作都是在命令行下完成的,因而,命令是必须要熟练掌握的,可能刚刚从windows下转到Linux的新手会感到困难,但是一定要努力的适应,这确实有点困难,但是一旦迈过了这个难关,接下来学习Linux的路程将一马平川。很多Linux新手最终放弃linux,都跟这个原因有关。
linux的发行版本太多了,目前大约有300多个linux的发行版本,但是,请不要为此而感到没有头绪,根据自己学习Linux的方向,选择适合自己的发行版本,例如,如果喜欢Linux的企业级应用,想从事linux服务器管理方面工作的话,推荐学习CentOS版本或者Red Hat Enterprise Linux发行版本,而如果是开发、测试等等,推荐你选择Ubuntu Linux,如果你已经是Linux的初中级学者,想继续深入学习,推荐你选择CentOS或者Debian Linux等。
这个我的体会很深,学的再多,都是会忘记的,见过很多初学者,他们告诉我说,学过了,过几天就忘记了,也想实践,当时也掌握的很熟练,但是因为工作环境暂时用不到,所以很快又忘了,难道要无数遍的学吗。
对此,我想说的是,每个人都是这样的,谁都会忘记,但是有个方法可以让你忘记后迅速找回已经学过的知识,那就是做笔记,写学习实录,笔记要做的非常详细,甚至可以像流水账一样都行,只要自己能看懂即可,特别是学习过程中,自己遇到的坑,一定要写的足够详细,这样的话,在需要重新熟悉这部分知识的时候,可以迅速唤醒之前的记忆。
如果有条件,也可以把自己的学习过程通过视频的方式录制下来,这样更有助于以后的备忘查询,效果更好。
学习一项技能的过程,核心是自己,不能依赖任何人,不管你是报了培训班,还是找了私教,他们只是你学习过程中的引路人,他们的作用是帮助你把握学习方式,帮助你少走弯路,同时把他们多年的经验分享给你,除此之外,其它都要靠你自己,所以,在这个过程中,要养成独立学习能力。
什么叫独立学习,那就是出现问题,先自己解决,能解决,那就是进步,不能解决了,再去问老师,那怎么独立解决呢,这需要依赖一些网络工具,最典型的就是搜索引擎,出现问题了,最简单的就是把出现的错误复制到搜索引擎,99%都能找到答案,这就是独立学习能力。此外,还可以通过使用Linux自身提供了强大的联机帮助文档,QQ、微信技术交流群等多种形式,都可以去提问并解决问题。
独立思考并解决问题,不但锻炼了自己独立解决问题的能力,在技术上也能得到快速提高。如果通过向人询问得到答案后,要思考为何这么做,然后做笔记记录解决过程。最忌讳的方式是只要遇到问题,就去问人,虽然这样可能会很快解决问题,但是长久下去遇到问题就会依赖别人,技术上也不会进步。
做一名合格的运维人,要学的技术是很多的,具体有哪些,下面是我做的一个简单总结:
(1)、Linux多种安装方式
(2)、硬盘RAID技术与RAID选型
(3)、Linux初始化init系统
(4)、系统服务管理工具systemd和sysvinit
(5)、Linux下的shell编程入门
(6)Linux下各种命令使用(常见80多个)
(7)、源码、yum、rpm方式安装软件
(8)、Linux用户权限管理
(9)Linux磁盘与存储管理(LVM、fdisk)
(10)、Linux内存与内存机制(swap、free)
(11)、Linux文件系统有文件系统选型(ext3/ext4/xfs/nfs)
(12)、Linux进程管理与监控crond
(1)、基于Apache的LAMP架构
(2)、基于nginx的LNMP架构
(3)、apache下https、反向代理、Prefork MPM、 Worker MPM
(4)、apache+jk+tomcat web架构
(5)nginx的反向代理、负载均衡、https、PHP-FPM应用
(1)、MySQL常用操作与基础调优策略
(2)、Xtrabackup工具的使用
(3)、MySQL Replication架构
(4)、MySQL高可用架构MHA
(5)、MySQL读写分离中间件proxysql
(6)、redis内存数据库以及主从架构
(1)、系统调优评估方法
(2)、CPU、内存、磁盘、网络性能评估工具与方法
(3)、线上Linux服务器基础优化技能
(4)、Linux软件防火墙iptables以及rsync数据备份
(1)、ansible的使用
(2)、ansible使用Playbooks管理复杂任务
(3)、puppet自动化工具的使用
(4)、saltstack自动化工具的使用
(1)、zabbix运维监控平台
(2)、Ganglia分布式数据收集展示平台
(3)、nagios自动化告警平台
(4)、centreon一体化智能监控平台
(1)、Keepalived高可用集群
(2)、LVS负载均衡集群
(3)、HAProxy负载均衡集群
(4)、Keepalived整合lvs与HAProxy
(1)、KVM虚拟化与虚拟机管理工具
(2)、ELK+Filebeat+Kafka+ZooKeeper日志分析平台架构
(3)、hadoop生态圈以及分布式集群
(4)、hbase、hive、pig等分布式计算工具
(5)、分布式计算MapReduce与yarn工
(6)、spark分布式计算框架
(1)、docker基础与镜像、容器、仓库
(2)、 Dockerfile 定制镜像
(3)、Docker编排工具Compose使用
(4)、自动化容器操作平台Kubernetes(k8s)
看起来还是很多的,不过掌握基础后,从第五到第八每个方向都能独当一面。而薪资水平也是从低到高依次递增。
看下面这张图,也许更能说明问题!
要成为一名合格的,拿高薪的运维工程师,不但需要上面我们说的那些技术能力,还需要更多的个人素质能力,总结如下:
1:沟通能力、团队协作
2:主动性、执行力、精力旺盛、抗压能力强
3:工作中胆大心细、不走寻常路
4:逻辑思维能力要强,为人谦和
这些能力看似可有可无,但是却是面试官最看重的点,它甚至比技术能力得分还高,因为在企业里面,更多的是团队和协作,因此,对于运维人员,我更注重的不是技术本身,而是沟通能力,做事方式,当然技术也是衡量运维人员的标准,但是我认为仅占30%。现在做任何事情,沟通能力都显得非常重要,在一个运维团队中,及时、准确的沟通,不但可以节省很多时间和成本, 而且也是留着人才的关键。
所以,让自己开朗,外向一些吧,多交流,多沟通,更能给你的职业加分,这非常重要,而很多人看不到这点。
运维,很多人都觉得是IT行业里最底层的职位,如果你也觉得是这样,那你完全错了,很多人跟开发比,觉得运维这个职位很low,干的都是一些打杂的活,还经常背锅,这其实是行业发展过程中的一个必经阶段,随着云计算、大数据等的迅猛发展,运维这个岗位会越来越紧缺,因为未来是综合技能职业的天下,而运维就是一个要求综合技能的岗位。这很容易想明白!
我见过很多所谓牛逼的开发人员,简历里说,做个各种大项目(超千万,过亿都有),开发过各种高并发的系统,可交流下来,发现这些人确实有超越常人的地方,但仅仅是在开发的某些方面,而论综合技能,真的不敢恭维,起码的网络知识,系统安装等等都不会。这在一个分工细化的大公司里面,优势才能体现出来,而如果在一个小公司里面,完全没有优势可言了。
所以,区分运维和开发的并不是工作方式,而是大家的职责不同,仅此而已。要更有竞争力,未来是综合技能的天下。
随着运维这个职业的发展,企业对运维技能的需求也在发生变化,例如现在很多运维岗位,都要求运维具备开发能力,这就是所谓的DevOps,DevOps是 “开发”和“运维”的缩写,但它不仅仅是运维开发,它是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运维和质量保障(QA)部门之间的沟通、协作与整合。
从这个方向看,未来的运维是协作运维,公共开发的趋势。所以,运维人员要应对这个趋势,还需要精通一门开发语言,其实任何语言都行,那要推荐的话,当然是目前最流行,最有钱途的go、python、php等,不要求都掌握,挑选一个深入掌握它即可。
好了,运维相关的话题就说这么多,你是否也有小张类似的困惑,不要纠结了,借用《解忧杂货店》里面的一句话:
“其实所有纠结做选择的人心里早就有了答案,咨询只是想得到内心所倾向的选择。最终的所谓命运 还是自己一步步走出来的。”
是的,把握住方向,剩下的就靠自己一步步去努力,去坚持了!
如果你已经有了决定,那就马上行动起来吧,8位资深运维专家,还原一线生产环境中的运维难点,打造组合专栏《自动化运维必备实战秘籍》
一定适合你快速入门!
适合人群:
1.Linux运维初学者
2.效率低的运维老鸟
3.容器技术学习人员
4.大数据分析感兴趣
5.Linux运维从业人员
6.系统架构的学习探索
学习收获:
1.日常运维经验思路
2.构建web应用程序
3.运维监控知识体系
4.shell脚本灵活应用
5.主流容器化部署技术
6.高并发爬虫设计实现
7.python编程轻松上手