首页 理论教育 拥抱毁灭-宠物与牛(微服务运维实战)

拥抱毁灭-宠物与牛(微服务运维实战)

时间:2023-11-06 理论教育 版权反馈
【摘要】:传统的系统管理是基于物理服务器的。登录到有故障的机器,找出问题所在并解决。每台“宠物服务器”都是独一无二的,亲手“养育”并照顾之。创建并销毁虚拟机的能力允许我们采用不同的计算方法。对于Garfield,取而代之,现在我们使用vm262.ecme.com,明天当我们试图登录它的时候,就会发现它已经变成vm435.ecme.com。治愈它将是缓慢的,并有感染牛群其他部分的风险。从宠物到牛的转变需要心理上的转变。

拥抱毁灭-宠物与牛(微服务运维实战)

Embracing Destruction:Pets versus Cattle

为了尽快向客户交付有价值的软件,项目中的任何角色如果无法直接为此做出贡献,那么都应当慎重考虑。

——Stein Inge Morisbak

在开始探索帮助我们创建和运行“真正的”Swarm集群的工具和过程之前,应该在较高的层面上先讨论一下策略问题。我们如何对待服务器?它们是成为宠物还是牛呢?

如何知道你将服务器视为宠物还是牛呢?下面的问题可以帮到你。现在,如果有几台服务器离线(不工作)了,会发生什么事情?如果它们是宠物,那么这种情况会在你的客户中引起严重的混乱。如果它们是牛,那么这种事情根本就不会被注意到。因为你在多个节点上运行一个服务的多个实例,单个服务器(或其中的几个)失效(故障)并不会引起所有副本的失效。直接的影响是一些服务将运行较少的实例,这些实例将处理更高的负载。失效的副本会被重新调度,原来的实例数量很快就会恢复。同时,失效的节点会被新的虚拟机取代。多台服务器失效的唯一负面影响就是较差的处理能力所带来的响应时间的延长。几分钟之后,随着失效的副本被重新调度,失效的节点被新的虚拟机取代,一切都将恢复正常。理想情况是,这一切的发生都无需人工干预。如果你的集群正在如此运行,那说明你的服务器就是牛。相反,你的数据中心就充斥着宠物。

传统的系统管理是基于物理服务器的。要在数据中心添加一台新的机器,首先得把它买回来,并等待供应商的配送,然后在办公室里把它装配好,移入数据中心并上电。整个过程可能需要耗费相当长的时间。在我们得到一个在数据中心内运行的全新配置的服务器之前,经过数周甚至数月的时间并不少见。

考虑到如此长的等待时间和成本,很自然地我们会尽量保持服务器的健康。如果某台服务器的状况开始恶化,那么我们会想尽办法把问题解决掉。我们还能做什么呢?等待数周或数月直到新的服务器抵达吗?当然不是。登录到有故障的机器,找出问题所在并解决。如果一个进程死了,就重启它。如果硬盘坏了,就换掉它。如果服务器超负荷了,就增加更多的内存。

在这种情况下,我们对每台服务器都会产生情感依赖,这是很自然的。这种依赖从名字开始。每台服务器都会有一个名字,如Garfield、Mordor、Spiderman和Sabrina等。我们甚至会确定一个主题。可能所有服务器的名字都基于漫画书里的超级英雄。或者你更喜欢神话中的生物?前男友和前女友的主意怎么样?一旦给服务器起了名字,我们就把它当成宠物了。你感觉如何?你需要什么吗?哪里有问题了?是该带你去看兽医吗?每台“宠物服务器”都是独一无二的,亲手“养育”并照顾之。

变化始于虚拟化。创建并销毁虚拟机的能力允许我们采用不同的计算方法。虚拟化让我们不再将服务器视为宠物。如果虚拟服务器是即时创建和销毁的,给它们起名字就毫无意义了。因为它们的存在时间非常短暂,所以不会产生情感依赖。对于Garfield,取而代之,现在我们使用vm262.ecme.com,明天当我们试图登录它的时候,就会发现它已经变成vm435.ecme.com。(www.xing528.com)

通过虚拟化,我们开始把服务器当成牛来对待。它们没有名字,只有数字。我们不会单独对待它们,而是把它们当成牛群。如果某头牛病了,就杀掉它。治愈它将是缓慢的,并有感染牛群其他部分的风险。如果一台服务器表现出有问题,就立即终止它并用新的服务器取代。

这种方法的问题来源于我们多年来使用物理硬件方面积累的习惯。从宠物到牛的转变需要心理上的转变。它要求在切换到新的工作方法之前,忘掉过时的做法。

尽管本地的虚拟化为许多新的可能性打开了大门,但许多人仍然采用与处理物理节点相同的方式来处理虚拟化服务器。旧的习惯很难消亡。尽管服务器已经成了牛群,但我们还是把它们当成宠物来对待。数据中心在物理上的局限性,部分导致了我们难以转向更具弹性动态的计算。只有在有可用资源的情况下才能创建新的虚拟机。一旦达到上限,就必须销毁一台虚拟机才能创建一台新的。物理服务器仍然是值钱的商品。虚拟机给了我们一定的弹性,它仍然受到我们所拥有的计算能力的限制。

我们要小心对待这些昂贵的资产,因为它们既不便宜也不容易替换。我们小心翼翼地照顾它们,因为它们应该会使用相当长的时间。如果玻璃杯碎了,你可能不会试着把碎片粘起来,你会把它扔进垃圾桶。橱柜里还有足够的玻璃杯,当杯子太少时,我们要做的就是去购物中心再买一套回来。如今我们甚至不用去购物中心,可以直接在网上订购,当天就会送到家门口。我们应该对服务器使用相同的逻辑。

云计算带来了巨大变化。服务器不再是有价值的资产,只是一种商品。无需任何额外的花费,就可以在任何时间替换一个节点。我们可以在几分钟内将十几台服务器添加到集群中,也可以在不需要的时候把它们去掉并降低成本。

云计算从根本上不同于“传统的”数据中心。当充分发挥其潜力时,没有一台服务器是不可缺少的或唯一的。再不济我们也能在不改变过程和架构的情况下过渡到云。如果只是简单地将本地服务器转移到云,而不改变维护它们的流程,那么我们唯一能获得的就是更高的成本。

随着云计算的发展,服务器的概念、价值以及获取它所需的时间都发生了巨大的变化。如此重大的变化之后,需要一整套新的流程和工具来执行它们。容错是目标,速度是关键,自动化是必需。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