程序员应知应会之自动化运维那些事儿

程序员应知应会之自动化运维那些事儿,第1张

对于一个开发人员来讲,可能运维并不是自己的职责所在。但是作为一名开发人员,却不能不了解自动化运维的整个流程。因为对于一个信息系统而言,开发和运维本质是一体的,尤其对于一些小公司来讲,可能运维人员本身就是开发人员抽空兼任的。

而自动化运维,本质上是介于开发和运维之间的,是运维和开发的交集,甚至很多时候都要写不少代码。因此,任何一个开发人员,都需要有自动化运维的相关知识。

一个了解好的开发人员,即使自己不做运维相关的工作,也能够知道自己在将项目交付给运维人员的时候,哪些东西是重要的,那些是必须配置的等等。然而在实际工作中,往往开发人员会给运维人员留下一些坑,一些只有他自己知道,而运维人员不知道的东西。导致运维人员自己试了很多次发现不行的时候,找到开发人员,开发人员研究了一下才会告诉他,在某某环境中必须用哪个端口之类的。这样不仅白白浪费了运维人员的时间,也增加了很多沟通的工作量。

反过来也是如此,一些现场的问题如果运维人员不能现场给出问题的定位。对于开发人员来讲是非常难以复现的。比如之前有某家企业,运维人员在客户现场发现问题。费了很大力气从客气的内网里面把日志导出来,发给开发人员,结果开发人员仔细研究了日志之后,发现是网不通的问题。开发人员显然是不可能知道为啥网不通的,搞不好是压根没连网线。

所以今天我们来聊一聊,对于一个程序员来讲,需要了解的自动化运维的那些事。

一、自动化运维的概念

随着信息时代的持续发展,初期的几台服务器已经发展成为了庞大的数据中心,单靠人工已经无法满足在技术、业务、管理等方面的要求。一个运维人员手工配置几台服务器还可能。配置几百上千台服务器那就累死了,还容易出错。那么就需要对运维工作进行标准化、自动化、架构优化、过程优化等。从面降低运维服务成本。其中,自动化最开始作为代替人工 *** 作为出发点的诉求被广泛研究和应用。

所谓自 动化运维,即在最少的人工干预下,结合运用脚本与第三方工具,保证业务系统7*24小时高效稳定运行 。这是所有业务系统运维的终极目标。

按照运维的发展成熟度来看, 运维大致可分为三个阶段

(1)依靠纯手工,重复地进行软件的部署与运维;

(2)通过编写脚本,方便地进行软件的部署与运维;

(3)借助第三方工具,高效地进行软件的部署与运维;

二、自动化运维需要解决的问题

自动化运维通常来讲,需要解决以下几个问题: 自动部署配置、风险事前预警、故障事中解决、和故障事后管理

三、自动化运维的常用工具

自动化运维常用的工具包括以下几种:

1、Ansible

ansible是基于Python开发的自动化运维工具,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

ansible具有如下一些特性:

(1)模块化:调用特定的模块,完成特殊的任务。

(2)Paramiko(python对ssh的实现),PyYaml,jinja2(模块语言)三个关键模块。

(3)支持自定义模块,可使用任何编程语言写模块。

(4)基于python语言实现。

(5)部署简单,基于python和SSH(默认已安装),agentless,无需代理不依赖KPI(无需SSL)。

(6)安全,基于OpenSSH

(7)幂等性:一个任务执行一次和执行n遍效果一样,不因重复执行带来意外情况。

(8)支持playbook编排任务,YAML格式,编排任务,支持丰富的数据结构。

(9)较强大的多层解决方案role。

2、Chef

Chef是一个功能强大的自动化工具,可以部署,修复和更新以及管理服务器和应用程序到任何环境。

Chef 主要分为三个部分 Chef Server、Workstation 以及 Chef Client。用户在 Workstation 上编写 Cookbook。然后,通过 knife 命令上传到 Chef Server。最后,在 Chef Client 上面实施安装和部署工作。所以,对于 Cookbook 地编写在整个自动化部署中起到了重要的作用。

Chef Server 包含所有配置数据,并存储描述Chef-Client中每个Nodes的Recipe,Cookbook和元数据。配置详细信息通过Chef-Client提供给Nodes。所做的任何更改都必须通过Chef Server进行部署。在推送更改之前,它通过使用授权密钥来验证Nodes和Workstations是否与服务器配对,然后允许Workstations和Nodes之间进行通信。

