问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

自动化运维经验谈,以及为什么Docker是革命性的

发布网友 发布时间:2022-04-23 09:32

我来回答

1个回答

热心网友 时间:2022-04-10 08:59

自动化从构建和测试开始
运维自动化的关键在于标准化。当你有一个成熟的团队,有标准化的流程,那么运维自动化就水到渠成了。而如果你什么都没有,那就需要先设定优先级。
我们的目标当然是将所有的流程标准化,而哪些要放在前面做?做起来比较简单的,和比较重要的。我认为构建和测试的流程是最基本的第一步。这对于交付产品的公司来说容易一些,对互联网公司来说更复杂一些,而测试比构建也要复杂一些,但这是基础。构建和测试的流程标准化做好了,就可以准备做自动化的工作了。
不过我见过的很多公司连Git都还没有,仍然在用最原始的FTP push来更新代码。我的观点是,如果你还没有用上Git这样的工具,那根本就不用考虑什么自动化的问题,因为条件完全不成熟。
所以,我们假设你的团队能够很好的使用Git,然后你建立了构建和测试的标准化流程,然后你就可以用工具来实现自动化。这可能是Jenkins这样的工具,不过Jenkins比较复杂,如果你只是一个很简单的网站,那么自己写一些脚本来实现自动化是更合适的。
到此为止,我们说的还不是自动化运维,而是自动化工具链。工具链就是开发工具链,从IDE,到代码提交,代码审查,构建,到测试,仍然属于开发的范畴。在这之后才是运维的范畴,就是往生产环节部署。
部署
运维自动化最关键的部分是运行环境的定义。我们的目标是让各个阶段的代码完全一样,即开发者在自己笔记本上写的代码,到集成阶段的代码,到线上环境的代码,都是一致的。为什么Docker这么火,就是因为它帮助开发者很简单的就让自己的开发环境跟生产环境一致。环境的标准化,意味着目录、路径、配置文件、储存用户名密码的方式、访问权限、域名等种种细节的一致和差异处理的标准化。这涉及到很多方面,也是自动化运维最困难的一部分。
这里要注意的是,像Puppet这样的工具并不是魔法。你需要自己为你的环境定义一套描述的方式,工具是无法为你完成这项工作的。无论是Puppet还是Jenkins,都是根据你的定义来管理你的环境。你决定用户名和密码如何储存,你决定配置文件的路径。开发者很喜欢把各种配置和url之类的参数硬编码到代码里,这很快;他们还喜欢东搞西搞的用一些乱七八糟的手段让软件通过测试,但是如果要构建一个真正的系统,这些小把戏根本没用。你必须强迫他们采用标准的方式写代码,比如强制他们把用户名和密码写在固定的地方,然后你才能跟Puppet说,配置文件在这里,测试环境用这个配置,生产环节用那个配置。到这里就很简单了。
线上环境问题排查
对于线上环境的问题发现与解决,大部分基础的问题都能用工具来自动发现并提醒,比如磁盘空间不够,比如MySQL崩溃,比如访问网站的时候出现错误页面等等,有很多现成的工具可以抓到它们错误的信息。
比较困难的是排查网站为什么变慢这样的性能问题。我们经常看到客户的开发团队提交新代码后引入问题。在测试做得不好的时候这很常见,事实上很多东西是很难测试的,尤其是性能;而互联网公司又尤其没有测试的文化,互联网开发人员大多关注特性的实现,而不像传统企业级开发那样有很多测试的工具和流程。
理想的情况下,每个人提交代码前都应该测试。但既然反正也没人这样做,那么用工具来帮忙还是很有用的。比如New Relic这样的工具就很强大,它可以发现代码层面的问题。我们有时候也用我们的工具帮客户做测试,包括负载测试。性能测试是挺困难的一件事,既不容易用起来,也不容易让别人用起来,一般来说你需要一个专门的团队才能做性能测试,但互联网公司基本没有(除了Google、*这样的),就算想有也找不到人。所以要善用工具。
Docker的意义
Docker很有意思,很火,很新,当然也很多问题。它目前没多少大型部署案例,所以人们不断的发现问题也是很正常的事情。
总体来说,Docker是一个对开发者非常友好的东西:简单的实现不同机器上的环境标准化,可以轻松拿来拿去,而且在不同的云平台上都支持。而把Docker用起来对运维而言则是很大的挑战,我们帮一个客户做一个规模较大的Docker部署,一个有经验的DevOps团队也花费了几个月的时间。为什么?
Docker容器就跟VM差不多,从运维的角度,会希望像管理VM那样管理Docker容器,但是Docker容器很难troubleshooting,因为默认来说它没有SSH,你要怎么登陆到一个容器里去查看里面发生了什么问题?Troubleshooting,这是一个最大的问题。
默认来说,Docker容器也无法运行cron任务或者batch任务,意味着你没法儿让它自动做备份之类的工作,而这是最基本的运维任务,这是另一个必须解决的问题,否则你根本无法构建一个自动化管理的云环境,而要解决这个问题,你需要搞一些手段,比如改造它的架构,但是你一折腾,又引入了很多新的问题要解决。
Docker有很好的网络机制,但是也很复杂,所以我们bypass了所有的Docker网络,而这也引入了一些问题。Docker容器也没有好的重启方法,因为你很难看到哪个是哪个,需要做一些好的命名映射的管理系统。总之,要在大型部署中把Docker玩好,你需要各个方面的专家,还需要时间。
我并不怀疑Docker是趋势,它的概念非常好,会极大的改善开发者的世界。如果你的系统比较简单,不是很大,那么用Docker是完全没问题的。而且它的文档很好,这也是很赞的地方。我相信它会引领未来。它只是还需要时间来完善。而这也不奇怪:想想KVM,其实KVM做的事情很简单,就关注系统层和CPU、内存、存储、网络的交互,并不难理解,但即使是目标如此简单的项目也多年处于问题层出不穷的状态,人们不断的围绕它开发工具,改进它,才到了今天的可用状态。Docker则复杂的多,有很多层:它是一个环境管理系统,它是个打包系统,它是个文件系统,它包含一套网络机制,它是一个repo系统,它是个代码系统,等等。基本上,Docker想要把所有的东西都扔到一个小盒子里,五脏俱全。当你用Docker提交代码时,你做的事情跟以前是完全不同的。在以前我们只是把代码提交上去,而在Docker中我们把整台计算机(虚拟机)提交上去。想象一下,这就好像是交换电脑一样,开发者把整台电脑交给运维,电脑里面的环境和代码都有了,是不变的;而运维需要把所有的电源网线什么的都插回去,需要处理很多变化的东西,比如变更的IP、用户名、文件系统等等。这是全新的方式。
什么是 docker 容器技术

