Docker 容器在Swarm集群中的迁移首先需要解决一下三方面的问题:
迁移时机的选择策略、被迁移容器的选择策略和迁移目标节点的选择策略。
2.1迁移时机的选择策略
通过容器的迁移实现集群的负载均衡,需要获取整个集群中各物理节点和容器的各项性能监控数据。不同的应用对系统资源的需求不同
,系统的负载状况也有所不同。当负载的某一项接近阈值时,系统将处于不稳定状态,这时容器迁移将会被处罚以减小物理
主机负载。用户可以根据不同需求字形设定阈值,以提高灵活性。定义某一物理节点的CPU、内存、带宽使用率的最大阈值分别为
Ucmax、Ummax、Unmax。则物理节点的负载判断流程如图4
如图4所示,本文以物理节点的CPU、内存和带宽利用率作为性能参数,以多阈值触发的方式来确定需要迁移容器的物理
节点。各个物理节点每隔时间间隔T将当前负载性能和对应阈值Ucmax、Ummax、Unmax进行比较,为了避免一个小的
瞬时峰值触发不必要的迁移,只有当负载超过设定的阈值一段时间后才出发迁移。本文采用当某个物理节点的某项负载大于设定的
阈值时,对它未来的n个负载值进行观测,如果至少有k个值也大于阈值,则会触发容器迁移。并且可以通过设定K和n的值
来决定采用激进或保守的迁移策略,对于给定的n值,小的k值会导致激进的容器迁移,而大的k值需要负载超过阈值更久的的时间,
从而导致一个更加保守的迁移策略。