一种大规模集群环境中获取部署配置信息的方法与流程

文档序号:17489125发布日期:2019-04-23 20:16阅读:172来源:国知局
一种大规模集群环境中获取部署配置信息的方法与流程

本发明涉及云计算技术领域,尤其涉及一种大规模集群环境中获取部署配置信息的方法。



背景技术:

随着云计算业务的快速发展,云计算业务从原先单节点服务部署到现在大规模集群部署,从原先无需配置到当前基于集群的重复配置,从部署业务场景单一到现在越发复杂的场景。因此,在对大规模集群环境中对节点进行部署的场景下,对于获取轻配置的节点(甚至无配置的节点)的部署配置信息的需求越发迫切,特别是如何从大规模集群环境中快速地从节点中获取配置所需的信息的能力,对减少运维人员的人力投入具有重要意义。

众所周知,在云计算平台的组建中,集群部署所需的配置信息的获取是十分繁琐和容易出错的。目前,大规模集群环境中对节点进行部署的主流技术是基于mirantisfuel。待部署节点通过网卡启动后,被fuel(一种开源的针对openstack的部署和管理工具)的pxe(预启动执行环境)发现并灌入bootstrap镜像启动。bootstrap中有一个特别的脚本叫做nailgun-agent.rb,它能够收集该节点的硬件信息并通过restapi提交给nailgun,nailgun会保存到数据库。

mirantis以容器形式提供由kubernetes编排的opencontrail。bootstrap是美国公司的设计师markotto和jacobthornton合作基于html、css、javascript开发的简洁、直观、强悍的前端开发框架,使得web开发更加快捷。

此外,申请人经过检索后发现诸如公开号为cn1848787a的中国发明专利以及授权公告号us7114065b2的美国专利等类似现有技术中,均需要支持pxe才能实现对一个外部装置、节点或者计算集群进行配置。

由此可见,在现有技术中在大规模集群环境中,为了获取部署配置信息具有一定局限性;同时,现有技术也存在配置信息无法定制的缺点,且仅针对openstack集群,对其他产品无法兼容。

有鉴于此,有必要对现有技术中的大规模集群环境中获取部署配置信息的方法予以改进,以解决上述问题。



技术实现要素:

本发明的目的在于揭示一种大规模集群环境中获取部署配置信息的方法,用以减少人工收集并手动录入,实现真正的无人值守式获取主机的配置信息,同时确保部署信息的准确性与可定制性。

为实现上述目的,本发明提供了一种大规模集群环境中获取部署配置信息的方法,包括以下步骤:

s1、部署节点对待部署集群的网段进行批量存活扫描,以提取待部署集群中存活的主机;

s2、根据telnet协议对存活的主机的ssh端口进行探测,以确定存活的主机的系统类型;

s3、基于ssh协议向存活的主机的ssh端口执行登录检测;

s4、通过运行于部署节点中的脚本管理工具获取主机的配置信息,并将主机的配置信息保存至字典变量;

s5、对字典变量中主机的配置信息封装成轻量级数据交换格式文件,并保存至部署节点的数据库中。

作为本发明的进一步改进,所述部署节点被配置为虚拟机、容器、运行虚拟机的容器、服务器或者安装镜像文件的移动计算装置;

所述待部署集群为负载均衡集群、高可用集群、高性能计算集群、ceph分布式集群或者rabbitmq镜像集群。

作为本发明的进一步改进,所述步骤s1还包括:将存活的主机所具有的ip地址添加到存活主机列表变量。

作为本发明的进一步改进,所述步骤s1中部署节点对待部署集群的网段进行批量存活扫描具体为:部署节点通过nmap命令、ncat命令、mtr命令、icpm协议或者shell脚本对待部署集群的网段进行批量存活扫描。

作为本发明的进一步改进,所述步骤s4中的配置信息由主机名、操作系统版本、主机运行时间、物理核数、处理器版本、内存规格、交换分区规格、网络地址与硬盘规格共同描述。

作为本发明的进一步改进,所述脚本管理工具为paramiko模块,且步骤s4具体为:

部署节点中导入paramiko模块,以通过paramiko模块登录至主机;

基于发送指定的配置种类的返回信息获取配置种类所对应的配置信息;

将返回信息保存至标准输入变量、标准输出变量及标准错误输出变量中;

读取标准输出变量的返回信息以获取到主机的配置信息;

将主机的配置信息保存至字典变量中;其中,

所述paramiko模块登录主机所依据的参数由主机地址、端口、用户名、密码及私钥共同限定。

作为本发明的进一步改进,所述脚本管理工具为pexpect模块,且步骤s4具体为:

部署节点中导入pexpect模块,以通过pexpect模块登录至主机;

基于发送指定的配置种类的返回信息获取配置种类所对应的配置信息;

将返回信息保存至标准输入变量、标准输出变量及标准错误输出变量中;

读取标准输出变量的返回信息以获取到主机的配置信息;

将主机的配置信息保存至字典变量中;其中,

所述pexpect模块登录主机所依据的参数由主机地址、端口、用户名、密码及私钥共同限定。

