由Docker大规模运行中总结的六大实践经验

由Docker大规模运行中总结的六大实践经验

2015-10-10 13:49:23

云计算 本文作者为ContainerShip联合创始人Phil Dougherty,ContainerShip是一家提供跨云服务的云服务提供商,在成立ContainerShip之前,Dougherty在上一家公司中曾经历过系统容器化和分布式化的过程,作者认为那是一段痛苦的经历,本文总结了那段过程中的经验,作为容器托管需要注意的六大事项分享给大家。

除非你在过去几年里一直生活在石器时代,否则你肯定知道容器和Docker。如果你是互联网极客的话,可能你已经准备在生产环境中使用Docker了。

[[151524]]

一年前我也在尝试跟上技术更新的步伐,但以忙于交付原生态的系统结束。我见识到的虽让我某种程度上伤痕累累,但也让我收获颇丰,更重要的是让我意识到很多很流行工具的缺点。直到我们建立起一套不错的托管技术栈的时候,我的团队已经为融合这些技术开发了很多定制代码,我对这样的系统设计和运营很不满意,于是离开那里,成为了ContainerShip的联合创始人。

显然我可能带有偏见,但我认为ContainerShip非常棒,它可以帮你节省很多时间,减少很多痛苦。当然,我不会强迫你去用它,同时我也会尽量避免将偏见带入这篇文章中。

1.太多不确定因素

微服务和面向服务的体系模式,倡导将系统分隔成许多不同的、小的、松耦合的软件模块,而不是一个单一的整体。当涉及到开发一个大型软件项目时,更容易将这些模块分给不同的团队,每个团队还可以用自己擅长的技术来开发。

这种认识甚至已经渗透到了基础设施的层面。取其精华,去其糟粕,这在理论上讲行得通,但实践过程中可能是个美丽的陷阱。

当您的托管平台是由一系列变动的部件构成,每个部件都是由开源项目或公司所维护,就需要编写大量的定制代码来将其融合起来。而这些定制代码,必须要自己维护,并且当问题发生时,你很难确定是哪一个组件的故障,可能也没人能帮得上忙,因为让团队成员学习大量的组件是非常耗时和困难的。如果API发生变化或新版本发布,你只能靠自己让它继续工作。

我最初是沿着这条路走的,一个基础设施团队,服务于数百个非常忙碌的服务,最终以痛苦告终。

2.没有高可用性

现在有几个越来越受欢迎的开源项目,完全忽略了它们master服务器(编排管理剩余集群的服务器)的高可用性。可怕的是这些公司宣称其产品是在生产环境中运行Docker的***方式。如果集群管理系统不是高可用的,没有leader election的概念,运行在一台单独的服务器上,我不能想象这可以称为生产级别的产品。无论选择何种解决方案,请确保它支持多个master的高可用性,以及通过一些选举机制来决定哪个master作为leader或者有很好的结束机制。

3.不开源

我曾因为把宝都压在一个非开源项目中,而非常痛苦。如果没有类似经历的话,可能会觉得难以置信。以Genius上所纰漏的Heroku的丑闻为例,没有人会想到,他们底层的托管平台的文件会有造假,用户则在被系统超长的响应时间所困扰。还有很多古怪事情发生在这些非开源的Docker管理系统。

4.非必要的网络需求

现在有一个趋势是通过overlay网络,为主机系统上的每个容器分配唯一的IP地址。这种方式带来的***好处是易于使用,但随之而来的是延迟和带宽限制的成本。甚至一些最专业的container编排系统也在向用户推销这种方式。在新的实现中,事情得到了改善,但是降低性能来提高易用性的方法,并不是一个好主意。

另一种方式是“端口映射”,比如所有容器都运行子啊随机端口上,通过计算获得流量的正确方向。好消息是,端口映射问题并不是真的很难,你不需要限制你的性能。使用分布式架构的目的是上提高性能,可用性和功能,不要因为错误的选择反而破坏了性能。

5.托管核心业务

几乎所有大型云供应商都发布了自己的容器生产解决方案,比如AWS的EC2 Container Service,谷歌的Google ContainerEngine,Joyent的Triton等等。不幸的是(我的观点),在容器托管服务商中运行你的容器负载,会违背容器***的一个好处:可移植性。托管服务供应商会想尽一切办法留住你。过去你没有太多选择,只能纠结于配置管理系统和多个提供商的API。现在情况已经有所转变,有了开放的和供应商无关的选择。我强烈建议不要使用一个不具有灵活性的系统,而且与供应商无关作为他们的主要目标。

另一个选择是“Docker as a Service”提供商,在他们自己的网络上提供运行所有重要的系统,而且为你提供托管主机上简单的运行独立服务器,有客户端连接到他们管理系统。但当你不想再付钱给这些供应商,或者他们的服务不再适应于你业务的增长时,你是没有办法回退到免费和开源的模式的。ContainerShip可以做到,当您在CoutainerShip中启动一个集群,系统的核心运行在您自己的服务器上,您可以随时停止运行在云服务中的工作,使用开源的核心系统。

6.强制的操作系统

我以前负责安全和PCI DSS协作,还要处理随之而来的上百的监控和审计要求,使用微型Linux操作系统是不行的,因为IDS/日志/安全软件,不适合在只能通过Docker安装和运行软件的主机上使用。可能对你来说并不是一个问题,但我希望能自由选择操作系统。为什么要用一个指定的操作系统来使用Docker?或者为什么你需要利用一个初始化系统来运行容器?我认为这是你要极力避免的紧耦合。灵活性和多种Linux操作系统的支持非常重要,尤其是对于那些希望能够继续使用某些操作系统的企业,因为他们已经在这个操作系统上投入了时间培训,有一些服务部署在上面。

总结

以上只是我的建议,但它们来自于无数个小时的研究,开发和实践中大规模运行Docker的经验。当你计划向容器和分布式系统迁移时,请记住这些经验。有时候,炒作会让你走上一条路,从现在起6个月就没办法工作了。计算领域的技术更新非常迅速,但多年沉淀下来的***实践不会改变。一定要相信你的直觉,容器并不能使一个坏的解决方案变好。

原文链接:http://chuansong.me/n/1760627

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/294910.html<

(0)
运维的头像运维
上一篇2025-05-21 07:24
下一篇 2025-05-21 07:25

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注