云操作***的虚拟化层连接方法及装置
技术领域
本发明涉及计算机领域的云计算技术,具体涉及云操作***的虚拟化层连接方法及装置。
背景技术
SSH 为 Secure Shell 的缩写,指安全外壳协议,由 IETF 的网络工作小组(Network Working Group)所制定。SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX***上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有U NIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台都可运行SSH。
当前在云操作***中通常需要通过SSH协议连接到虚拟化层(Hypervisor)完成对虚拟机的管理和任务调度,比如云操作***响应一个用户对自己虚拟机的开机指令或者是云操作***自身根据策略发起的虚拟机迁移任务等,云操作***都需要打开一个到虚拟化层的SSH会话,通过SSH向虚拟化层发送操作指令,执行完指令之后再将SSH会话关闭。
如图1所示,云操作***向虚拟化层发送一次指令调用共包含6个步骤:
1. 版本号协商,SSH目前包括 SSH1和SSH2两个版本,双方通过版本协商确定使用的版本;
2. 密钥和算法协商,SSH支持多种加密算法, 双方根据本端和对端支持的算法,协商出最终使用的算法;
3. 安全认证,客户端向服务器端发起认证请求,服务器端对客户端进行认证;
4. 会话请求阶段,认证通过后,客户端向服务器端发送会话请求;
5. 交互会话阶段,会话请求通过后,服务器端和客户端进行信息的交互;
6. 关闭会话,完成信息交互后,断开会话连接。
其中云操作***对虚拟化层的每次指令调用都要通过1至4过程建立SSH会话,在第5阶段发送指令,之后关闭SSH会话连接。
目前的云操作***与虚拟化层的连接方法,存在以下问题:
1. 云操作***通过SSH连接发出的每一条指令都需要打开和关闭一次SSH连接,由于SSH连接不能共享,在一个大规模的云平台中会造成比较大的额外开销;
2. 在并发访问比较大的情况下,在虚拟化层打开过多的SSH连接会影响虚拟化层的性能,从而影响上层虚拟机业务***的运行;
3. 在虚拟化层SSH连接数达到上限后,云操作***发出的SSH调用指令会因为无法连接而造成指令失效。
发明内容
本发明的目的在于提出一种云操作***的虚拟化层连接方法及装置,其能解决频繁打开和关闭SSH连接的问题。
为了达到上述目的,本发明所采用的技术方案如下:
云操作***的虚拟化层连接方法,其包括以下步骤:
根据云操作***提供的虚拟化层的唯一识别码,在连接池中查找与所述唯一识别码对应的连接队列;其中,所述连接池具有虚拟化层的唯一识别码与连接队列的关联信息,所述连接队列具有预设数量的SSH连接;
判断所述连接队列中是否存在空闲的SSH连接,若是,则将所述空闲的SSH连接分配给云操作***使用;若否,则进一步判断所述连接队列的SSH连接的数量是否已达到预设的最大数量,若是,则阻塞等待,直到有空闲的SSH连接分配给云操作***使用,若否,则创建一个新的SSH连接分配给云操作***使用。
优选的,该云操作***的虚拟化层连接方法还包括以下步骤:将已分配给云操作***使用的SSH连接标记为已分配;将空闲的SSH连接和云操作***使用完毕归还给连接池的SSH连接均标记为可分配。
优选的,该云操作***的虚拟化层连接方法还包括以下步骤:根据预设的时间间隔,检查连接队列中所有SSH连接的状态,将无效的SSH连接删除,并创建有效的SSH连接加入到对应的连接队列中。
优选的,该云操作***的虚拟化层连接方法还包括以下步骤:根据预设的时间间隔,检查虚拟化层的网络连接状态,若虚拟化层的网络连接状态异常,则将与发生网络连接状态异常的虚拟化层对应的连接队列删除,当发生网络连接状态异常的虚拟化层重启后,创建对应的连接队列。
优选的,该云操作***的虚拟化层连接方法还包括以下步骤:根据预设的时间间隔,检查虚拟化层的SSH服务状态,若虚拟化层的SSH服务状态异常,则将与发生SSH服务状态异常的虚拟化层对应的SSH连接删除。
本发明还提出一种云操作***的虚拟化层连接装置,其包括以下模块:
查找模块,用于根据云操作***提供的虚拟化层的唯一识别码,在连接池中查找与所述唯一识别码对应的连接队列;其中,所述连接池具有虚拟化层的唯一识别码与连接队列的关联信息,所述连接队列具有预设数量的SSH连接;
判断模块,用于判断所述连接队列中是否存在空闲的SSH连接,若是,则将所述空闲的SSH连接分配给云操作***使用;若否,则进一步判断所述连接队列的SSH连接的数量是否已达到预设的最大数量,若是,则阻塞等待,直到有空闲的SSH连接分配给云操作***使用,若否,则创建一个新的SSH连接分配给云操作***使用。
优选的,该云操作***的虚拟化层连接装置还包括标记模块:用于将已分配给云操作***使用的SSH连接标记为已分配;将空闲的SSH连接和云操作***使用完毕归还给连接池的SSH连接均标记为可分配。
优选的,该云操作***的虚拟化层连接装置还包括第一检查模块:用于根据预设的时间间隔,检查连接队列中所有SSH连接的状态,将无效的SSH连接删除,并创建有效的SSH连接加入到对应的连接队列中。
优选的,该云操作***的虚拟化层连接装置还包括第二检查模块:用于根据预设的时间间隔,检查虚拟化层的网络连接状态,若虚拟化层的网络连接状态异常,则将与发生网络连接状态异常的虚拟化层对应的连接队列删除,当发生网络连接状态异常的虚拟化层重启后,创建对应的连接队列。
优选的,该云操作***的虚拟化层连接装置还包括第三检查模块:用于根据预设的时间间隔,检查虚拟化层的SSH服务状态,若虚拟化层的SSH服务状态异常,则将与发生SSH服务状态异常的虚拟化层对应的SSH连接删除。
本发明具有如下有益效果:
通过池化管理的方法,连接池负责SSH连接生命周期的管理,SSH连接创建以后云操作***以共享的方式使用SSH连接,使用完后归还给连接池而不是关闭SSH连接,下次指令调用还可以复用,大大减少了云操作***对虚拟化层SSH连接打开和关闭的次数,有效控制云操作***对虚拟化层SSH的连接数量,降低了对虚拟化层和上层虚拟机业务***的影响,避免了因为虚拟化层SSH连接用尽而造成的调用指令失效。
附图说明
图1为现有技术的云操作***与虚拟化层连接的方法的流程图;
图2为本发明较佳实施例的云操作***的虚拟化层连接方法的流程图;
图3为本发明较佳实施例的连接池的数据结构示意图。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述。
如图2和图3所示,一种云操作***的虚拟化层连接方法,其流程如下:
云操作***向连接池发送获取SSH连接请求,所述获取SSH连接请求包括与云操作***需要操作的虚拟化层对应的唯一识别码(UUID)。
所述连接池具有虚拟化层的唯一识别码与连接队列的关联信息,所述连接队列具有预设数量的SSH连接。例如,初始化时,连接队列中,SSH连接的数量为4个。
根据云操作***提供的虚拟化层的唯一识别码,在连接池中查找与所述唯一识别码对应的连接队列。
判断所述连接队列中是否存在空闲的SSH连接(即是否具有标记为可分配的SSH连接),若是,则将所述空闲的SSH连接分配给云操作***使用;若否,则进一步判断所述连接队列的SSH连接的数量是否已达到预设的最大数量(例如,最大数量设定为6个),若是,则阻塞等待,直到有空闲的SSH连接分配给云操作***使用,若否,则创建一个新的SSH连接分配给云操作***使用。
云操作***分配到可用的SSH连接后,向虚拟化层发送调用指令,所述虚拟化层返回指令结果,以完成对所述虚拟化层的操作。当云操作***对所述虚拟化层操作完毕后,向连接池归还SSH连接。
在上述过程中,将已分配给云操作***使用的SSH连接标记为已分配;将空闲的SSH连接和云操作***使用完毕归还给连接池的SSH连接均标记为可分配,以使下次调用SSH连接时,可以根据标记进行相应操作。
为了保证SSH连接的有效性,在上述过程中,还可以启动一个线程,根据预设的时间间隔(如2秒)进行如下检查:检查连接队列中所有SSH连接的状态,将无效的SSH连接删除,并创建有效的SSH连接加入到对应的连接队列中,可以采用发送打印指令的方式,例如发送echo指令,如果指令调用失败,则判断为无效;检查虚拟化层的网络连接状态,若虚拟化层的网络连接状态异常,则将与发生网络连接状态异常的虚拟化层对应的连接队列删除,当发生网络连接状态异常的虚拟化层重启后,创建对应的连接队列,网络连接状态的检查,可以采用发送ICMP包的方式进行探测,若发送的ICMP包没有返回数据,则判断为异常;检查虚拟化层的SSH服务状态,若虚拟化层的SSH服务状态异常,则将与发生SSH服务状态异常的虚拟化层对应的SSH连接删除,SSH服务状态的检查,同上,可以采用发送打印指令的方式,如果指令调用失败,则判断为异常。
此外,连接池可与云操作***打包在一起。
本实施例还提出一种云操作***的虚拟化层连接装置,其包括以下模块:
查找模块,用于根据云操作***提供的虚拟化层的唯一识别码,在连接池中查找与所述唯一识别码对应的连接队列;其中,所述连接池具有虚拟化层的唯一识别码与连接队列的关联信息,所述连接队列具有预设数量的SSH连接;
判断模块,用于判断所述连接队列中是否存在空闲的SSH连接,若是,则将所述空闲的SSH连接分配给云操作***使用;若否,则进一步判断所述连接队列的SSH连接的数量是否已达到预设的最大数量,若是,则阻塞等待,直到有空闲的SSH连接分配给云操作***使用,若否,则创建一个新的SSH连接分配给云操作***使用。
标记模块:用于将已分配给云操作***使用的SSH连接标记为已分配;将空闲的SSH连接和云操作***使用完毕归还给连接池的SSH连接均标记为可分配。
第一检查模块:用于根据预设的时间间隔,检查连接队列中所有SSH连接的状态,将无效的SSH连接删除,并创建有效的SSH连接加入到对应的连接队列中。
第二检查模块:用于根据预设的时间间隔,检查虚拟化层的网络连接状态,若虚拟化层的网络连接状态异常,则将与发生网络连接状态异常的虚拟化层对应的连接队列删除,当发生网络连接状态异常的虚拟化层重启后,创建对应的连接队列。
第三检查模块:用于根据预设的时间间隔,检查虚拟化层的SSH服务状态,若虚拟化层的SSH服务状态异常,则将与发生SSH服务状态异常的虚拟化层对应的SSH连接删除。
对于本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及变形,而所有的这些改变以及变形都应该属于本发明权利要求的保护范围之内。