论文部分内容阅读
在典型的应用场景中,服务器经常会出现不可预知负载需求,在应用程序开始获得更多流量时,需要添加更多的服务器来应对额外负载,当应用程序的流量开始减少时,需要终止未充分利用的服务器。为了应对以上应用需求,云平台实现了自动伸缩服务。自动伸缩是云平台的一项关键服务,根据用户定义的多种策略(时间表、运行状态等)自动的实现IT资源扩展或收缩。该服务能够在避免IT资源过度配置的情况下保持足够的性能,同时降低管理费用。Docker是基于Linux容器(LXC)创建的一个应用容器引擎,属于操作系统层虚拟化,主要用于解决服务器应用快速构建、部署和分享的问题,能够用来实现轻量级的虚拟化。目前,云平台的自动伸缩主要是基于传统的虚拟机技术(VM),在资源利用率和启动速度以及性能上有较大的开销。本文通过研究使用Docker容器技术作为云平台的底层虚拟化技术,充分利用Docker的快速部署和高效虚拟化优势,实现基于Docker的跨主机容器集群自动伸缩系统,大大提高云平台的资源利用率,减少不必要的资源浪费,同时能够更加快速有效地应对不可预知负载需求,提供高吞吐量和低延迟的优质服务。本文的主要研究工作包括:(1)针对Docker跨主机容器集群部署存在的两个关键问题网络通信与文件共享,采用Open vSwitch虚拟交换机结合GRE隧道技术实现跨主机网络通信,采用本地镜像仓库结合NFS实现文件共享。(2)设计并实现了基于Docker的伸缩组,Haproxy作为前端负载均衡,Etcd作为配置数据库,Confd动态生成Haproxy配置脚本,实现无感知服务刷新,提高应用的容错性与可用性。(3)设计并实现了Docker集群资源监控模块,计算出伸缩组的实时资源使用率,为基于负载的自动伸缩提供触发机制。(4)利用Docker跨主机容器集群作为底层部署平台,结合Docker容器资源监控与Docker伸缩组,设计并实现了基于负载的自动伸缩系统,并对系统进行测试,验证了系统的可行性与有效性。