论文部分内容阅读
在实际环境中,服务器会经常出现不可预知的负载需求,特别是像天猫双11等活动每年都在刷新交易记录,大量的订单交易背后是突增的巨大用户访问量,此时需要快速增加集群中服务器的数量来应对额外负载,同时在流量下降时,需要停止空闲服务器以降低成本。因此构建弹性集群,实现集群服务器数量的自动伸缩显得尤为重要。弹性伸缩是云计算中的一个重要功能,而虚拟化技术是支撑云计算的重要技术基石,虚拟化的程度不同决定了云平台的架构,Docker容器技术作为操作系统级的虚拟化为云平台的架构提出了新思路,它是基于进程级隔离的,相较于目前大多数基于虚拟机技术的云平台而言,移除了客户操作系统层,能够提供更快的启停速度和更优的资源利用率。本文研究使用Docker容器技术作为底层云平台虚拟化技术,通过对集群性能的实时监控及资源的合理调度,构建弹性集群,应对不可预知的负载需求,保证云服务平台低成本、高效、稳定的运营,大大提高云平台的资源利用率,更加有效的应对网络峰值,提供高吞吐率和低延迟的服务。为此,本文实现了以下内容:(1)解决构建容器集群的两个主要问题:跨主机容器通信和文件共享。针对前者提出了三种解决方案:OVS+GRE、Flannel、直接路由,针对后者提出了构建镜像仓库解决镜像共享问题,结合DRBD构建多节点NFS网络文件系统解决数据持久化存储问题,为弹性集群提供实践环境。(2)实现了Docker弹性集群性能监控。基于OpenTSDB和Docker容器技术实现了对容器及集群节点的性能数据的采集、存储、分组聚合及展示,也为构建弹性集群中弹性伸缩组的触发机制提供了判定条件。(3)构建弹性伸缩组。使用Haproxy提供负载均衡服务、Consul提供弹性伸缩组的服务自动发现机制、Confd定期获取Consul中的服务信息并动态生成Haproxy配置文件。(4)研究并实现了多种资源调度策略。首先是构建弹性集群过程中的基于资源使用量的资源调度策略,然后为解决集群资源使用量不均匀问题实现了宿主机调度策略,最后实现了基于LMS算法的负载预测调度策略。(5)构建Docker弹性集群并对系统进行了测试,验证了弹性集群的有效性和可行性。