Workstations 用于与Chef-server进行交互,还用于与Chef-nodes进行交互。它还用于创建Cookbook。Workstations是所有交互发生的地方,在这里创建,测试和部署Cookbook,并在Workstations中测试代码。

Chef命令行工具 是创建,测试和部署Cookbook的地方,并通过此策略将其上载到Chef Server。

Knife 用于与ChefNodes进行交互。

Test Kitchen 用于验证Chef代码

Chef-Repo 是一个通过Chef命令行工具在其中创建,测试和维护Cookbook的存储库。

Nodes 由Chef管理,每个Nodes通过在其上安装Chef-Client进行配置。 ChefNodes 是一台机器,例如物理云,云主机等。

Chef-Client 负责注册和认证Nodes,构建Nodes对象以及配置Nodes。Chef-Client在每个Nodes上本地运行以配置该Nodes。

Cookbook 是Chef 框架的重要基础功能之一。在 Chef Server 对目标机器做安装部署的时候,是通过 Runlist。而 Runlist 里面又包含了一个一个具体的 Cookbook,所以,最终对一个目标机器的部署任务就落到了 Cookbook 上。而对于 Cookbook 来说,其中包含了多个组件,我们可以将 Cookbook 简单地理解成一个容器或者可以理解为一个包,里面包含了 recipes、files、templates、libraries、metadata 等信息。这些信息用于配置我们的目标机器。

3、Puppet

puppet是一种Linux、Unix平台的集中配置管理系统,所谓配置管理系统,就是管理其里面诸如文件、用户、进程、软件包等资源。它可以运行在一台服务器端,每个客户端通过SSL证书连接到服务端,得到本机器的配置列表,然后根据列表来完成配置工作,所以如果硬件性能比较高,维护管理上千上万台机器是非常轻松的,前提是客户端的配置、服务器路径、软件需要保持一致。

客户端Puppet会调用本地facter,facter探测出该主机的常用变量,例如主机名、内存大小、IP地址等。然后Puppetd把这些信息发送到Puppet服务端;

Puppet服务端检测到客户端的主机名,然后会检测manifest中对应的node配置,并对这段内容进行解析,facter发送过来的信息可以作为变量进行处理;

Puppet服务器匹配Puppet客户端相关联的代码才能进行解析,其他的代码不解析,解析分为几个过程,首先是语法检查,然后会生成一个中间的伪代码,之后再把伪代码发给Puppet客户端;

Puppet客户端接收到伪代码之后就会执行,执行完后会将执行的结果发送给Puppet服务器;

Puppet服务端再把客户端的执行结果写入日志。

4、Saltstack

SaltStack是基于python开发的一套C/S自动化运维工具。部署轻松,扩展性好,很容易管理上万台服务器,速度够快。与服务器之间的交流,以毫秒为单位。SaltStack提供了一个动态基础设施通信总线用于编排,远程执行、配置管理等等。它的底层使用ZeroMQ消息队列pub/sub方式通信,使用SSL证书签发的方式进行认证管理,传输采用AES加密。

在saltstack架构中服务器端叫Master,客户端叫Minion。

在Master和Minion端都是以守护进程的模式运行,一直监听配置文件里面定义的ret_port(接受minion请求)和publish_port(发布消息)的端口。当Minion运行时会自动连接到配置文件里面定义的Master地址ret_port端口进行连接认证。

saltstack除了传统的C/S架构外,其实还有一种叫做masterless的架构,其不需要单独安装一台 master 服务器,只需要在每台机器上安装 Minion端,然后采用本机只负责对本机的配置管理机制服务的模式。

saltstack提供如下一些功能:

(1)远程执行:(批量执行命令)在master上执行命令时,会在所有的minion上执行。

(2)配置管理/状态管理 :(描述想到达到的状态,saltstack就会去执行)

(3)云管理(cloud):用于管理云主机

(4)事件驱动:被动执行,当达到某个值会自动触发

这四种自动化运维工具的比较如下,现在主流的基本上ansible和saltstack用的多一些:

程序员跳槽那些事,怎么正确选择下一家公司?

程序员想要跳槽,选择公司很重要。如果想要锻炼自己,去大一点的公司比较好,待遇也不错。工作中只有两种人,正在跳槽的人和准备跳槽的人,尤其是对于互联网行业来说,程序员跳槽是很正常的,频率是很高的。如何选择下一个公司,根据自己的需要来决定。但无论你想进入大公司还是小公司,你首先需要技术。