作为本发明的进一步改进,所述步骤s5中,对字典变量中主机的配置信息封装成轻量级数据交换格式文件之后,还包括:对轻量级数据交换格式文件基于md5进行数据校验。

作为本发明的进一步改进,确定存活的主机的系统类型具体为:通过telnet协议与存活的主机建立会话,将存活的主机区分为linux系统的存活主机与非linux系统的存活主机。

与现有技术相比,本发明的有益效果是:

在本发明中,部署节点通过脚本管理工具采用主动方式获取主机的配置信息,不需要在待部署集群环境中存活主机中安装第三方服务、插件,实现了批量远程且自动化地获取部署配置信息,并确保了待部署集群中的主机的部署信息的准确性与可定制性;同时,不需要运维人员的参与及干预,降低了运维人员的人力成本投入。

附图说明

图1为本发明一种大规模集群环境中获取部署信息的方法的流程图;

图2为本发明所示出的一种大规模集群环境中获取部署信息的方法在一个完整的部署信息获取过程中的拓扑图。

具体实施方式

下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。

实施例一

在详细阐述本发明之前,对本发明所应用的场景进行说明与必要的解释。参图2所示,待部署集群20中存在host01、host02、host03、host04至hosti等i个主机(host)。其中,i取大于或者等于1的正整数。在i个主机中,可能存在存活的主机,也可能存在非存活的主机。

在本申请中,所谓“存活”与“非存活”的区分标准包括但不限于:是否有独立的ip、是否可以与部署节点10通过脚本管理工具建立会话、是否能够独立运行某个程序功能,并作为待部署集群在部署完毕后的一个功能性组件(例如负载均衡器或者虚拟交换机等等)。同时,“主机的配置信息”与“主机的部署配置信息”具等同技术含义。

参图1及图2所示出的本发明一种大规模集群环境中获取部署配置信息的方法(以下简称方法)的一种具体实施方式。该方法包括以下步骤:

首先,执行步骤s1、部署节点10对待部署集群20的网段进行批量存活扫描,以提取待部署集群20中存活的主机。具体的,部署节点10被配置为虚拟机(vm)、容器(container)、运行虚拟机的容器、服务器或者安装镜像文件的移动计算装置。待部署集群20为负载均衡集群、高可用集群、高性能计算集群、ceph分布式集群或者rabbitmq镜像集群。部署节点10受控于管理员或者运维人员1。

对于一些可靠性要求较高的场景需要对队列中的消息也同步到所以节点。因此,选用rabbitmq镜像集群时,可使用rabbit镜像功能,需要基于rabbitmq策略来实现,政策是用来控制和修改群集范围的某个vhost队列行为和exchange行为,在待部署集群20中任意节点启用策略,策略会自动同步到待部署集群20中的其他后期被判定为符合系统类型且存活的主机。为简化描述,在本申请中,待部署集群20中的所有主机(host)可选用服务器。当然,该服务器可以是物理服务器,也可以是虚拟服务器。

优选的,在本实施方式中,步骤s1执行完毕之后,并在开启步骤s2之前,步骤s1还包括:将存活的主机所具有的ip地址添加到存活主机列表变量(即alive_host列表变量)。步骤s1中部署节点10对待部署集群20的网段进行批量存活扫描具体为:部署节点10通过nmap命令、ncat命令、mtr命令、icpm协议或者shell脚本对待部署集群20的网段进行批量存活扫描,从而对待部署集群20中的每个主机进行网络扫描与嗅探。

更具体的,当使用nmap命令的场景下具体为,部署节点10使用“nmap-n-sp-peip”命令实现,以判断待部署集群20中的哪个或者哪些主机是存活的主机(即alive_host),从而将每个存活的主机的主机地址保存至存活主机列表变量中,并开启步骤s2的执行。

然后,执行步骤s2、根据telnet协议对存活的主机的ssh端口进行探测,以确定存活的主机的系统类型。优选的,步骤s2中,确定存活的主机的系统类型具体为:通过telnet协议与存活的主机建立会话,将存活的主机区分为linux系统的存活主机与非linux系统的存活主机。区分存活的主机的系统类型,可提高后期在待部署集群20中存活的主机上进行程序、应用、插件部署时的兼容性,从而实现引导不同的服务部署在正确的操作系统中。需要说明的是,在本申请中,待部署集群20中的主机(不管是存活的主机还是非存活的主机)的系统类型均特指操作系统。因此,通过上述技术手段,可显著地提高后期对待部署集群20中的存活的主机进行落地部署时的可靠性与系统兼容性。

同时,在步骤s2中,确定存活的主机的系统类型的实现手段具体为:基于ssh协议进行访问获取待部署集群20中每个存活的主机,读取alive_list列表变量,使用–––“telnetipport”命令,对alive_list列表变量中的存活的主机逐一进行系统类型的探测,过滤出获得具备ssh服务的操作系统主机地址,并保存到alive_ports列表变量中。

