构建meteor应用程序_构建容器化应用程序的8个最佳实践

构建meteor应用程序

容器是在公共云和私有云中部署应用程序的主要趋势。 但是容器到底是什么,为什么它们成为流行的部署机制,以及您将如何修改应用程序以针对容器化环境进行优化呢?

什么是容器?

容器背后的技术历史悠久,始于2000年的SELinux和2005年的Solaris区域。如今, 容器是包括SELinux,Linux名称空间和控制组在内的多个内核功能的组合,提供了最终用户进程,网络和文件系统的隔离空间。

他们为什么如此受欢迎?

容器最近被广泛采用的主要原因是开发了旨在使它们更易于使用的标准,例如Docker映像格式和分发模型。 该标准要求不可变的图像,它们是容器运行时的启动点。 不可变的映像保证了开发团队发布的映像是经过测试并部署到生产环境中的映像。

容器提供的轻量级隔离为应用程序组件创建了更好的抽象。 在容器中运行的组件不会像在虚拟机上直接运行那样相互干扰。 可以防止它们彼此耗尽系统资源,并且除非它们共享持久卷,否则不会阻止尝试写入相同文件的尝试。 容器已帮助实现日志记录和度量标准收集等实践的标准化,并且它们允许物理和虚拟机上的多租户密度提高,所有这些都降低了部署成本。

如何构建容器就绪的应用程序?

不必将应用程序更改为在容器中运行。 主要的Linux发行版都具有基本映像,可以运行在虚拟机上运行的任何内容。 但是容器化应用程序的总体趋势是遵循一些最佳实践:

1.实例是一次性的

您的应用程序的任何给定实例都不需要仔细保持运行状态。 如果一个运行一堆容器的系统出现故障,您希望能够启动分布在其他可用系统上的新容器。

2.重试而不是崩溃

当应用程序中的一项服务依赖于另一项服务时,当另一项服务不可访问时,该服务不应崩溃。 例如,您的API服务正在启动,并且检测到数据库不可访问。 您可以设计它来重试连接,而不是失败并拒​​绝启动。 当数据库连接断开时,API可以响应503状态代码,告知客户端该服务当前不可用。 应用程序应该已经遵循了这种做法,但是,如果您在实例是一次性的容器化环境中工作,那么对它的需求就变得更加明显。

3.持久性数据很特殊

使用写时复制(COW)文件系统基于共享映像启动容器。 如果容器正在运行的进程选择写出文件,则只有在容器存在的情况下,这些写操作才会存在。 删除容器后,COW文件系统中的该层也将删除。 为容器提供一个已挂载的文件系统路径,该路径将持续到容器的使用寿命之外,这需要额外的配置和物理存储的额外成本。 明确定义持久性存储的抽象可以促进实例是一次性的。 具有抽象层还可以使容器编排引擎处理将持久卷安装和卸载到需要它们的容器上的复杂过程。

4.使用stdout不记录文件

您现在可能在想,如果持久性数据很特殊,那么我该如何处理日志文件? 容器运行时和业务流程项目采用的方法是,进程应改为写入stdout / stderr ,并具有用于归档和维护容器日志的基础结构

5.秘密(和其他配置)也很特殊

切勿将密码,密钥和证书等机密数据硬编码到图像中。 当您的应用程序与开发服务,测试服务或生产服务通信时,机密通常是不同的。 大多数开发人员无法访问生产机密,因此,如果将机密烘焙到映像中,则必须创建一个新的映像层以覆盖开发机密。 此时,您将不再使用开发团队创建并经过质量工程(QE)测试的同一图像,并且已经失去了不变图像的好处。 相反,应将这些值抽象到容器启动时注入的环境变量或文件中。

6.不要假设服务在同一地点

在协调的容器环境中,您希望允许协调器将您的容器发送到当前最适合的节点。 最适合可能意味着很多事情:它可能基于当前拥有最大空间的任何节点,容器所请求的服务质量,容器是否需要持久卷等,这很可能意味着您的前端,API,数据库容器最终都位于不同的节点上。 虽然可以将API容器强制设置到每个节点(请参阅Kubernetes中的DaemonSets ),但应将其保留给执行诸如监视节点本身之类的任务的容器。

7.规划冗余/高可用性

即使您没有足够的负载来要求进行HA设置,也不应以阻止运行它的多个副本的方式编写服务。 这将允许您使用滚动部署,这使得轻松地将负载从一个节点转移到另一个节点上,或从服务的一个版本升级到下一个版本而无需花费任何停机时间。

8.实施准备和活跃性检查

对于应用程序来说,通常有一定的启动时间才能响应请求,例如,需要填充内存数据高速缓存的API服务器。 容器编排引擎需要一种方法来检查您的容器已准备好处理请求。 为新容器提供就绪检查,可以滚动部署以使旧容器保持运行状态,直到不再需要它为止,从而防止停机。 同样,活动性检查是业务流程引擎继续检查容器是否处于健康状态的一种方式。 由应用程序创建者决定容器对其健康或“存活”意味着什么。 不再使用的容器将被杀死,并在该位置创建一个新容器。

想了解更多?

我将在10月的Grace Hopper庆祝计算妇女大会上,来看看我的演讲: 应用程序容器化:什么,为什么和如何 。 今年不去GHC吗? 然后在OpenShiftKubernetes项目站点上阅读有关容器,业务流程和应用程序的信息。

翻译自: https://opensource.com/life/16/9/8-best-practices-building-containerized-applications

构建meteor应用程序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值