APP下载

一种云操作系统的虚拟化层连接方法研究

2017-07-14谢浩安张国强陈琴

电脑知识与技术 2017年17期

谢浩安 张国强 陈琴

摘要:该文提出了一种新云操作系统的虚拟化层连接方法,通过对云操作系统的虚拟化层的连接实行池化管理,形成连接池负责SSH连接生命周期的管理,SSH连接创建以后云操作系统以共享的方式使用SSH连接,使用完后归还给连接池而不是关闭SSH连接,下次指令调用还可以复用,减少云操作系统对虚拟化层连接打开和关闭的次数。

关键词:云操作系统;虚拟化层;连接池;池化管理;SSH

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)17-0037-02

1概述

随着互联网时代的信息与数据的快速增长,现代信息化建设对信息量的规模化处理及IT架构的灵活扩展要求越来越高,传统的IT架构动态扩展性差、IT资源利率低及信息化建设的投人成本高等制约了现代信息化的发展。在这种情况下,为了快速实现IT架构的可扩展性及节约建设成本,云计算的概念被提了出来。云计算是基于互联网的计算,能够向各种互联网应用提供硬件服务、基础架构服务、平台服务、软件服务、存储服务等的一种新型的服务计算模型。

云操作系统是以云计算、云存储技术作为支撑的操作系统,是云计算数据中心的整体管理运营系统。它构架在服务器、存储、网络等基础硬件资源和服务器操作系统、中间件、数据库等基础软件之上的、管理海量的基础硬件、软件资源的云平台综合管理系统。同时,云操作系统能够计算能够实现对各类异构软硬件基础资源的兼容,更要实现资源的动态流转。在一个绿色云的框架中,虚拟机的高度与管理是绿色云数据中心的重要组成部分。那么,云操作系统要求实现对虚拟机的快速安全认证和连接,从而保证云操作系统对虚拟机的调度、迁移等一系列的工作。SSH(Secure Shell)协议专为远程登录会话和其他网络服务提供安全性的协议,它是一种在两个主机之间通加密和身份验证机制提供安全连续的协议。

2云操作系统的虚拟化层连接现状分析

2.1现有云操作系统与虚拟化层连接的方法

当前在云操作系统中通常需要通过SSH协议连接到虚拟化层(Hypervisor)完成对虚拟机的管理和任务调度。例如云操作系统响应一个用户对自己虚拟机的开机指令或者是云操作系统自身根据策略发起的虚拟机迁移任务等,云操作系统都需要打开一个到虚拟化层的SSH会话,通过SSH向虚拟化层发送操作指令,执行完指令之后再将SSH会话关闭。

如图1所示,云操作系统向虚拟化层发送一次指令调用共包含6个步骤:

1)版本号协商,若当前SSH包括了SSH1和SSH2两个版本,那么双方通过版本协商来确定使用的版本;

2)密钥和算法协商,SSH支持多种加密算法,双方根据本端和对端支持的算法,协商出最终使用的算法;

3)安全认证,客户端向服务器端发起认证请求,服务器端对客户端进行认证;

4)会话请求阶段,认证通过后,客户端向服务器端发送会话请求;

5)交互会话阶段,会话请求通过后,服务器端和客户端进行信息的交互;

6)关闭会话,完成信息交互后,断开会话连接。

由上述步骤可知,云操作系统对虚拟化层的每次指令调用都要通过1至4过程建立SSH会话,在第5阶段发送指令,之后关闭SSH会话连接。

2.2当前的连接方式存在的问题

根据上文的云操作系统与虚拟化层的连接方法分析,可知当前的连接方式存在以下问题:

1)云操作系统通过SSH连接发出的每一条指令都需要打开和关闭一次SSH连接,由于SSH连接不能共享,在一个大规模的云平台中会造成比较大的额外开销;

2)在并发访问比较大的情况下,在虚拟化层打开过多的SSH连接会影响虚拟化层的性能,从而影响上层虚拟机业务系统的运行;

3)在虚拟化层SSH连接数达到上限后,云操作系统发出的SSH调用指令会因为无法连接而造成指令失效。

那么,针对目前存在的问题,本文提出一种云操作系统的虚拟化层连接方法及装置,其能解决频繁打开和关闭SSH连接的问题,其设计如下文。

3一种虚拟化层连接方法设计

3.1虚拟化层连接方法

