容器震动了IT界,其轻量级的虚拟化,更高的密度,弹性和快速配置,为PaaS和IaaS云服务提供了全新的虚拟化解决方案。
在公共云,私有云或混合云中使用容器可为用户在负载峰值,维护时段或数据中心出现可用性问题时放置工作负载和更改位置提供更多自由。容器的尺寸比虚拟机(VM)小得多,因此将它们从一个云移动到另一个云容易得多。这使得应用程序在云设置中更具移动性,易于管理,节省了DevOps( Development&Operations)团队的时间和精力。
在这个由三部分组成的系列博客中,我们将探讨在Jelastic平台上实现Docker模板的主要优点。我们将描述Jelastic 自2011年以来如何使用容器,以及为什么我们相信我们的解决方案提供了先进的,可能是目前市场上最好的容器编排的原因。
Jelastic Cloud中的容器系统与微服务体系结构模式并行不悖。一个大的,复杂的,企业级的应用程序中的每个环境代表一个服务,可以分别调整,配置和监视。如果在项目中需要进行任何更改,则可以轻松地在特定服务中进行更改,而无需重新构建和部署整个应用程序(这是单一应用程序的需求)。有了这样的结构,应用程序甚至可以由不同的团队来管理,每个团队只负责某个部分。
最近微服务技术之一是Docker,一种用于打包应用程序并将其部署在容器中的技术。微服务和Docker成为完美搭配的事实启发了我们在Jelastic中实现Docker模板支持。
Docker基本上解决了应用程序的组装,交付和可移植性问题,而Jelastic则为托管应用程序提供编排和管理。为了满足企业生产应用的需求,Jelastic在高度安全和稳定的Virtuozzo容器之上提供了Docker模板支持。
Parallels Virtuozzo Containers是一款面向大型同类服务器环境和数据中心的操作系统级虚拟化产品。Parallels Virtuozzo Containers在Parallels的前母公司SWsoft下首次发布。Linux版本于2001年发布,而Windows版本于2005年发布。
目前Docker默认使用LXC和libcontainer来创建Docker容器。这些容器基于名称空间(namespace)和cgroups工作。Jelastic中的容器应用了相同的内核隔离机制。这就是为什么我们可以确保Docker标准所要求的所有进程都通过了Docker实现提供的适当“本地”方式进行覆盖。
通过使用Jeopard实现Docker,用户现在可以在使用公共Docker Hub Registry或基于Quay Enterprise Registry 的私有注册表安装任何堆栈,应用程序或系统时拥有更多的灵活性和选项。当请求安装一个新的Docker时,它被放置到一个特殊的共享缓存中(为了使其更容易和快速地进行进一步的安装),之后作为独立且隔离的Virtuozzo容器分布在硬件节点中。因此,每个Docker都在安全容器虚拟化中进行配置,可以使用完全root的SSH访问或通过Jelastic控制面板轻松进行管理。
另外,Jelastic技术在密度,管理工具,恢复等方面提供了改进及额外的功能。下面介绍Jelastic Cloud托管的Docker化应用程序的一些优点。
在我们的系列博客的第一部分,我们指出在Jelastic中使用Docker的两个重要优势:高可用性和实时迁移。
高可用性
Jelastic在两个层面上为微服务提供高可用性:
- 应用拓扑
- 容器虚拟化
应用程序内的负载平衡通过跨多个组件分配工作负载来确保高可用性。使用具有负载平衡的多个组件,而不是单个组件,可以通过冗余来提高可靠性。Jelastic使用两种类型的负载均衡:TCP负载均衡和HTTP负载均衡。
另外,Jelastic提供了在Web服务器实例之间使用多播会话复制的能力。在集群环境中启用会话复制,整个会话数据被复制在副本实例中。会话复制提供高可靠性,可伸缩性和完美的故障转移功能。
Jelastic Cloud可让您轻松设置两种不同类型的数据库复制(主从式和主控式),以解决许多性能不同的问题,支持数据库备份,减轻系统故障等等。
另外,集成的软件定义存储(SDS)专门为提高集群中的容器虚拟化的可用性而设计。具有内置复制和灾难恢复功能的分布式存储可确保在硬件节点故障的情况下实现快速自动恢复。换句话说,如果任何硬件节点失效,所有的容器将在其他现有的硬件节点上自动恢复。
实时迁移和离线迁移
这是企业级云平台非常重要的关键功能之一。云服务提供商可以轻松地将Docker化应用程序的容器从一台物理服务器迁移到另一台物理服务器,而无需停机,这是保持整体性能和质量的关键要求。这项功能提高了硬件维护期间的运营效率,提供了更好的负载平衡和数据中心利用率,并允许将客户转移到功能更强大的节点,而不会中断服务。
Jelastic独特的自动垂直缩放使用实时迁移来确保应用程序可以在服务器内进行扩展,而无需停机。随着应用程序在服务器中的扩展,其他应用程序可以自动迁移到另一台服务器以腾出空间。实时迁移允许Jelastic为应用程序提供所有必需的资源,而无需重新启动容器并导致应用程序停机。
另外,在硬件的维护或其他有计划的停机期间,实时迁移功能可以将容器从一个硬件节点自动撤出到另一个硬件节点。这使Jelastic平台成为托管有状态应用程序的正确选择。在实时迁移过程中,应用程序可以不停机工作,并获得所需的资源。
此外,迁移容器的能力为DevOps团队提供了更多不同的,且在许多情况下更有效的Docker化应用程序生命周期流。在传统方法中要经历交付生命周期的所有步骤,所有管道交付阶段都应连接到Hub注册中心。每一次您需要重新创建容器,有时甚至是整个多容器环境。换句话说,您在迁移过程中——Dev => Test,Test => Stage,Stage => Prod——每次重新打包和重建容器。在Jelastic中,通过容器的实时或离线迁移,您可以轻松地将应用程序从一个生命周期阶段迁移到另一个生命周期阶段,无需重新构建容器并重新部署应用程序,而且无需在初始化之后将每个阶段连接到Hub Registry Docker配置。
这些应用程序生命周期工作流程需要更深入的分析和说明,我们将编写一篇单独博客文章来探讨与此主题相关的不同问题。
高可用性和实时迁移只是在Jelastic平台上使用Docker化应用程序时两个主要好处。在我们的下一篇发文中,您将了解到更多内容有关于隔离和安全性,Docker容器在物理服务器之间的智能分发,服务器资源的高密度和最大利用率以及您在我们的系统中获得的休眠和重复数据删除技术。
你已经尝试过基于Jelastic的Docker吗?请在下面的评论中提供您的反馈。
容器镜像服务数据迁移微服务容器镜像服务数据迁移微服务