在大工厂和小工厂工作过的人很多,如果你是一名新生或工作年限短五年以内的,你必须找到在大工厂工作的机会。虽然很多大工厂都加班,但作为工人阶级的一员,为什么不加班呢?此外,大型工厂的规章制度和福利也比较完善,你可以看到很多成熟的系统和优秀的实践。在福利方面,大工厂的工资高于普通小公司,即使你离开一家大工厂,你可以很容易地得到加薪,然后去另一家大工厂,这些都是小公司没有的优势。

刚毕业时,无法进入大工厂,所以起点比同时进入大工厂的人低很多。在工资收入方面,那些没有进入大工厂的人,可能在社会上挣扎了很多年,才勉强达到月薪20000到30000,在大工厂工作一到两年就足够了。因此,如果你一毕业就进入一家大工厂,你的第一份工作将比同龄人有更高的收入、起点。这就是为什么建议毕业生咬紧牙关,在毕业前夕争取一个大工厂的理由。

虽然大工厂很好,但进入大工厂对个人资质、素质和技术水平都有一定的要求,不是每个人都有机会。这里提到的个人资历,如学历和毕业机构的水平。一般来说,大型工厂只接受学士或以上学位,学士或以下学位的新生将不予考虑。并将优先考虑具有良好学校水平的毕业生。学校和教育已成为强制性要求。即使你的能力很强,HR在筛选简历时也会看一看,你可能没有面试机会。

(一)要不断改进阅读的基本条件

阅读需要哪些条件呢?

(1)要掌握常用的字、词、句、段、篇的基本知识

阅读就是要通过与字、词、句、段、篇打交道,从中获取知识,如果不掌握这些知识,那么,阅读就变成看“天书”了。

中学生如能掌握5000个字,阅读一般文章就问题不大了。有的学生之所以阅读能力差,就是因为没掌握足够数量的字、词(主要是实词)和词组的表达概念,而概念是思维的“细胞”。句是用词按一定的语法规律联结而成的语言单位,一般用来表达判断,表达相对完整的思想。对句的理解不单要求掌握词义,还要求掌握语法。没有语言,思维就不存在了,由此可见,阅读的重重困难,往往是由不识字词,看不懂句子的意思带来的。因此认真学好语文,在阅读中有意识地丰富自己的语言知识是十分重要的。

科学家用他们的亲身体会,明确地指出了学好语文的重要性。

有一位数学家说:“很难想象一个文理不通、错字连篇的人,能把逻辑严谨的数学内涵表达出来。”著名数学家苏步青说:“我从小打好的语文基础,对我学习其他学科提供了很大的方便。我还觉得学好语文对训练一个人的思维很有帮助,可以使思想更有条理。这些,对我后来学好数学都有很大好处。”人们赞誉苏步青为“数学诗人”。

(2)要掌握基本的科学知识

不掌握自然科学和社会科学的基本概念和基础知识,就会给阅读带来很多不方便,甚至困难重重。有人说,到了21世纪,如果不懂生物化学,不懂生态学,可能连报纸都看不懂。现在报上经常出现“生态平衡”、“生态系统”、“遗传工程”、“基因”等专用名词,不少人似懂非懂,就是因为缺乏高中生物的基础知识。可见,要想在现代化社会里提高阅读能力,必须尽快掌握基本的科学文化知识才行。

(3)要会用工具书

在阅读时难免有些字不认识,也有的一时想不起来,这时,如果手头有《新华字典》、《现代汉语词典》和《汉语成语词典》等工具书,就可以及时地查一下,以扫除阅读中的障碍。当然,根据阅读的需要,准备一些相应的参考书籍,准备随时查找也是必要的。

如果工具书齐备,查找熟练,阅读起来就会顺利得多。当然,通过查找工具书,又可以使自己的知识进一步丰富起来。

(二)要有目的,有计划地读书

面对浩瀚的书海,如果读书没有目的和计划,将会无所适从。

中学生的大部分时间是在课堂上度过的,每天又要完成当天的学习任务,因此,可供阅读的时间,尤其是课外阅读的时间并不多,如果读书再没有目的和计划,就会使宝贵的阅读时间得不到充分地有价值地利用。

中学生的阅读应以达到这样的目的为出发点:

有利于基础知识的学习,有利于发挥自己的特长,有利于弥补自己的弱点,有利于阅读能力的提高。

安排阅读计划时要注意:

