论文部分内容阅读
互联网时代的到来,给人们的工作和生活带来巨大的改变。庞大的在线用户数、各种各样的网络服务给企业带来了庞大的流量和经济效益,同时也给支撑在线服务的集群带来了巨大的负担。目前,基于云环境的集群大多数采用虚拟机来构建,对其的伸缩策略也多属基于阈值的响应式伸缩方法。当负载过大时,即使是搭建在云环境里的集群可以动态的进行伸缩,用户的请求响应时间依然会变长。而当负载过小的时候,又会有不少机器空闲,造成不必要的浪费。如何使集群在进行伸缩调整的时候,尽可能地减少用户等待的时间和伸缩造成的开销,这已成为相关企业不得不考虑的两个问题。针对这两个问题,本文提出了一种基于Docker的混合式集群伸缩方法。首先,调研了国内外关于伸缩方法的研究现状,确定了Docker容器与虚拟机混合部署集群的可行性。在概括了伸缩方法具备的三个理论要素之后,研究了请求响应时长和开销大的成因。根据常见的云环境的计费规则,归纳出云环境下集群的计费公式。其次,提出综合使用基于阈值的响应式和预测式伸缩方法。工作负载属于时序序列,且具有自相似性,可采用自回归模型对未来的工作负载进行预测解决伸缩的时机问题。通过对工作负载变化的特征分析,利用工作负载变化率判断其类型,以便决定选择虚拟机或者Docker容器伸缩,解决了伸缩的对象问题。最后对集群上的服务采用排队论进行建模,通过当前工作负载量计算出伸缩所需的服务数量,解决了伸缩的数量问题。然后,根据前面的研究结果,在明确了设计目标后,使用伪代码对扩展算法和收缩算法进行描述。在此基础上,设计并实现了自动伸缩控制器,它包括监控器、建模器、报警器和伸缩器四部分,能够按照本文方法对目标集群自动进行伸缩调整。最后,对本文提出的方法进行验证测试。围绕其设计及应用场景,实现了测试所需的负载发生器,并设计了典型的周期性负载和突发式负载供测试使用。经过与纯响应式伸缩方法的比较,验证了本文伸缩方法的有效性。