最近,跟一个同行朋友小张聊天,他非常苦恼,因为工作不如意,他入职这个企业已经3年了,做的是网络工程师,薪资不高,公司事情还一大堆,还经常被迫背锅,眼看一把年纪了,发现不能再这样下去了,想转行做运维。
经过与他的深聊,发现很多朋友都有类似问题。对于这些问题,我也有多年的学习经历和经验,既然要说,那就好好给大家分享下吧,也算总结下自己多年运维行业Linux运维的心理路程。
怎么快速入门Linux?
还是先来说说自己吧!
记得最早接触Linux是在2000年,那个时候,我还在上大学,一个同学从荷兰归来,带回一个Linux的拷贝版,记得版本还是个人版Redhat6.2。曾经为安装这个系统让我们忘记疲劳,挑灯夜战,不亦乐乎。那时Linux的学习资料还很少,能够学习的书籍也不多,网上Linux技术社区也很少,就凭着Redhat6.2自带的几页使用说明开始了学习linux的生涯。
这算是我学linux的开始吧,其实学linux门槛很低,只要你想学,都能学会,不需要太多的基础,有热情,有学习能力,几个月时间都能轻松上手干活。多年的运维工作中,接触过各种各样的同行或同事,有高中毕业的老鸟,也有研究生出来的新秀,都在这个行业做的很优秀。
要说他们的共同点,我觉得是兴趣和坚持。
那么通过什么学习方法,能够快速掌握入门linux呢,我这么多年的工作和学习,总结出了下面一套方法,希望对大家有用。
1、多动手实践,理论结合实际
这个太重要了,我见过太多的人,懒于动手,觉得能看懂,能听懂,就不去实践练习,结果觉得什么都懂的人,在真正干活的时候傻眼了,能说,就是不知道如何下手,就是少实践的真实体现。
很多Linux知识,例如每个命令的参数含义,在书本上说得很清楚,看起来也很容易理解,但是一旦组合起来使用,却并不那么容易,没有多次的动手练习,其中的技巧是无法完全掌握的。
2、一定要习惯命令行方式工作
Linux下90%的操作都是在命令行下完成的,因而,命令是必须要熟练掌握的,可能刚刚从windows下转到Linux的新手会感到困难,但是一定要努力的适应,这确实有点困难,但是一旦迈过了这个难关,接下来学习Linux的路程将一马平川。很多Linux新手最终放弃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、基础运维技能
(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
2、web运维技能
(1)、基于Apache的LAMP架构
(2)、基于nginx的LNMP架构
(3)、apache下https、反向代理、Prefork MPM、 Worker MPM
(4)、apache+jk+tomcat web架构
(5)nginx的反向代理、负载均衡、https、PHP-FPM应用
3、数据库运维技能
(1)、MySQL常用操作与基础调优策略
(2)、Xtrabackup工具的使用
(3)、MySQL Replication架构
(4)、MySQL高可用架构MHA
(5)、MySQL读写分离中间件proxysql
(6)、redis内存数据库以及主从架构
4、性能调优、故障排查技能
(1)、系统调优评估方法
(2)、CPU、内存、磁盘、网络性能评估工具与方法
(3)、线上Linux服务器基础优化技能
(4)、Linux软件防火墙iptables以及rsync数据备份
5、自动化运维技能
(1)、ansible的使用
(2)、ansible使用Playbooks管理复杂任务
(3)、puppet自动化工具的使用
(4)、saltstack自动化工具的使用
6、运维监控技能
(1)、zabbix运维监控平台
(2)、Ganglia分布式数据收集展示平台
(3)、nagios自动化告警平台
(4)、centreon一体化智能监控平台
7、集群架构技能
(1)、Keepalived高可用集群
(2)、LVS负载均衡集群
(3)、HAProxy负载均衡集群
(4)、Keepalived整合lvs与HAProxy
8、虚拟化、大数据技能
(1)、KVM虚拟化与虚拟机管理工具
(2)、ELK+Filebeat+Kafka+ZooKeeper日志分析平台架构
(3)、hadoop生态圈以及分布式集群
(4)、hbase、hive、pig等分布式计算工具
(5)、分布式计算MapReduce与yarn工
(6)、spark分布式计算框架
9、容器、容器编排
(1)、docker基础与镜像、容器、仓库
(2)、 Dockerfile 定制镜像
(3)、Docker编排工具Compose使用
(4)、自动化容器操作平台Kubernetes(k8s)
看起来还是很多的,不过掌握基础后,从第五到第八每个方向都能独当一面。而薪资水平也是从低到高依次递增。
看下面这张图,也许更能说明问题!
如何成为一名合格、高薪的运维工程师?
要成为一名合格的,拿高薪的运维工程师,不但需要上面我们说的那些技术能力,还需要更多的个人素质能力,总结如下:
1:沟通能力、团队协作
2:主动性、执行力、精力旺盛、抗压能力强
3:工作中胆大心细、不走寻常路
4:逻辑思维能力要强,为人谦和
这些能力看似可有可无,但是却是面试官最看重的点,它甚至比技术能力得分还高,因为在企业里面,更多的是团队和协作,因此,对于运维人员,我更注重的不是技术本身,而是沟通能力,做事方式,当然技术也是衡量运维人员的标准,但是我认为仅占30%。现在做任何事情,沟通能力都显得非常重要,在一个运维团队中,及时、准确的沟通,不但可以节省很多时间和成本, 而且也是留着人才的关键。
所以,让自己开朗,外向一些吧,多交流,多沟通,更能给你的职业加分,这非常重要,而很多人看不到这点。
运维与开发,选择运维or运维开发?
运维,很多人都觉得是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编程轻松上手