围绕课本阅读一些有关的课外书。例如,读一些与课内学习有关的科技史,人物传记,这样有助于提高课内学习的兴趣,充实课内学习的内容,使思维更加活跃。

围绕自己的爱好或特点读一些有关的课外读物,一个爱好理科的学生,可以定期到阅览室读有关的报纸杂志,一个喜欢文科的学生,可以定期去读各种文学刊物,也可以利用假期阅读文学名著。

至于课外书的选择,可以请教老师,请教高年级的优秀生或同班的同学,也可以请教家长。把他们的好经验学过来,实在是一种省时间的好办法,选好一本书,就可以用较少的时间得到较大的收获。

书选好了,再把读书的时间分配好,不仅可以提高读书的效率,也不至于冲击课内的学习。长期坚持下去,学习中的弱点就可以得到弥补,个人的特长就可以得到发展,既促进了课内的学习,又丰富了课外的精神生活。

不少学生读书缺乏目的和计划,一昧地从兴趣出发,常常看一些侦探小说、武侠小说,达到了爱不释手的地步,为看这些书而开夜车,不完成作业,结果严重干扰和影响了课内的学习,这是一种不好的读书倾向。

(三)要处理好博览和精读的关系

博览就是广泛地看书,目的是针对书的内容作一般了解,以发现书内精华的部分和急需的知识。广泛阅读可以博采众长,正如鲁迅所说:“如果只看一个人的著作,结果是不大好的,你就得不到多方面的优点。必须如蜜蜂一样,采过许多花,才能酿出蜜来,倘若叮在一处,所得就非常有限,枯燥了。”

博览就是观大略,在短时间内阅读大量书籍,为精读创造条件。观大略的方法是:看目录,从目录中发现有用的内容,再翻阅有关部分,到书店选书就是用这种办法;看内容提示,看书的开头几段和结尾几段,以掌握书的大概内容;也可以用快速阅读法,就是用较快速度读一遍,了解大致的内容。

在博览的基础上,在同类的书中选出一本最好的进行精读。精读之后再阅读同类的其他书籍。精读时,要“细嚼慢咽”,要多动脑筋,要反反复复地读,还要认真做读书笔记

数学家张广厚在谈起学习一本数学小册子时说:“这篇论文一共20多面,我反反复复地念了半年多,因为老用手摸这几页,白白的书边上,留下了一条明显的黑线。这样反复学习,对我们研究工作有很大的促进作用,我的爱人说:‘这哪叫念书啊!简直和吃书一样。’”

精读过的书,要做到:一懂,就是对书的基本内容要达到理解的程度;二记,就是要记住所理解的内容;三会,就是会运用这些理解了的知识;四熟,就是能熟练地将从书本内学到的知识表达出来或运用它分析问题和解决问题。

中学是基础教育,是打基础的阶段,因此要把精读的目标指向教科书和主要参考书。

(四)要勤于思考

爱因斯坦说:“在所阅读的书本中找出可以把自己引向深处的东西,把其他一切统统抛掉,就是抛掉使头脑负担过重和会把自己诱离要求的一切。”就是说,阅读时要抓住书中的精髓,实现由浅入深的转化。

英国诗人柯勒律曾把读者分为四类:第一类好比计时的沙漏漏沙,注进去,漏出来,到头来一点痕迹也没有留下;第二类好像海绵,什么都吸收,挤一挤,流出来的东西原封不动,甚至还脏了些;第三类像滤豆浆的布袋,豆浆都流了,留下的只是豆渣;第四类像开掘宝石的苦工,把矿渣甩一边,只要纯净的宝石。这段话的意思是说,阅读时,要取其精华,去其糟粕。

华罗庚说:“高中程度的同志可以回想一下过去学过的小学算术、初中代数在脑子里还有那么多吗?没有那么多了。因为我们理解了,会运用了,这就是说书变薄了。”这段话的意思是说,阅读时要实现由多而杂到少而精的转化。

综上所述,阅读时,要竭尽全力,力求做到“留下宝石”,“引向深处”和“把书读薄”,为此,就要勤于思考。

具体说要做到以下几点:

(1)力求理解

读书应当边读边想,力求理解,弄懂书中所说的中心思想和基本原理,阅读时,应当每看一段就想一想,把道理弄懂;在全文读完之后,再串起来看一看,想一想,找到各段之间的联系,以便从整体上理解一篇文章,一节课文或一章内容。

(2)理清思路