然后,执行步骤s3、基于ssh协议向存活的主机的ssh端口执行登录检测。具体的,部署节点10作为主动获取部署配置信息的一方主体,可通过基于ssh协议,并依赖主机地址、端口、用户名、密码及私钥执行登录到存活的主机的操作,从而为获取待部署集群20中的存活的主机的硬件信息及系统信息进行准备。若使用主机地址(ip)、端口(port)、用户名(username)、密码(password)及私钥(key_filename)的进行登录,登录返回值为true,则证明部署节点10与某个或者某些存活的主机建立登录成功的事件,从而保证部署节点10与待部署集群20中的某个或者某些个存活的主机建立可靠会话。

然后,执行步骤s4、通过运行于部署节点10中的脚本管理工具获取主机的配置信息,并将主机的配置信息保存至字典变量(result_dict变量)。具体的,步骤s4中的配置信息由主机名、操作系统版本、主机运行时间、物理核数、处理器版本、内存规格、交换分区规格、网络地址与硬盘规格共同描述;具体的,主机的配置信息的各个参数参表一所示。

表一

在本实施例中,该脚本管理工具为paramiko模块,且步骤s4具体为以下子步骤:

子步骤s41、部署节点10中导入paramiko模块,以通过paramiko模块登录至主机(当然,于此场景中的主机应该是存活的且可以被部署节点10进行访问并建立会话的主机)。子步骤s41实现的主要代码如下所示:

子步骤s42、基于发送指定的配置种类的返回信息获取配置种类所对应的配置信息。子步骤s42实现的主要代码如下所示:

若返回true值,则证明部署节点10登陆主机成功。

子步骤s43、将返回信息保存至标准输入变量(stdin)、标准输出变量(stdout)及标准错误输出变量(stderr)中。子步骤s43实现的主要代码如下所示:

defexec_cmd(self,command)

stdin,stdout,stderr=self.ssh.exec_command(command,timeout=self.timeout)

子步骤s44、读取标准输出变量(stdout)的返回信息以获取到主机的配置信息。该子步骤s44实现的主要代码如下所示:

returncode=stdout.channel.recv_exit_status()

子步骤s45、将主机的配置信息保存至字典变量(result_dict变量)中;其中,所述paramiko模块登录主机所依据的参数由主机地址、端口、用户名、密码及私钥共同限定。需要得到的部署配置信息的数据保存在标准输出变量(stdout)中,使用result_dict变量从标准输出变量(stdout)中提取所需的部署配置信息的数据。该子步骤s45实现的主要代码如下所示:

依次执行表一所示出的配置信息中的各个选项,以获得某个存活的主机所有部署配置信息。至此,步骤s4执行完毕。

最后,执行步骤s5、对字典变量中主机的配置信息封装成轻量级数据交换格式文件,并保存至部署节点的数据库11中。该数据库11在逻辑上可挂载至部署节点10,也可运行于部署节点10中。数据库11的类型可以是关系型数据库(例如mysql),也可是非关系型数据库(例如nosql)。轻量级数据交换格式文件既可以是json格式(例如,host_info.json),也可以是xml格式,也可是txt格式或者系统日志文件格式。在步骤s5中,对字典变量(result_dict变量)中主机的配置信息封装成轻量级数据交换格式文件之后,还包括:对轻量级数据交换格式文件基于md5进行数据校验,从而保证最终得到的部署配置信息的完整性。

实施例二

本实施例与实施一相比,其主要区别在于,在本实施例中,步骤s4中所选用的脚本管理工具为pexpect模块,且步骤s4具体为以下子步骤:

子步骤s41a、部署节点中导入pexpect模块,以通过pexpect模块登录至主机。子步骤s41a实现的主要代码如下所示:

importpexpect

子步骤s42a、基于发送指定的配置种类的返回信息获取配置种类所对应的配置信息。子步骤s42a实现的主要代码如下所示:

defrun_cmd(hostname,port=22,username='root',password,command)

子步骤s43a、将返回信息保存至标准输入变量、标准输出变量及标准错误输出变量中。子步骤s43a实现的主要代码如下所示:

ssh_cmd="ssh-p{port}-ostricthostkeychecking=no{username}@{hostname}{command}".fomat(hostname=hostname,port=port,username=username,command=command)

子步骤s44a、读取标准输出变量的返回信息以获取到主机的配置信息。

子步骤s45a、将主机的配置信息保存至字典变量中;其中,所述pexpect模块登录主机所依据的参数由主机地址、端口、用户名、密码及私钥共同限定。子步骤s44a及子步骤s45a实现的主要代码如下所示:

本实施例与实施一中相同部分的技术方案请参实施例一所述,在此不再赘述。

综上,通过本申请实施例一或者实施例二所示出的方法,实现了通过部署节点10采用主动式批量远程且自动化地获取待部署集群20中的主机部署配置信息,并确保了待部署集群20中的主机的部署信息的准确性与可定制性,从而为后期在待部署集群20中进行服务和/或程序的部署安装提供了便利,从而在一定程度上也提高了大规模集群环境中的主机部署效率。

上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1