主要结论
实时迁移是指在客户端访问不中断的情况下移动应用程序实例。实时迁移有助于促进服务器维护工作并缓解失衡负载等场景。目前流行的实现策略包括“复制前(Pre-copy)”将状态复制到备用主机并切换流量,以及“复制后(Post-copy)”对初始状态进行复制并将残余组件置于“惰性加载(Lazy loaded)”状态下。实时迁移面临的挑战包括:迁移过程中性能略微退化,如果依赖的服务(例如大数据或其他专有服务)在备用位置不可用将难以在主机间移动。
本文介绍了一个目前 IT 界尚未全面考虑过的问题:容器的实时迁移。这种技术的工作原理如何,能解决哪些问题?由于能为应用程序生命周期管理提供更大灵活性,塑造更丰富的使用场景,业界对这一技术的需求已经有了显著提升。
实时迁移到底是什么?
容器实时迁移是指在确保客户端访问不中断的情况下在不同的物理计算机或云平台之间移动应用程序的过程。在裸机硬件基础上运行容器所需的内存、文件系统,以及网络连接都可以从源主机转移至目标主机,同时可以确保状态持续不中断。
实时迁移可以解决的问题
实时迁移技术可以解决多种问题:
硬件维护期间的停机。当系统管理员需要升级硬件时,将所有客户从一个硬件节点移动至另一个硬件节点的过程极为痛苦,很多时候甚至不可能在不停机的情况下实现。失衡的集群负载。当一个硬件节点开始过载,再平衡过程可能需要执行特定的应用程序模式以缩小可在集群中运行的工作负载的选择范围。云平台故障。目前市面上有很多云平台,有时候这些云平台也会停机,更改定价策略,或服务质量退化。大部分情况下如何轻松地将应用程序从一个云供应商迁移至另一个供应商,这是个很大的问题。
备选解决方案
上述问题可通过多种方式解决。一起分析一下人们是如何使用实时迁移之外的其他方式解决这些问题的。
计划内停机。为了对集群进行维护,应用程序的所有者可以提前公布维护窗口和可能的停机,随后关闭硬件并等待所有变动均已完成后重新开机。这种方式的问题在于停机时间会非常长。流量重路由。为了进行维护,可将每个应用程序的副本还原至另一个硬件节点,随后将流量重路由至新的副本,并将原先的副本关闭。这种方式的问题在于复杂性:应用程序必须明确针对这种情况进行设计才能实现高可用性和数据同步。此外这种方式需要使用更多的硬件资源。微服务。将应用程序服务进