著名教育家叶圣陶说过:“文章有思路,遵路识斯真。”意思是每一篇文章都体现着作者的思路,遵循这一思路阅读,才能理解文章的实质。可见理清思路对阅读多么重要。

在阅读自然科学著作时,对书上提出的原理、规律、定律、公式,不仅要理解结论,尤其要理清文章的思路,看看这些结论是怎么推导出来的。李政道博士说:“当读完一段之后,就应当把书合上,自己把思路走一下,如果走不出来,再去看书,想想自己为什么走不出来,别人为什么走通了。”阅读时,只记现成结论,而不考虑这些结论是怎么得出来的,那么思维能力就很难在阅读中提高。

(3)要能提出问题

阅读中发现的问题一般有两类:一类是根据自己所具备的知识,认为书中的一些见解不正确、不完整,提出异义或补充;一类是因为自己具备的知识还不够,因而有不懂的问题。中学生随着知识水平和能力的提高,阅读时发现第一类问题会逐渐增多,而第二类问题会慢慢减少。

一旦发现问题,再深入阅读有关书籍,并且深入思考,收获会更大,还有可能发现新的知识,获得新的见解。

(4)要独立回忆,学会准确表达

阅读后,要通过回忆再检查一下阅读的效果。对已经理解的内容要善于用简练的语言表达出来,写在读书笔记上,以备日后查用。钱伟长说过:“读一本书,只要清楚它的梗概,了解它的主要精神和主要问题,先把最重要的东西学到手,然后回顾一下,看自己解决一些什么问题,还有哪些没有解决?对一时无法解决的问题,最好用小本子记录下来,以便以后解决。”

(五)要记好阅读笔记

威廉·李卜克内西在《忆马克思》一文中说:“只要有一点可能,他任何时候总要工作的。就是去散步,他也要带一本笔记簿,并且时时在上面写点什么。”为了写《资本论》,仅在 1850年 8月至 1853年 6月,马克思就摘录了70个不同作者的著作,写了24本有关政治经济学的笔记。在写《资本论》的过程中,他摘录的书有1500多本,写的笔记至少有100多本。

马克思在笔记的封面上写明做笔记的时间和地点,编上笔记的序号,有的还加上标题……每本笔记都编有页码,为了日后查阅方便,很多笔记都做了目录和内容提要。

黑格尔读书学习,也有一个独特的习惯,就是把读过的书,按语言学、美学、几何学、心理学等分类,把它们放到贴有标签的文件夹里。这样,当需要什么材料时,随时可以拿到。这种习惯,他坚持了一生。

鲁迅写作《中国小说史略》光摘抄的卡片就有5000张。

(1)加深理解,巩固记忆

做笔记的过程,就是一个加深理解、加强记忆的过程。有人说:“眼看千遍,不如手抄一遍。”就是做最简单的摘录,也需要动动脑筋,以摘录最精彩的地方,至于写体会,那就更要动脑筋了。因此,有了“要做笔记”的愿望,必然会促使你专心阅读。再加上与书籍相比,笔记自然要简明、深刻和概括得多,不仅利于理解,也利于记忆。

(2)利于积累资料,使知识“外贮”

经过长期阅读之后,就可以通过笔记积累起符合自己需要的大量资料,弥补头脑记忆的不足。因为用头脑记忆,往往不够准确和持久,难免忘记、记错或记混。如把资料分门别类保管好,则可以长期为学习及以后所从事的工作服务,只要不丢,就没有“忘记”的问题,只要使用之前看一看,这些“外贮”的资料又可转为“内贮”的记忆,使知识的运用得心应手。保尔·拉法格在回忆马克思时说:“他有这么一种习惯,隔一些时候就要重读一次他的笔记和书中做上记号的地方,来巩固他非常强而且精确的记忆。”

不少中学生在阅读时,轻信自己的记忆力,懒得动笔,以致到需要运用阅读的收获来分析问题解决问题时,忘记得一干二净,感到很后悔。

还有的中学生笔记记了不少,但不知道定期分类、整理,不知道妥善保存,因此当需要运用时,又因太乱而难以查找,使笔记成了“死材料”。

一般精读的书,可用笔记本做笔记,而博览的书,可用活页纸做笔记,然后定期分类、整理。

如果在中学时代,就学会做读书笔记,学会积累和整理资料,那么,天长日久,不仅可以促进课内的学习,而且还能帮助学生学会一套阅读的方法,提高阅读的能力,这必将给走上工作岗位后的自学带来极大的好处。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11054370.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存