Docker是一种革命性的技术,它利用Linux容器实现了应用程序级别的隔离,改变了开发和运维的工作方式。不同于传统的虚拟主机(VM),Docker提供了一个轻量级且高效的运行环境,由Docker Engine构成,包含便携式运行环境和包管理器,类似于NodeJS的单OS和单线程设计。Docker Hub则是一个云服务,用于自动化工作...

作为一个运维,我怎么看Docker

运维自动化的关键在于标准化。当你有一个成熟的团队,有标准化的流程,那么运维自动化就水到渠成了。而如果你什么都没有,那就需要先设定优先级。我们的目标当然是将所有的流程标准化,而哪些要放在前面做?做起来比较简单的,和比较重要的。我认为构建和测试的流程是最基本的第一步。这对于交付产品的...

一文理解什么是DevOps,通俗易懂白话文

DevOps,一个革命性的概念,起源于对传统开发模式的反思。它不再将开发人员和运维人员分隔开来,而是倡导两者之间的紧密协作,通过自动化流程提升软件交付和架构变更的效率。曾经,单体架构和瀑布式开发让运维成为开发者的附庸,但随着业务的飞速发展,分布式架构和敏捷开发的兴起,团队分工变得精细化,测试与...

自动化运维工具有哪些

Docker:是一种容器化技术,通过虚拟化技术将应用程序和其运行环境打包成一个可移植的容器。Docker能够自动化应用程序的部署和运维,使得开发者和运维人员可以快速地构建、测试和部署应用程序。此外,Docker还可以通过集成CI/CD(持续集成/持续部署)工具来实现自动化运维,如自动拉取代码、构建镜像和部署等。

非标自动化维护工程师面试题目

这个问题是考察你对于容器化的技术掌握程度。你需要理解容器技术的概念、常用的容器工具(如 Docker)以及如何部署和管理容器集群等。5、怎样保证系统高可用性?这个问题是考察你对于系统设计和运维方面的思路。你可以讲述自己如何设计高可用的系统结构、如何实现负载均衡、如何减少系统单点故障,以及应急响应等...

平台运维岗位职责

1、熟悉云技术架构,OpenStack,docker技术等 2、熟悉Unix,linux,windows操作系统,虚拟化平台运维,熟悉脚本开发语言, 3、熟悉IaaS层云计算与虚拟化概念、有云主机、云存储相关实施经验 4、熟悉主流云计算产品,对相关云产品有运维经验优先 平台运维岗位职责2 岗位职责: 1.虚拟化、网络存储、服务器、数据中心、大数据、...

计算机运维工程师忙吗?

