linux入门先学什么?
由于其高效、易裁剪、应用广泛等优势,Linux已经成为高端服务器的主要操作系统,处于不可替代的地位。Linux可以安装在各种计算机硬件设备上,如手机、平板电脑、路由器、电子游戏控制台、台式电脑、大型机和超级计算机。随着Linux在中国市场的快速发展,中国Linux人才短缺问题逐渐凸显。Linux人才招聘也成为目前最热门的招聘之一。
首先,linux是一个非常非常大的概念。不可能全部吃完。理想情况下,如果你了解linux,你可以做所有的工作。个人比较喜欢说自己想做什么工作,需要学习linux的哪一部分。
根据个人经验,linux有哪些常用领域,对应什么工作?
1)linux应用。严格来说,这部分不是linux,只是运行在linux上的一个应用,比如web、网络、IT等。职业包括系统研发、后台开发、服务器性能优化、运维等。
2)linux定制。这部分涉及linux版本的用户包比较多,内核会涉及一些,主要是各种商业linux定制和服务。比如redhat,很多都是外企,大部分在国内招聘现场支持。
3)linux内核开发。这部分主要是linux内核驱动的开发。几乎全部都是编程工作。主要是芯片公司和使用芯片的产品开发公司。前者像英特尔和marvell,后者像中兴华为。
4)安卓衍生品。因为android包含了tizen使用的linux内核,原因和3一样。所以手机芯片公司和手机开发公司也是linux开发者的雇主之一。例如,高通、TI等。
一、Linux运维的主要工作内容
Linux运维是众多岗位中需求量最大,薪资最高的岗位。本文以Linux运维这个职业为重点,由专门从事Linux运维学习和职业发展的机构马可教育和爱好者共同撰写。
互联网Linux运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司互联网业务能够为用户提供7×24小时的优质服务。运维职责涵盖产品从设计到发布、运维、变更升级、下线的全生命周期。
运维的职责在整个产品生命周期中是重要而广泛的,但运维工程师的职责并不仅限于这部分工作。他们还需要总结工作中遇到的问题,提炼相关的技术方向,开发相关的工具和平台来支持/优化业务发展,提高运维效率。相关的技术工作主要包括:
服务监控技术:包括监控平台的开发和应用,服务监控的准确性、实时性和全面性的保证。
服务故障管理:包括服务故障方案设计、方案自动执行、故障总结并反馈到产品/系统设计层面进行优化,提高产品稳定性。
服务能力管理:测量服务能力,规划服务机房的新建、扩建和迁移。
服务性能优化:全方位,包括网络优化、操作系统优化、应用优化、客户端优化等。,提升服务性能和响应速度,提升用户体验。
全局业务流量调度:接入业务流量,根据容量和业务状态分配各机房的流量。
服务任务调度:服务的各种已调度/未调度任务的调度触发和状态监控。
服务安全:包括服务访问安全、攻击防范、权限控制等。
数据传输技术:包括p2p等各种传输技术的研发和应用,长距离大数据传输等问题的解决。
服务自动发布和部署:部署平台/工具的研发和平台/工具的使用,安全高效地发布服务。
服务集群管理:包括服务器管理和服务的大规模集群管理。
服务成本优化:尽可能减少用于服务运营的资源,降低服务运营成本。
数据库管理(DBA):通过设计、开发和管理高性能数据库集群,数据库服务更加稳定、高效且易于管理。
平台开发:docker等平台的开发和管理,以及服务访问技术。
分布式存储平台的开发优化与访问
以此类推,所有与服务质量、效率、成本、安全相关的工作,所涉及的技术、组件、工具、平台都属于运维的技术范畴。做好每一个技术方向,完成相应组件、工具、平台的研发,可以对运维责任的履行起到积极作用,对业务发展起到关键作用。
二、Linux运维工作分类
运维有很多方向。随着业务规模的不断发展,越是成熟的互联网公司,运维岗位会越细致。现在很多大的互联网公司,初期只有系统运维,随着模式和服务质量的要求,逐渐细分了工作。一般来说,运维团队的工作分类(见图1-1)和职责如下。
图1-1运维团队工作分类
2.1-应用运维(SRE):应用运维负责在线服务变更、服务状态监控、服务容灾和数据备份,并对服务进行日常检查和应急处理。职责如下:设计审核、服务管理、资源管理、日常检查、计划管理、数据备份。
2.2-系统运维(SYS):负责IDC、网络、CDN、基础服务(LVS、NTP、DNS)建设;负责资产管理、服务器选型、交付和维护,职责如下:IDC数据中心建设、网络建设、LVS负载均衡和SNAT建设、CDN规划和建设、服务器选型、交付和维护、内核选型和OS相关维护、资产管理和基础服务建设。
2.3-数据库运维(DBA):数据库运维负责数据存储方案设计、数据库表设计、索引设计和SQL优化,以及数据库的变更、监控、备份和高可用性设计。具体工作内容如下:设计评审、容量规划、数据备份和容灾、数据库监控、数据库安全、数据库高可用和性能优化、自动化系统建设、运维研发、运维平台和监控。
2.4-运维安全(SEC):运维安全负责网络、系统和业务安全加固,定期安全扫描和渗透测试,安全工具和系统研发,安全事件应急处理。工作内容包括:安全体系建立、安全培训、风险评估、安全建设、安全合规和应急响应。
三、Linux运维日常使用软件及技巧
运维工程师使用的运维平台和工具包括:
Web服务器:apache,tomcat,nginx,ligstat,top,tcpdump,last。
运维以技术为基础,通过技术支持产品提供更高质量的服务。运维工作的职责及其在业务中的地位决定了运维工程师需要具备更广泛的知识和深入的技术能力:
扎实的计算机基础知识,包括计算机系统架构、操作系统、网络技术等。
一般应用需要了解操作系统、网络、安全、存储、CDN、DB等。,并知道它们的相关原理;
编程能力,从运维工具的开发到大型运维系统/平台的开发,都需要良好的编程能力;
数据分析能力:能够对系统运行的数据进行整理分析,发现问题,找到解决方案;
丰富的系统知识,包括系统工具、典型系统架构、常用平台选择等。
综合运用工具和平台的能力;
四、Linux操作系统的开发过程和维护工作
前期运维团队主要进行数据中心建设、基础网络建设、服务器采购和服务器安装交付,人员较少。它很少涉及在线服务的变更、监控和管理。这个时候运维团队更多的是在扮演基础设施的角色,提供一个简单可用的网络环境和系统环境。
随着业务产品的逐渐成熟,对服务质量有了更高的要求。此时,运维团队还会承担一些服务器监控工作,负责与业务逻辑无关的4/7层运维工作,如LVS、Nginx等。这时候的服务变更更多的是一个一个的手工操作,或者有一些简单的批量脚本。监控的重点更多的是服务器状态和资源使用情况,对服务应用状态的监控几乎很少,更多的是使用Nagios、Cacti等开源系统进行监控。
由于业务规模和复杂度的不断增加,运维团队将逐渐分为应用运营和系统运维两部分。应用运维开始接手线上业务,逐步开展服务监控、数据备份、服务变更等工作。随着服务的深入,应用运维工程师有能力开始对服务进行一些简单的优化。同时,为了应对每天大量的服务变更,我们也开始编写各种运维工具,对于某些服务可以很容易的批量变更。随着业务规模的增大,由于容量规划不足或抗风险能力较弱导致的基础设施故障越来越多,迫使运维人员将更多的精力投入到多数据中心的容灾和计划管理上。
业务规模达到一定程度后,开源监控系统在性能和功能上已经不能满足业务需求;大量的服务变更和复杂的服务关系,通过手工记录和工具变更,在效率和准确性方面已经不能满足业务需求。在安全方面,也出现了大大小小的各种事件,迫使我们将更多的精力投入到安全防御上。逐渐的,运维团队形成了前面说的五大工作分类,每个分类都需要专门的人才。此时系统运维更侧重于基础设施建设和运维,提供稳定高效的网络环境,将服务器等资源交付给应用运维工程师。应用运维更侧重于服务运行状态和效率。数据库运维属于应用运维的精细化,更侧重于数据库领域的自动化、性能优化和安全防御。运维R&D和运维安全提供各种平台和工具,进一步提高运维工程师的工作效率,让业务服务运行更加稳定、高效、安全。
我们把运维的发展过程分为四个阶段,如图1-2所示。
图1-2运维开发流程
人工管理阶段:业务流量不大,服务器数量相对较少,系统复杂度不高。对于日常的业务管理操作,大家更多的是逐个登录服务器进行手工操作,属于自己的操作方式,缺乏必要的操作标准和流程机制,比如各种业务目录环境。
工具批量运营阶段:随着服务器规模和系统复杂度的增加,人工操作模式已经不能满足快速业务发展的需要。所以运维人员逐渐开始使用批量操作工具,针对不同的操作类型出现了不同的脚本程序。但是,每个团队都有自己的工具,每次操作需求发生变化时都需要进行调整。这主要是因为对环境和操作没有足够的规范,导致可编程处理能力较弱。至此,虽然效率提高了一部分,但很快就遇到了瓶颈。操作的质量并没有得到很大的提升,甚至可能因为批量执行而出现更大规模的问题。我们开始建立大量的流程规范,比如审核机制,先上线观察一个服务器10分钟再继续后面的操作,一次升级完成后观察至少20分钟。这些主要靠人来监督和执行,但在实际过程中,往往执行不到位,降低了工作效率。
平台管理阶段:这个阶段对运维效率和误操作率有更高的要求,所以我们决定开始搭建运维平台,然后通过平台承载标准和流程,解放人力,提高质量。此时抽象出服务变更动作,形成操作方法、服务目录环境、服务运行方式等统一标准。比如程序的起止界面必须包含启动、停止、重载。通过平台限制操作流程,比如上述某服务器在线观察10分钟。平台中设置了强制暂停检查点。首台服务器运行完成后,运维人员需要填写相应的检查点,才能继续后续的部署动作。
系统自调度阶段:服务数量更大,服务关联更复杂,运维平台多种多样,原有的批量操作转化为平台操作的方式已经不适合,服务变更需要更高层次的抽象。将每台服务器抽象成一个容器,由调度系统根据资源使用情况将服务调度部署到合适的服务器上,从而自动完成与周边运维系统的联动,如监控系统、日志系统、备份系统等。通过自调度系统,可以根据业务运行动态扩展容量,自动处理常见的业务故障。运维人员的工作也将推进到产品设计阶段,协助R&D人员改造服务,使之能够接入自助调度系统。
在运维的整个开发过程中,希望所有的工作都实现自动化,以减少人的重复性工作和知识传递的成本,让我们的运维交付更高效、更安全,让我们的产品运行更稳定。对于故障处理,也希望从事后处理转变为早期发现,从人工处理转变为系统自动容灾。
五、2018 Linux运维必须掌握的前沿技能
这是技术界正在发生的深刻变革的冰山一角,那么问题来了?作为传统运维如何转型?
这里有一个小建议:一般来说,你需要学习这四个部分:
自动化操作和维护(Ansible、Puppet、Saltstack等)。)
Devops(Docker,K8s,Jenkins,吉拉等。),
云服务技术(虚拟化、OpenStack、AWS以及阿里云中的各种产品服务架构等。).
大蟒