由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

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

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