因此运维工程师从非常忙降级到很忙,有了一定的空闲时间去学习新知识。 3.自动化运维这个阶段单纯的通过工具或脚本已经不能满足运维日益增长的技能需求,因此此时通过各种媒体渠道、经验交流,知道运维过程中不仅仅是处理问题那么简单,必须形成一定的制度规范,建立一套监控、故障响应、CI/CD机制,实现不同场景的自动化...

云计算运维岗的工作要求是什么?

1. 技术能力:首先,云计算运维人员需要具备扎实的计算机网络、操作系统、数据库等基础知识,熟悉云计算平台(如AWS、Azure、阿里云等)的使用和管理。此外,还需要掌握虚拟化技术(如VMware、KVM等)、容器技术(如Docker、Kubernetes等)以及自动化运维工具(如Ansible、Puppet等)。2. 系统监控与故障处理:...

自动化运维系统哪个好?

Git等方向。平台覆盖整个研发生命周期,在开发侧基于Kubernetes和docker将异构化的运行环境真正实现不可变的基础设施,同时做到开发语言不受限。众安科技内部有各种技术栈,包括GO、Python、JAVA,这些都是在体系之内的技术栈。线上运维侧主要是基于Kubernetes带来的能力,提供自动扩缩容、自动上下线的能力。

kubernetes 是什么语言开发的

使用Kubernetes可以:自动化容器的部署和复制 随时扩展或收缩容器规模 将容器组织成组,并且提供容器间的负载均衡 很容易地升级应用程序容器的新版本 提供容器弹性,如果容器失效就替换它,等等...K8s学习有一个前提条件,需要先掌握docker,如果你没有docker基础的话,那还不能学习 K8s k8s它底层的部署容器...

什么是自动化运维 自动化运维是什么意思 自动化运维是干嘛的 自动化运维运维那点事 自动化运维需要学什么 做自动化运维的公司 devops自动化运维 运维是做什么的 自动化运维管理
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
水果冰激凌沙拉原料及做法 如何用水果自制冰激凌? 如何用水果制作冰激凌? 什么叫做项目融资贷款 小区物业要买公众责任险,要向物业公司打报告,报告范文怎么写_百度知 ... ...证被亲戚拿去做银行抵押贷款了,当初我签字担保人,现在怎么处理_百度... ...现在他一直没还款银行要起诉他了,他有房产证等他能用房子抵压吗... 破坏小区围墙进入小区偷盗公众责任险要赔付吗 2023-08-05 如何基于 uni-push2.0 实现全平台推送 ...叫我拿房产证复印件去银行帮他做担保人,然后还说每个月给我二干四... 如何制作flash动画片 如何使用会声会影制作逐帧动画?完全新手,一点也不会用 在FLASH里制作短片时,逐帧动画是怎么样制作的?大神们帮帮忙 Macromedia Flash 8里的逐帧动画的操作步骤 请平面动画人才指教:“纸上的逐帧动画视频如何制作?需要什么软件?具体讲下 flash动画制作教程是怎样的? 如何制作一个简单的动画片?(50分) 纯手绘的逐帧动画是怎么做出来的呢?场景和人物分离? 怎么样制作逐帧动画,要具体步骤。 美的空调如何关闭电辅热? 美的挂机空调电辅热怎么关不了? 格力空调辅热功能怎么操作? 格力空调辅热为什么关不了 立式空调辅热按了没反应 空调开不了辅热咋办? 我购买一间门面,房产证上写的是商业,国土证上写的是商住,请问对吗 商铺产权证两个,商品房 门面办房产证究竟要多少费用 门面办产权证要多少费用 请问沿街的门面房上面是住宅,下面是做生意的!这个门面房产证产权证上是什么性质的?商业? 项目初期运维做点什么好 马上要找工作了,求一套Linux的项目经验,好写到简历上,谢谢了 如何在面试中介绍自己的项目经验? 两年工作经验的运维,考PMP有多大用处 如果我想成为一名linux运维工程师,我应该怎么做 首饰上的AU750是什么意思 刚买了一款项链,项链上刻着au750代表的是什么意思? 老凤祥AU750彩金戒指是什么意思 白金戒指上标注Au750,这个是什么意思? 彩金上面带AU75013是什么意思啊? 黄金au750 12#后面还有数字和字母是什么意思呢? 耳环上的标志是AU750是什么意思 彩金戒指上标au750是什么意思 项链上印的750是什么意思 项链Au750是什么意思 我买得个彩金戒指上面写着AU750,14是什么意思啊?请大家估下价格看我亏没亏哈哈 18k黄金au750,3dl25是什么标识 彩金项链上有au750,zzy是什么牌子 ctf au750 xc是什么意思? ps cc 2017 64位与32位有什么区别 iphone11什么时候会降价