根据云操作系统提供的虚拟化层的唯一识别码,在连接池中查找与所述唯一识别码对应的连接队列;其中,所述连接池具有虚拟化层的唯一识别码与连接队列的关联信息,所述连接队列具有预设数量的SSH连接。

如上图所示,判断所述连接队列中是否存在空闲的SSH连接,若是,则将所述空闲的SSH连接分配给云操作系统使用;若否,则进一步判断所述连接队列的SSH连接的数量是否已达到预设的最大数量,若是,则阻塞等待,直到有空闲的SSH连接分配给云操作系统使用,若否,则创建一个新的SSH连接分配给云操作系统使用。本文提出的连接方法,还将优先处理如下步骤如下:

1)将已分配给云操作系统使用的SSH连接标记为已分配;将空闲的SSH连接和云操作系统使用完毕归还给连接池的SSH连接均标记为可分配。

2)根据预设的时间间隔,检查连接队列中所有SSH连接的状态,将无效的SSH连接删除,并创建有效的SSH连接加入到对应的连接队列中。

3)根據预设的时间间隔,检查虚拟化层的网络连接状态,若虚拟化层的网络连接状态异常,则将与发生网络连接状态异常的虚拟化层对应的连接队列删除,当发生网络连接状态异常的虚拟化层重启后,创建对应的连接队列。

4)根据预设的时间间隔,检查虚拟化层的SSH服务状态,若虚拟化层的SSH服务状态异常,则将与发生SSH服务状态异常的虚拟化层对应的SSH连接删除。

3.2连接池的数据结构设计

云操作系统向连接池发送获取SSH连接请求,所述获取SSH连接请求包括与云操作系统需要操作的虚拟化层对应的唯一识别码(UUID)。

所述连接池具有虚拟化层的唯一识别码与连接队列的关联信息,所述连接队列具有预设数量的SSH连接。例如,初始化时,连接队列中,SSH连接的数量为4个。

根据云操作系统提供的虚拟化层的唯一识别码,在连接池中查找与所述唯一识别码对应的连接队列。

判断所述连接队列中是否存在空闲的SSH连接(即是否具有标记为可分配的SSH连接),若是,则将所述空闲的SSH连接分配给云操作系统使用;若否,则进一步判断所述连接队列的SSH连接的数量是否已达到预设的最大数量(例如,最大数量设定为6个),若是,则阻塞等待,直到有空闲的SSH连接分配给云操作系统使用,若否,则创建一个新的SSH连接分配给云操作系统使用。

云操作系统分配到可用的SSH连接后,向虚拟化层发送调用指令,所述虚拟化层返回指令结果,以完成对所述虚拟化层的操作。当云操作系统对所述虚拟化层操作完毕后,向连接池归还SSH连接。

在上述过程中,将已分配给云操作系统使用的SSH连接标记为已分配;将空闲的SSH连接和云操作系统使用完毕归还给连接池的SSH连接均标记为可分配,以使下次调用SSH连接时,可以根据标记进行相应操作。

为了保证SSH连接的有效性,在上述过程中,还可以启动一个线程,根据预设的时间间隔(如2秒)进行如下检查:检查连接队列中所有SSH连接的状态,将无效的SSH连接删除,并创建有效的SSH连接加入到对应的连接队列中;检查虚拟化层的网络连接状态,若虚拟化层的网络连接状态异常,则将与发生网络连接状态异常的虚拟化层对应的连接队列删除,当发生网络连接状态异常的虚拟化层重启后,创建对应的连接队列,网络连接状态的检查,可以采用发送ICMP包的方式进行探测,若发送的ICMP包没有返回数据,则判断为异常;检查虚拟化层的SSH服务状态,若虚拟化层的SSH服务状态异常,则将与发生SSH服务状态异常的虚拟化层对应的SSH连接删除,SSH服务状态的检查,可以采用发送空白指令的方式,如果空白指令调用失败,则判断为异常。

4结论

本文通过对云操作系统的连接池的池化,实现连接池负责SSH连接生命周期的管理。在SSH连接创建以后云操作系统以共享的方式使用SSH连接,使用完后归还给连接池而不是关闭SSH連接,下次指令调用还可以复用,大大减少了云操作系统对虚拟化层SSH连接打开和关闭的次数,从而有效控制云操作系统对虚拟化层SSH的连接数量,降低了对虚拟化层和上层虚拟机业务系统的影响,避免了因为虚拟化层SSH连接用尽而造成的调用指令失效。