做运维需要考虑的事
简介
代码语言:javascript复制/*
运维是在于一个量
最少的人,最多的事 并且保证业务
比如说google的一个数据中心,只有几个人在维护
运维不能直接的创造价值,而是可以变相的节约成本
你节约的成本x你的意识x你的觉悟=你的价值
———-来自 98素辞
*/
服务来说
1.对服务版本选择,要和开发沟通,如果开发用的php语言,那就问他写的代码是哪个版本的,不同版本可能不兼容一些语法,会导致出错 要选择稳定版,太新的可能会导致一些bug,从而崩溃或服务出错。选择新版本唯一的目的应该是需要新的功能,否则老的版本最稳定 服务部署后要进行简单测试,让服务可以照常运行才可以,不能装完就算了。对于java这种替换版本,1.7升级到1.8可能导致某些依赖1.7的JDK,这都要去考虑清楚。 当服务运行后要注意他的启动用户是什么,可能用户不对造成无法读取文件。比如nginx启动时www用户,他就没法读取/data里找html发送给用户。 数据库如果要和库,要考虑是否有表名字重复。如果公用一个redis进行缓存,要考虑写入的数据是否冲突。 2.根据业务进行结构分析,是使用nginx还是apache,选择前填写调研文档,进行测试,写测试文档和部署,使用文档 3.根据业务量进行机器的数量选择还有配置选择,最好将配置做成套餐,比如将tomcat机器,每个都是8核16G内存,硬盘100基础,这个作为一个套餐来创建虚拟机或者云机器选购。 4.根据需求进行主从,或者负载均衡选择,可能还要选择备份容灾,cdn等等 5.对服务的日志进行分析,比如ip来源地址,pv,uv 6.对服务和系统进行优化,优化前和优化后差别很大,性能可以差一倍。 7.安全防护,不只有ddos,还有登陆问题。多关注软件可能暴露的一些安全问题,或者linux本身的系统问题 说不定谋个nginx版本突然说有问题,你还没关注到,那就很容易被黑掉 8.网络问题,很多时候都是这样,某个地方访问慢,但其他人访问不慢,很头疼,需要抓包再逐步排查 9.性能问题,可能最初还好。随着压力来临,数据库可能有慢查询,需要进行排查和解决。网站可能有部分用户访问不了,或者访问缓慢,都需要去排查 这块是最难得,需要各方面知识,如果遇到突然访问不了,那就回想之前做了哪些操作,再针对性排查 10.关注版本问题,像nginx1.9将支持tcp的4层代理,而不仅仅是之前的7层了,这样性能会提高很多,对公司业务很有帮助 11.优化,不仅是系统的内核方面优化,还有服务的配置文件优化,这点需要长久深刻的理解才行。默认的都是最标准的,但是可以根据情况舍弃一部分的东西,来加强另一部分,达到适合业务。 比如nginx做反向代理,可以优化内核参数,快速释放链接,超时时间配置短一些,这样可以处理更高的并发。但是如果提供php等服务的话,就要配置长一些,来达到稳定的效果 12.要考虑整体结构情况。比如nginx做负载均衡,可能抗压能力很出色,但是后面的数据库只有3台,导致数据库带宽被打满,也会造成访问不了的问题
发布来说
1.如何发布,是手动还是自动,如果机器多了,需要jenkins之类进行自动发布 2.容灾问题,代码如果发布失败,需要迅速回滚,不影响问题,发布的时候也不要所有节点一起发布,挨个节点发布 3.还要对老的代码进行备份,防止未来可能突然发生的问题,需要回滚
整体来说
1.运维并不是成天都是忙着去排错,大部分时间都是空闲的,这时候就需要自制力去学习东西了 2.运维的价值=你节约的成本 x 你的意识 x 你的觉悟 运维并不能直接搞出价值,但是可以优化,调整结构来省钱,不出事就是最好的价值。同时分析日志能创造隐形的价值给公司。 3.优化现有的方式,公司在成长中,肯定会有很多隐患,比如最初是用一个脚本来批量操作10-20台机器,后面公司扩充有100台机器,就要用ansible来批量操作了。这些都需要自动化,后面还要自动发布,压力大来自动扩容,报警cpu不够自动调节缓解当前机器压力等待 4.服务也不是照着百度吧配置文件放上即可,像负载均衡,可能调度算法填写的不对,造成一台压力大,一台压力小。还可能服务占用一个cpu压力大,其他都闲着,这些都是不行的。 5.文档要多写,比如资产文档,那些机器的配置,还有密码表,服务连接文档,部署文档,维护文档都要写,文档的作用一个是自己用,另一个是等你离职或者新员工加入,他们可以快速来维护。 6.部署一个新服务,必须要测试过后才上线,而测试不是安装即可,需要找数据进行深度测试,模拟线上环境。 7.谨慎甚微,任何操作琢磨几遍再打,不要随意就打了,比如重启线上nignx用reload,否则当前业务中断了。 8.监控很重要,可以查看流量,某些服务使用内存是否超标,没有监控出了事都不知道,监控不仅要监控服务的端口防止挂掉,还要他深度的使用,比如mysql的慢查询,命中率,主从状态等等。 9.体系,运维最好制定一些发布流程,虚拟机申请流程,巡检流程等等。巡检也是很重要的,云服务器也要定时看看是否磁盘满了,是否要续费等等。否则哪天出问题,问题就大了。 10.对业务进行机器规划,当压力大时扩容,不大时逐步关闭 11.测试也很重要,一个服务从多方面进行测试,比如nginx从静态页面,动态页面,提交数据,模拟多个在线用户登录访问等等。 12.修改文件前必须备份,方便回滚,操作日志最好有审计 (1)提前积累技术,可能明白了谋个东西,优化后让服务器性能提高2个点 (2)提前预防问题,防范于未然 (3)想多些可能性,当前结构可能稳当,但必定不是最好的
运维组织结构
简介
运维的工作方向比较多,随着业务规模的不断发展,越成熟的互联网公司,运维岗位会划分得越细。当前很多大型的互联网公司,在初创时期只有系统运维,随着业务规模、服务质量的要求,也逐渐进行了工作细分。一般情况下运维团队的工作分类(见图1-1)和职责如下。
系统运维
系统运维负责IDC、网络、CDN和基础服务的建设(LVS、NTP、DNS);负责资产管理,服务器选型、交付和维修。详细的工作职责如下: (1)IDC数据中心建设 收集业务需求,预估未来数据中心的发展规模,从骨干网的分布,数据中心建筑,以及Internet接入、网络攻击防御能力、扩容能力、空间预留、外接专线能力、现场服务支撑能力等多个方面评估选型数据中心。负责数据中心的建设、现场维护工作。 (2)网络建设 设计及规划生产网络架构,这里面包括:数据中心网络架构、传输网架构、CDN网络架构等,以及网络调优等日常运维工作。 (3)LVS负载均衡和SNAT建设 LVS是整个站点架构中的流量入口,根据网络规模和业务需求,构建负载均衡集群;完成网络与业务服务器的衔接,提供高性能、高可用的负载调度能力,以及统一的网络层防攻击能力;SNAT集中提供数据中心的公网访问服务,通过集群化部署,保证出网服务的高性能与高可用。 (4)CDN规划和建设 CDN工作划分为第三方和自建两部分。建立第三方CDN的选型和调度控制;根据业务发展趋势,规划CDN新节点建设布局;完善CDN业务及监控,保障CDN系统稳定、高效运行;分析业务加速频道的文件特性和数量,制定最优的加速策略和资源匹配;负责用户劫持等CDN日常故障排查工作。 (5)服务器选型、交付和维护 负责服务器的测试选型,包含服务器整机、部件的基础性测试和业务测试,降低整机功率,提升机架部署密度等。结合对公司业务的了解,推广新硬件、新方案减少业务的服务器投入规模。负责服务器硬件故障的诊断定位,服务器硬件监控、健康检查工具的开发和维护。 (6)OS、内核选型和OS相关维护工作 负责整体平台的OS选型、定制和内核优化,以及Patch的更新和内部版本发布;建立基础的YUM包管理和分发中心,提供常用包版本库;跟进日常各类OS相关故障;针对不同的业务类型,提供定向的优化支持。 (7)资产管理 记录和管理运维相关的基础物理信息,包括数据中心、网络、机柜、服务器、ACL、IP等各种资源信息,制定有效的流程,确保信息的准确性;开放API接口,为自动化运维提供数据支持。 (8)基础服务建设 业务对DNS、NTP、SYSLOG等基础服务的依赖非常高,需要设计高可用架构避免单点,提供稳定的基础服务。
应用运维
应用运维负责线上服务的变更、服务状态监控、服务容灾和数据备份等工作,对服务进行例行排查、故障应急处理等工作。详细的工作职责如下所述。 (1)设计评审 在产品研发阶段,参与产品设计评审,从运维的角度提出评审意见,使服务满足运维准入的高可用要求。 (2)服务管理 负责制定线上业务升级变更及回滚方案,并进行变更实施。掌握所负责的服务及服务间关联关系、服务依赖的各种资源。能够发现服务上的缺陷,及时通报并推进解决。制定服务稳定性指标及准入标准,同时不断完善和优化程序和系统的功能、效率,提高运行质量。完善监控内容,提高报警准确度。在线上服务出现故障时,第一时间响应,对已知线上故障能按流程进行通报并按预案执行,未知故障组织相关人员联合排障。 (3)资源管理 对各服务的服务器资产进行管理,梳理服务器资源状况、数据中心分布情况、网络专线及带宽情况,能够合理使用服务器资源,根据不同服务的需求,分配不同配置的服务器,确保服务器资源的充分利用。 (4)例行检查 制定服务例行排查点,并不断完善。根据制定的服务排查点,对服务进行定期检查。对排查过程中发现的问题,及时进行追查,排除可能存在的隐患。 (5)预案管理 确定服务所需的各项监控、系统指标的阈值或临界点,以及出现该情况后的处理预案。建立和更新服务预案文档,并根据日常故障情况不断补充完善,提高预案完备性。能够制定和评审各类预案,周期性进行预案演练,确保预案的可执行性。 (6)数据备份 制定数据备份策略,按规范进行数据备份工作。保证数据备份的可用性和完整性,定期开展数据恢复性测试。
数据库运维
数据库运维负责数据存储方案设计、数据库表设计、索引设计和SQL优化,对数据库进行变更、监控、备份、高可用设计等工作。详细的工作职责如下所述。 (1)设计评审 在产品研发初始阶段,参与设计方案评审,从DBA的角度提出数据存储方案、库表设计方案、SQL开发标准、索引设计方案等,使服务满足数据库使用的高可用、高性能要求。 (2)容量规划 掌握所负责服务的数据库的容量上限,清楚地了解当前瓶颈点,当服务还未到达容量上限时,及时进行优化、分拆或者扩容。 (3)数据备份与灾备 制定数据备份与灾备策略,定期完成数据恢复性测试,保证数据备份的可用性和完整性。 (4)数据库监控 完善数据库存活和性能监控,及时了解数据库运行状态及故障。 (5)数据库安全 建设数据库账号体系,严格控制账号权限与开放范围,降低误操作和数据泄露的风险;加强离线备份数据的管理,降低数据泄露的风险。 (6)数据库高可用和性能优化 对数据库单点风险和故障设计相应的切换方案,降低故障对数据库服务的影响;不断对数据库整体性能进行优化,包括新存储方案引进、硬件优化、文件系统优化、数据库优化、SQL优化等,在保障成本不增加或者少量增加的情况下,数据库可以支撑更多的业务请求。 (7)自动化系统建设 设计开发数据库自动化运维系统,包括数据库部署、自动扩容、分库分表、权限管理、备份恢复、SQL审核和上线、故障切换等功能。
运维研发
运维研发负责通用的运维平台设计和研发工作,如:资产管理、监控系统、运维平台、数据权限管理系统等。提供各种API供运维或研发人员使用,封装更高层的自动化运维系统。详细的工作职责如下所述。 (1)运维平台 记录和管理服务及其关联关系,协助运维人员自动化、流程化地完成日常运维操作,包括机器管理、重启、改名、初始化、域名管理、流量切换和故障预案实施等。 (2)监控系统 负责监控系统的设计、开发工作,完成公司服务器和各种网络设备的资源指标、线上业务运行指标的收集、告警、存储、分析、展示和数据挖掘等工作,持续提高告警的及时性、准确性和智能性,促进公司服务器资源的合理化调配。 (3)自动化部署系统 参与部署自动化系统的开发,负责自动化部署系统所需要的基础数据和信息,负责权限管理、API开发、Web端开发。结合云计算,研发和提供PaaS相关高可用平台,进一步提高服务的部署速度和用户体验,提升资源利用率。
运维安全
运维安全负责网络、系统和业务等方面的安全加固工作,进行常规的安全扫描、渗透测试,进行安全工具和系统研发以及安全事件应急处理。详细的工作职责如下所述。 (1)安全制度建立 根据公司内部的具体流程,制定切实可行,且行之有效的安全制度。 (2)安全培训 定期向员工提供具有针对性的安全培训和考核,在全公司内建立安全负责人制度。 (3)风险评估 通过黑白盒测试和检查机制,定期产生对物理网络、服务器、业务应用、用户数据等方面的总体风险评估结果。 (4)安全建设 根据风险评估结果,加固最薄弱的环节,包括设计安全防线、部署安全设备、及时更新补丁、防御病毒、源代码自动扫描和业务产品安全咨询等。为了降低可能泄露数据的价值,通过加密、匿名化、混淆数据,乃至定期删除等技术手段和流程来达到目的。 (5)安全合规 为了满足例如支付牌照等合规性要求,安全团队承担着安全合规的对外接口人工作。 (6)应急响应 建立安全报警系统,通过安全中心收集第三方发现的安全问题,组织各部门对已经发现的安全问题进行修复、影响面评估、事后安全原因追查。
从月薪5K到50k
简介
这是一个热门运维问题,也是很多刚进入运维工作的同学面临的心境。 确实,【 运维 】可能是分水岭最明显的职位之一:有的人毕业6年,月薪从3K涨到到50K;有的人工作4年,依然做着重启服务器、检查机房的机械工作,这都是知乎上能看到的真实事例。 今天,我们就通过拉勾上,薪资 5K 到 100K 的运维招聘要求,来看看运维从搬砖到大神,都要学习些什么。
阶段一(3k-5k)
“昨天又搬了65台服务器……” ——本阶段工作描述
一张图概括:
招聘岗位和要求
代码语言:javascript复制/*
岗位一:
岗位职责:
公司电脑多媒体以及网络日常维护,以及桌面运维支持
任职资格:
1、能熟练更换PC硬件
2、熟悉办公常用软件以及邮箱
3、对网络运维方面有一定了解,并能够熟练配置交换机防火墙以及路由器。
(4K—6K 百度文学)
岗位二:
岗位职责:
1、负责公司内、外网络平台的搭建、实施及网络(含无线网络技术、设备)的具体维护工作;
2、针对公司开展的网络技术方案的定型与实施工作提出建议;
3、网络及安全技术实施方案中安装、调试、维护工作;
4、负责公司办公网络及IDC网络日常维护工作;
5、负责集团网络设备及广域线路的统计工作。
任职资格:
1、2018届毕业生,专科及以上学历、计算机相关专业;
2、诚实守信,性格开朗,无不良历史记录;
3、善于学习,善于沟通,文档功底好,勇于面对挑战,敢于承担工作压力;
4、学生干部或有相关网络工程师认证(Cisco认证、Juniper认证、Huawei认证等)者优先考虑;
5、熟悉Linux操作系统和虚拟化技术的优先。
(JD)
*/
技术关键字
Linux、服务器、环境部署 运维工程师 —— “Operations Engineer”,字面意思可理解为管理系统、服务器的工程师。初级运维最常见的工作就是熟悉和维护服务器——所以检查机房、搬服务器是90%的运维都会经历的。 进阶一点的,就要开始学习搭建服务器、搭建网络、配置环境等工作了。绝大多数服务器都使用Linux系统,所以熟练使用Linux是硬性要求;服务器需要配置网络,所以对路由协议、网络协议等网络原理也要掌握;产品开发完成后,还需要运维部署环境,安装相应的软件;安装完成后就可以上线吗?不,有时你还需要部署一套测试环境…… 在这个阶段中,运维的大部分工作都是简单和机械性的,对技术水平的要求很少,以至于薪资也较低。所以刚毕业的程序员往往有一个错觉:运维岗不如开发岗。他们会感到「迷茫」,甚至「焦虑」 “感觉自己就是个网管……” “每天的工作就是维护、重启服务器,看不到希望……” 但其实,运维是一场真正的马拉松。同样是第一个阶段,你只跑了1%,开发的同学已经跑了20%,你的提升空间远远超过他们。
阶段二(6-15k)
从删库到跑路
一张图概括
or
招聘岗位和要求
代码语言:javascript复制/*
【岗位职责】:
1,负责服务器的配置、维护、监控、调优,故障排除等;
2,运维自动化及运维脚本开发;
3,大用户量下高性能服务器系统部署方案的制定及实施与监控;
4,及时响应并处理线上故障。
【任职要求】:
1,计算机相关专业大学本科以上学历,具有扎实的计算机基础理论知识;
2,熟悉mysql、mongodb、redis、mq、elk、nginx、tomcat的安装部署及优化;
3,具有良好的故障排查能力,良好的逻辑分析能力及技术敏感度;
4,熟悉掌握使用shell、python脚本语言,能熟练进行脚本/工具开发,对自动化运维有较深入的理解或者经验者优先;
5,高度的责任感,较强的故障分析及排查能力,善于在工作中学习,能承受工作压力。
(10-20K —— 乐视)
*/
技术关键字
故障排查、优化、Shell、Python、监控 随着自身技术的积累,运维的薪资在突飞猛涨。这时,你已经可以在公司或某项目里独当一面(du zi bei guo)。要达到这个阶段的要求,你需要掌握这些技能: 1.排错和调优 上线没多久,服务就502了,还不被老板骂死。尽管你有一肚子的委屈,我只是个运维,代码不是我写的,为什么要我来背这锅?!委屈归委屈,服务访问不了了,就是运维的事。尽快定位问题,解决问题才是王道。怎么来定位问题呢?最简单直接的办法就是看日志,看系统日志,看软件相关的日志,结合故障现象和经验,快速的进行定位和恢复。然后就是总结经验,吸取教训,写事故报告。OK,现在你知道,需要对系统环境需要进行一定的调优操作,不再做背锅侠。 相关技术: top, vmstat, iftop, awk, sed, sar, iostat, strace, … 2.备份 之前的Gitlab删库事件的教训犹在眼前,丢失了几小时的数据,虽然大部分的备份策略都失效了,但还是挽救了几小时前的一个备份,才没有造成更大的数据丢失和公司损失。我们需要对设备进行备份冗余,需要对数据库进行备份及离线备份,需要对网站静态进行备份冗余,需要对机房进行备用,能做到双活,那是更好的啦。 相关技术: rsync, crontab, lvm快照, mysqldump, extrabackup, 完全备份, 差异备份, 增量备份, 离线异地备份, … 3.高可用集群 没有永垂不朽,我们不能保证硬件24小时在线,但需要保障服务24小时在线。 出现故障后,如果做好高可用和冗余,故障自动切换,移除故障节点,那样也就保障了服务的实时在线。在老板和用户不知情的情况下,悄么的把故障处理好的,KPI算是保住了,奖金也许就会有的吧。 相关技术: F5, Nginx, LVS, HA-proxy, MHA, Zookeeper, 各种其他分布式集群方案, … 4.监控和警报 时刻担心网站挂掉,一年365天、每周7天、每天24小时,时刻保持精神高度紧张,就算你是神仙都会撑不住的。我们需要一个机器来监督其他的机器工作,我们需要解放我们自己。当有故障发生的时候,通过短信、微信、钉钉、邮件等等通知对应的运维工程师来处理,甚至是自动切换或摘除故障节点,然后我们离线对故障节点进行问题排查。 相关技术:Zabbix, Nagios, Cacti, Prometheus, open-falcon, Ganglia, sar, …
阶段三(20-45k)
Linux运维真的为所欲为
一张图概括
招聘岗位和要求
代码语言:javascript复制/*
职位一
【岗位职责】:
1、制定和优化运维解决方案,包括但不限于柔性容灾、智能调度、弹性扩容与防攻击;
2、推动及开发高效的自动化运维、管理工具,提升运维工作效率;
3、探索、研究新的运维技术方向。
【岗位要求】:
1、本科及以上学历,3年以上的Linux系统使用和管理经验;
2、熟悉 Linux 操作系统原理、TCP/IP 以及常用RPC协议;
3、熟悉脚本语言Bash/Python等脚本语言的一种并有相关开发经验;
4、熟悉Docker、Kubernetes等开源软件;
5、熟悉常见应用配置及优化,如Nginx/Haproxy/MySQL/DNS/Redis/MongoDB等;
6、熟悉常用的监控系统,如 Zabbix、Nagios 和 Ganglia 等;
7、熟悉systemtap、perf、oprofile 等分析调试工具;很强的Troubleshooting能力、且能够推动业务问题改善和解决;
8、具有良好的的沟通、执行能力和强烈的责任心;
9、耐心、细致、学习能力强,较强的工作计划;
10、在开源社群活跃并有积极贡献者优先,
( 22-40K —— 陌陌 )
职位二
【 工作职责 】
负责京东内部信息安全平台的基础运维工作,处理值班问题,确保系统服务稳定性;
负责运维自动化/标准化方案设计,自动化工具及平台研发,提升运维效率;
负责生产、测试、灰度多套环境的部署和维护,配合研发、测试团队进行应用部署;
制定信息安全集群监控和报警方案,处理报警问题;
定位与分析运维问题,给出解决方案。
【 职位要求 】
计算机相关专业,本科及以上学历,至少2年以上的大规模系统运维经验,2年以上运维开发经验,有deveops开发经验或有中大型互联网公司运维自动化经验者优先;
具备openstack或docker集群运维经验;
掌握shell/python/perl/php其中一种脚本语言,有Python实际项目经验,熟练掌握Django、Tornado等任一Web开发框架者优先;
掌握互联网常用的中间件维护、管理,例如redis、mongodb、kafka、memcached、dubbo等;
掌握tomcat、nginx等常见应用的搭建、配置、优化;
掌握zabbix、nagios、elk等系统的搭建、配置、优化;
掌握一种大规模自动化运维工具(saltstack、ansible、puppet),有二次开发经验优先;
熟悉linux/uinx,windows操作系统基础原理及常用操作;
熟悉常见运维配置及优化,如Svn/git/Ansible/Nginx/Tomcat/salt等;
熟悉TCP/IP、HTTP等协议,有良好的网络、数据传输、安全、计算机体系结构方面的知识;
认同DevOps文化,重视自动化方式处理各种问题;
具备良好的项目规划、推进能力;
具有良好的沟通协调能力、较强的团队合作精神、优秀的执行能力;
有很强的分析和解决问题的能力。
( 30 - 50K 京东 )
*/
技术关键词
自动化、DevOps、云服务、Docker、kubernetes、安全…… deveops、openstack、docker、集群运维、shell/python/perl/php、Django、Tornado、redis、mongodb、kafka、memcached、dubbo、omcat、nginx、zabbix、nagios、elk、saltstack、ansible、puppet、linux/uinx系统基础原理、Svn/git/Ansible/Nginx/Tomcat/salt、TCP/IP、HTTP…… 看到这些技术名词,相信你一定会明白,高端运维为何配得上这么高的薪资。 虽然以上这些技术并不是全部需要掌握的,同一类型掌握一样即可,但仍可以看出,这个阶段的运维已经是集大成者 —— 在中型公司可以胜任CTO的位置,在大型公司可以担任项目的技术负责人。想达到这个阶段,你需要掌握这些技能: 1.安全和审计 不安全的网络环境和服务器配置,无异于在网络世界裸奔,任何人都可以窥探你的隐私。你的应用是否做了SQL防注入?你的防火墙是否开启?是否还在用root 密码的方式登录服务器?网站开启了https么?是否对系统操作进行审计? 相关技术: iptables, firewalld, waf, auditd, 各服务的正确配置, … 2.DevOps 与自动化 偷懒是社会进步的第一动力。聪明的我们怎么会让自己一直在重复枯燥的事情上浪费时间,装系统、部署环境、发版本、批量操作,把这一切交给程序去实现吧,我们需要的是享受生活。 相关技术: shell, python, go, rundeck, ansible, saltstack, puppet, chef, cobbler, fabric, … 3.虚拟化和云计算 云计算革命的发起人是卖书的亚马逊,这家伙希望卖一切可以卖的东西,包括自己闲置的服务器资源。现在国内的阿里云和腾讯云也发展得如日中天,他们几乎提供了运维所需要的一切,甚至可以让一个公司不再需要运维的岗位。你需要服务器,只需要几秒钟,就可以创建一台。你需要数据库集群,只需要鼠标点击几下,就可以开通。 相关技术:docker, Moby, kubernetes, Xen, CoreOS, Hyper-V, KVM, …
阶段四(50k-???)
一张图概括本阶段:
招聘岗位和要求
代码语言:javascript复制/*
80K—100K
【岗位职责】
1.作为公有云SRE软件技术专家,负责自动化运维平台的系统分析和架构设计,指导研发团队实现设计,规划未来平台技术架构方向;
2.负责全局性和前瞻性的架构设计,以及关键技术细节的实现,解决业务发展遇到的架构问题,持续提升系统平台稳定性;
3.负责持续关注业务技术发展和最佳实践,并结合华为云运维产品业务特点推进新技术及实现方案的落地;
【岗位要求】
1.本科及以上学历,6年以上大型业务应用系统的架构设计和落地的实际能力,熟悉分布式、缓存、消息等机制,能对分布式常用技术进行合理应用,解决实际架构问题;
2.海量数据处理和架构能力及经验,熟悉SOA并具有系统的架构设计经验;
3.精通Java/Python/Go/C/C 其中至少1种编程语言;
4.精通操作系统,数据库,IO、多线程编程原理、集合等基础框架,对JVM原理有深入的了解;
5.精通分布式事务处理框架原理和实现,精通多线程及高性能的应用的设计,编码及性能调优经验;
*/
技术关键词
???
代码语言:javascript复制这个级别的大佬要么是有极强的管理能力,要么是对某技术有底层的深入研究,已无法归纳具体的技术要求,您: 爱学什么学什么吧……
/*
总之……
运维是个需要不断学习的职位
100K 还远远不是天花板
(银行、BAT、华为了解一下……)
如果你确定了要努力的方向,那就学起来吧!
*/
运维学习地图
行囊
新手在学习的时候,通常遇到的问题是没有一整套学习计划,不知道具体学哪些才会对工作有帮助,遇到问题也没人解答,而这2点也是培训机构的卖点。 这种情况,最好的方法是加个技术群,看看谁在里面老回答问题,可以加好友具体问问,然后请他喝杯咖啡。 资料方面不要看很多,在豆瓣中搜索相关书籍,评分高都看一本就行了,毕竟技术都是积累的,没有一下子就学圆满的。 有下面的知识,运维才能迈出第一步,不然就是比较残缺的,无法形成大局观。例如某些用户访问网站有问题,报错505,你只会linux方面的,对网络不清楚,那如果问题出在运营商身上,或者服务器之间的网络通信上,就会抓瞎。
- 计算机基础知识(了解计算机哪几个部分组成,如何装系统,上下架等等)
- 网络基础知识(不用太深入,知道协议有哪些,什么意思,路由器交换机工作原理)
- 安全基础知识(知道什么叫ddos,知道基本防御方法)
- 测试基础知识(知道性能测试和web测试用什么工具,不然你优化完怎么证明它性能提高了?)
- 开发基础知识(基本的构建,打包知道什么意思,异步非阻塞之类的)
- linux基础知识(这部分就是对linux的了解了,linux启动顺序,命令等等)
不过大公司会专门做某一部分,例如应用运维不需要关注测试和安全等方面,但建议都学学,触类旁通有好处。 有这些基础,进到公司就可以去完成基础的建设工作了。比如会安排你搭建服务,整理资产报表,清理一些日志,这些基本工作可以帮助你了解公司当前有哪些服务,各种服务之间是如何运作的,之后再慢慢参与到业务中,薪资一线城市可以达到6-10k左右。
大路
当进入公司一年以上后,就是冲刺阶段,这个阶段会学习到大量知识,因为刚工作,会明白很多书本上和模拟遇不到的东西,每天都会有大量进步。 会知道一个项目从创建到上线的过程,会发现公司有大量东西需要改善,例如部署服务还在使用手工部署,当一个新项目上线,需要花很多时间部署,你就可以尝试用脚本来自动部署。 公司需要监控,你可以参与选择软件,用zabbix还是cacti,或者不是你选择,你也可以对原有监控项进行优化和完善。这些都是实际应用的,你会明白比原先学习的更多东西。 这块是公司有需求或者用到什么,就去学习什么。不要看什么运维必须掌握的命令和工具大全之类的文章,你都用不到学了有啥用。若你业务都掌握明白了,有空余时间,可以搞搞docker之类热门应用,在此之前,还是把精力花在手头事情上。 同时要建立好的学习方法,不然在熟悉工作后,很容易懈怠,然后在群里划水,学习激情会减退。我的方法是带着目的学习,然后写文章让大家看,获得激励后就有动力继续学习了。 这段冲刺期会维持3-5年,会让人感觉每天都有进步,明白的东西越来越多。算是中级运维了,薪资一线城市可以达到10-20k左右。
岔道
再往前就会分出很多个岔道,开发、安全、DBA、测试、应用运维、基础运维等等。 时间有限,需要从中挑选适合的。只有选定方向才能不迷路,也才能更快的到达目的地。到了这时,就已经迈步向高级运维了。需要选择一个方向去努力,不然运维的东西太杂,很难面面俱到。 如何要做运维开发,就需要去学习python,html,各种框架,也可以学go。 要做DBA,就要专门研究数据库,搞清楚数据库的原理结构,每个详细点。 每一门往后都有大量的东西要学习的,专精才能钱多,并且有成长。 不过当前都在往运维开发方向靠拢,未来的运维都要会一些开发才行。以前是shell,当今是python,需要的技术越来越深入,紧跟潮流才不会被落下。 高级运维,一般5-10年经验,薪资15-35k左右
终点
技术是没有终点的,当然可以有你自己的终点。当工作10年,技术已经很厉害了,就需要靠拢一些别的东西了。 可以根据你掌握的技术,去搞博客,出售一些视频,写付费文章或者付费问答。甚至可以看准机会后,去做产品的。像宝塔面板,cdn,都是一大批运维或者开发看准机会后从技术转型成创业者。 购买基金彩票和增值物品也可以,区块链就算了,不得到国家承认和保护的东西,终究没有大的发展的。有些股票或者基金还是很稳当,很不错的,虽然进步慢,但是很稳定不会亏。 就像《教父》小说中说的,不要把鸡蛋放在一个笼子里,可以爱好技术,但也要搞副业,来应对来为可能造成的冲击。