一种基于裸机服务器的OpenStack大规模部署方法和系统与流程

文档序号:20874581发布日期:2020-05-26 16:18阅读:362来源:国知局
一种基于裸机服务器的OpenStack大规模部署方法和系统与流程

本发明属于属于云计算技术领域,更具体地,涉及一种基于裸机服务器的openstack大规模部署方法和系统。



背景技术:

openstack是一个免费的开源软件平台,用于云计算,主要部署为基础架构即服务(infrastructureasaservice,简称iaas),从而为客户提供虚拟服务器和其他资源。openstack是由相互关联的组件组成,这些组件可控制整个数据中心内计算、存储和网络资源的各种多供应商硬件池。用户可以通过基于web的仪表板、命令行工具、或restfulweb服务对这些硬件池进行管理。

openstack的使命是创建一个无处不在的开源云计算平台,该平台易于使用,易于实施,部署之间可互操作,适用于各种规模,并满足公共云和私有云的用户和运营商的需求。目前主流的openstack部署方法包括devstack部署方法、以及openstack原始部署方法等。

devstack是官方维护的一个部署脚本工具,利用它可以快速部署一个openstack的开发和测试环境,但其仅限于部署简单的云计算平台,无法适用于大规模分布式计算环境、或超级计算环境;openstack原始部署方法是按照openstack官方文档,一步步进行安装,但其存在一些不可忽略的缺陷,第一,其无法实现openstack大规模部署;第二,其时间成本高;第三,由于其部署难度高,容易出现部署出错的情况,因而该方法的部署成功率较低;第四,其部署后的openstack集群后期的操作和维护很困难,如果openstack集群中某个节点的硬件或软件发生故障,由于服务单独部署在节点上,因此很难清理这些故障节点并恢复相关服务。



技术实现要素:

针对现有技术的以上缺陷或改进需求,本发明提供了一种基于裸机服务器的openstack大规模部署方法和系统,其目的在于,解决现有openstack原始部署方法中存在的无法实现openstack大规模部署、时间成本高、部署成功率较低、以及一旦openstack集群中某个节点发生故障,很难清理这些故障节点并恢复相关服务的技术问题。

为实现上述目的,按照本发明的一个方面,提供了一种基于裸机服务器的openstack大规模部署方法,包括以下步骤:

(1)获取需要部署成openstack集群的n台裸机服务器及其硬件信息,获取用户对该openstack集群的需求,其中n表示裸机服务器的总数;

(2)根据步骤(1)收集的n台裸机服务器的硬件信息,从n台裸机服务器中选择物理性能最佳的裸机服务器作为中央服务器,在该中央服务器上安装操作系统,并在安装了操作系统的该中央服务器上构建openstack安装包;

(3)为n台裸机服务器中除了步骤(2)所选中的中央服务器以外的所有裸机服务器安装操作系统,对安装操作系统后的所有服务器进行系统配置,为系统配置后的所有服务器配置多个网络;

(4)中央服务器将步骤(2)构建的openstack安装包并行下发到其下一级的三个集群管理服务器,三个集群管理服务器分别根据步骤(1)获取的硬件信息和步骤(3)中配置的多个网络将该openstack安装包下发到其下一级节点,节点使用ansible自动化运维工具运行openstack安装包,从而完成该节点的部署。

优选地,步骤(2)中在中央服务器上构建openstack安装包的过程具体包括如下步骤:

(2-1)获取docker镜像,并通过该docker镜像在中央服务器上创建linux容器;

(2-2)获取openstack组件源码、及其与对应组件之间对应的依赖关系;

(2-3)根据步骤(2-2)获取的依赖关系文件在步骤(2-1)创建的docker容器中安装openstack组件源码对应的openstack组件,并在安装openstack组件后的该docker容器中添加该openstack组件的初始化脚本,从而得到更新后的docker容器;

(2-4)使用kolla工具将步骤(2-3)更新后的docker容器上安装的openstack组件打包成容器镜像,并将该容器镜像打包成openstack安装包;

优选地,步骤(2-1)具体为,首先,通过在中央服务器上安装docker运行环境,以创建本地镜像仓库;随后,从创建的本地镜像仓库中获取linux镜像,并利用该linux镜像创建linux容器。

优选地,步骤(3)具体包括以下子步骤:

(3-1)使用预启动执行环境pxe为n台裸机服务器中除了中央服务器以外的其余裸机服务器安装操作系统;

(3-2)对步骤(3-1)安装好操作系统后的服务器进行系统配置操作;

(3-3)将中央服务器用作当前部署节点,将步骤(3-2)执行系统配置操作后的所有服务器用作当前集群节点,使用当前部署节点与所有当前集群节点建立部署网络;

(3-4)根据步骤(3-3)建立的部署网络中所有当前集群节点的硬件信息,从中选择物理性能仅次于中央服务器的三个当前集群节点作为该中央服务器下一级的管理服务器,根据步骤(1)所获得的用户对openstack集群的需求获取其中一个管理服务器下一级的计算节点数量ncomputer,第二管理服务器下一级的存储节点数量nstorage,以及第三管理服务器下一级的网络节点数量nnetwork(如图3所示),并从剩余的所有当前集群节点中选取cpu与内存综合性能指标最高的前ncomputer个作为计算节点,选取硬盘的综合性能最高的前nstorage个作为存储节点,选取网卡综合性能最高的前nnetwork个作为网络节点;

(3-5)使用中央服务器、管理服务器、计算节点、存储节点、以及网络节点构建管理网络,使用所有计算节点和存储节点构建存储网络,使用所有网络节点和计算节点分别构建内部网络和外部网络,其中内部网络是用于openstack集群待生成的虚拟机之间相互通信的局域网,外部网络是用于openstack集群待生成的虚拟机连接外部办公网络和internet的虚拟局域网。

优选地,步骤(3-1)具体为,首先使用基板管理控制器bmc接口获取裸机服务器的硬件信息和电源状态,根据该电源状态控制裸机服务器开启工作;然后,通过pxe确定每台裸机服务器的引导顺序,并根据该引导顺序将裸机服务器先后引导至live操作系统,从而为这些裸机服务器安装该live操作系统;最后,在live操作系统安装成功后清理裸机服务器上的磁盘数据。

优选地,步骤(4)具体包括以下子步骤:

(4-1)中央服务器通过步骤(3)构建的部署网络将openstack安装包并行下发到三个管理服务器;

(4-2)第一管理服务器分别根据步骤(1)获取的硬件信息和步骤(3)中配置的多个网络确定其下一级的所有计算节点中数据传输速率最快的1个计算节点,并分别将收到的openstack安装包下发到该计算节点;

(4-3)接收到openstack安装包的计算节点使用ansible自动化运维工具运行openstack安装包,从而完成该计算节点的部署,并将其自身标记为cn_succeed(1);

(4-4)设置计数器i=1;

(4-5)判断2i是否大于所有计算节点的总数ncomputer,如果是则进入步骤(4-8),否则转入步骤(4-6);

(4-6)第一管理服务器分别根据步骤(1)获取的硬件信息和步骤(3)中配置的多个网络确定其下一级的(ncomputer-2i-1)个计算节点中除了计算节点cn_succeed(i)以外数据传输速率最快的节点,并分别将收到的openstack安装包下发到该计算节点,同时计算节点cn_succeed(i),cn_succeed(i+1),…,cn_succeed(2i-1)分别从(ncomputer-2i-1-1)个计算节点中选择与其数据传输速率最快的计算节点,并将收到的openstack安装包下发到该计算节点;

(4-7)设置计数器i=i+1,并返回步骤(4-5);

(4-8)针对第二管理服务器而言,执行与上述步骤(4-2)至(4-7)相同的步骤,直到其下一级的所有存储节点都被部署完毕为止;

(4-9)针对第三管理服务器而言,执行与上述步骤(4-2)至(4-7)相同的步骤,直到其下一级的所有网络节点都被部署完毕为止,从而最终将所有节点部署成openstack集群。

按照本发明的另一方面,提供了一种基于裸机服务器的openstack大规模部署系统,包括:

第一模块,用于获取需要部署成openstack集群的n台裸机服务器及其硬件信息,获取用户对该openstack集群的需求,其中n表示裸机服务器的总数;

第二模块,用于根据第一模块收集的n台裸机服务器的硬件信息,从n台裸机服务器中选择物理性能最佳的裸机服务器作为中央服务器,在该中央服务器上安装操作系统,并在安装了操作系统的该中央服务器上构建openstack安装包;

第三模块,用于为n台裸机服务器中除了第二模块所选中的中央服务器以外的所有裸机服务器安装操作系统,对安装操作系统后的所有服务器进行系统配置,为系统配置后的所有服务器配置多个网络;

第四模块,用于中央服务器将第二模块构建的openstack安装包并行下发到其下一级的三个集群管理服务器,三个集群管理服务器分别根据第一模块获取的硬件信息和第三模块中配置的多个网络将该openstack安装包下发到其下一级节点,节点使用ansible自动化运维工具运行openstack安装包,从而完成该节点的部署。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:

(1)由于本发明最终能够实现openstack大规模部署,从而能够解决现有openstack大规模部署方法无法实现openstack大规模高效部署的技术问题;

(2)由于本发明采用了步骤(4)实现了分级部署的体系结构,可以很好提高openstack安装包下发的速度。因此,能够解决现有openstack大规模部署方法中存在由于节点太多导致的openstack组件下发拥塞缓慢的时间成本高的技术问题;

(3)由于本发明采用了步骤(2),其为openstack的安装提前准备好安装包,避免openstack组件复杂导致部署出错的问题。因此,能够解决现有openstack大规模部署方法中存在的部署成功率较低的技术问题;

(4)由于本发明采用了步骤(3),各个裸机服务器被统一地进行了系统配置,方便后期统一的管理与维护。因此,能够解决现有openstack大规模部署方法中存在的一旦openstack集群中某个节点发生故障,很难清理这些故障节点并恢复相关服务的技术问题;

(4)本发明技术实现简单,应用范围广,可以很好的使用此发明部署同类型的集群,本发明也可以很好的扩展为更大规模的openstack集群部署,可扩展性强。

附图说明

图1是本发明基于裸机服务器的openstack大规模部署方法的流程图;

图2是本发明步骤(3-3)中建立的部署网络的示意图;

图3是本发明步骤(3-4)中建立的中央服务器、管理服务器、以及节点构成的分级体系结构图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

本发明提供了一种基于裸机服务器的openstack大规模部署方法,其目的是将各个节点部署成集群服务,裸机管理的目标是为了将服务器配置成可用于集群部署的最佳状态,在逻辑上将节点划分成集群,然后将集群服务按照划分的架构进行部署,并且将集群服务的api或者使用门户暴露出来。

如图1所示,本发明提供了一种基于裸机服务器的openstack大规模部署方法,包括以下步骤:

(1)获取需要部署成openstack集群的n台裸机服务器及其硬件信息,获取用户对该openstack集群的需求,其中n表示裸机服务器的总数;

使用裸机服务器的目标是为了将其配置成可用于集群部署的最佳状态。

本步骤中用户对openstack集群的需求包括用户对openstack集群中计算资源、存储资源、以及网络资源的需求。

(2)根据步骤(1)收集的n台裸机服务器的硬件信息,从n台裸机服务器中选择物理性能最佳的裸机服务器作为中央服务器,在该中央服务器上安装操作系统,并在安装了操作系统的该中央服务器上构建openstack安装包;

具体而言,物理性能最佳的裸机服务器指的是n台裸机服务器中cpu、内存、硬盘、网卡等物理资源的综合指标最高的那一台裸机服务器。

本步骤中,在中央服务器上构建openstack安装包的过程具体包括如下步骤:

(2-1)获取docker镜像,并通过该docker镜像在中央服务器上创建linux容器;

具体而言,本步骤中创建的docker容器是一个开源的应用容器引擎,其让开发者能够以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装了docker引擎的服务器上(包括当下流行的linux机器、windows机器等),也可以实现虚拟化。

docker容器是完全使用沙箱机制(sandboxie),相互之间不会有任何接口(类似iphone的app),几乎没有性能开销,并可以很容易地在机器和数据中心中运行。最重要的是,这些docker容器不依赖于任何计算机语言、框架、乃至系统。

本步骤具体为,首先,通过在中央服务器上安装docker运行环境,以创建本地镜像仓库;随后,从创建的本地镜像仓库中获取linux镜像,并利用该linux镜像创建linux容器;

(2-2)获取openstack组件源码、及其与对应组件之间对应的依赖关系;

(2-3)根据步骤(2-2)获取的依赖关系文件在步骤(2-1)创建的docker容器中安装openstack组件源码对应的openstack组件,并在安装openstack组件后的该docker容器中添加该openstack组件的初始化脚本,从而得到更新后的docker容器;

(2-4)使用kolla工具将步骤(2-3)更新后的docker容器上安装的openstack组件打包成容器镜像,并将该容器镜像打包成openstack安装包;

具体而言,该openstack安装包中包括安装了openstack组件的docker镜像、依赖关系、以及openstack本身的信息;

本步骤的目的在于,解决openstack组件复杂导致的操作困难问题。

本步骤中的kolla是openstack下的一个项目,项目的目标是提供可用于生产的容器化部署工具,以便使用社区最佳实践来运行可扩展、快速、可靠和可升级的openstack云。kolla是开箱即用的,即使新手也可以很快的使用kolla来快速部署openstack集群;此外,kolla也能够根据实际的需求来定制化地部署openstack集群。

(3)为n台裸机服务器中除了步骤(2)所选中的中央服务器以外的所有裸机服务器安装操作系统,对安装操作系统后的所有服务器进行系统配置,为系统配置后的所有服务器配置多个网络;

本步骤具体包括以下子步骤:

(3-1)使用预启动执行环境(prebootexecutionenvironment,pxe)为n台裸机服务器中除了中央服务器以外的其余裸机服务器安装操作系统;

具体而言,本步骤首先是使用基板管理控制器(英文全称为baseboardmanagementcontroller,简称bmc)接口获取裸机服务器的硬件信息和电源状态,然后根据该电源状态控制裸机服务器开启工作;然后,通过pxe确定每台裸机服务器的引导顺序,并根据该引导顺序将裸机服务器先后引导至live操作系统,从而为这些裸机服务器安装该live操作系统;最后,在live操作系统安装成功后清理裸机服务器上的磁盘数据。

bmc接口是执行服务器远端管理的控制器,它可以在服务器未开机的状态下,对服务器执行固件升级、查看服务器设备等操作。

其中,使用bmc接口管理裸机服务器的优势在于:

a、不受裸机服务器电源状态的制约:在裸机服务器关闭了电源的情况下,仍可获取裸机服务器的cpu、内存等硬件信息,并且可以通过网络来打开裸机服务器的电源。

b、不受裸机服务器宿主系统的制约::不论裸机服务器是否开启了电源或者是否安装了操作系统,都可以通过bmc接口来控制裸机服务器的电源。

c、可以强制修改裸机服务器的引导顺序,并随时将裸机服务器重新引导到网络引导的live操作系统,从而对裸机服务器上的磁盘数据进行维护,或者清理裸机服务器上的数据。

(3-2)对步骤(3-1)安装好操作系统后的服务器进行系统配置操作;

具体而言,系统配置操作包括:(1)以sudovim/etc/hostname命令,修改服务器的主机名,使服务器具有统一格式的主机名;(2)将服务器的ssh(即secureshell)密钥配置为免密,以方便后续的部署过程中可以免密登录;(3)安装openstack组件运行的环境,例如pip、python等;(4)对服务器中的硬盘进行分区(即指定一部分分区用于安装操作系统,另一部分分区用于部署openstack组件)。

(3-3)将中央服务器用作当前部署节点,将步骤(3-2)执行系统配置操作后的所有服务器用作当前集群节点,使用当前部署节点与所有当前集群节点建立部署网络;

如图2所示,该部署网络是用于发布和部署节点,节点启动以后使用此网络通信。该部署网络独占一张网卡,并且网卡的配置不允许进行修改,这样可以保证部署网络的带宽,并且尽量不干扰安装包的传输效率。

(3-4)根据步骤(3-3)建立的部署网络中所有当前集群节点的硬件信息,从中选择物理性能仅次于中央服务器的三个当前集群节点作为该中央服务器下一级的管理服务器(managementserver,简称ms),根据步骤(1)所获得的用户对openstack集群的需求获取其中一个管理服务器下一级的计算节点数量ncomputer,第二管理服务器下一级的存储节点数量nstorage,以及第三管理服务器下一级的网络节点数量nnetwork(如图3所示),并从剩余的所有当前集群节点中选取cpu与内存综合性能指标最高的前ncomputer个作为计算节点,选取硬盘的综合性能最高的前nstorage个作为存储节点,选取网卡综合性能最高的前nnetwork个作为网络节点;

可以理解的是,本步骤执行完毕后,部署网络中存在有中央服务器、管理服务器、计算节点、存储节点、网络节点五种节点类型,且有n=ncomputer+nstorage+nnetwork+1+3。

(3-5)使用中央服务器、管理服务器、计算节点、存储节点、以及网络节点构建管理网络(managementnetwork),使用所有计算节点和存储节点构建存储网络(storagenetwork),使用所有网络节点和计算节点分别构建内部网络(internal/overlaynetwork)和外部网络(externalnetwork),其中内部网络是用于openstack集群待生成的虚拟机之间相互通信的局域网(localareanetwork,简称lan),外部网络是用于openstack集群待生成的虚拟机连接外部办公网络和internet的虚拟局域网(virtuallocalareanetwork,简称vlan);

具体而言,管理网络是用于openstack集群内部的各个节点之间进行通信;存储网络是用于ceph集群的通信,最好独占一个网卡并使用高性能的网络设备。

需要注意的是,当本步骤中构建的两个或以上的网络使用同一张网卡时,应使用vlan对该网卡做隔离处理,以避免网络配置之间冲突。例如,如果管理网络占用了某一个网卡的vlan1,其它网络如果想使用该网卡,则需要该网卡中其他可用的vlan。

(4)中央服务器将步骤(2)构建的openstack安装包并行下发到其下一级的三个集群管理服务器,三个集群管理服务器分别根据步骤(1)获取的硬件信息和步骤(3)中配置的多个网络将该openstack安装包下发到其下一级节点,节点使用ansible自动化运维工具运行openstack安装包,从而完成该节点的部署。

本步骤具体包括以下子步骤:

(4-1)中央服务器通过步骤(3)构建的部署网络将openstack安装包并行下发到三个管理服务器;

(4-2)第一管理服务器分别根据步骤(1)获取的硬件信息和步骤(3)中配置的多个网络确定其下一级的所有计算节点中数据传输速率最快的1个计算节点,并分别将收到的openstack安装包下发到该计算节点;

(4-3)接收到openstack安装包的计算节点使用ansible自动化运维工具运行openstack安装包,从而完成该计算节点的部署,并将其自身标记为cn_succeed(1);

(4-4)设置计数器i=1;

(4-5)判断2i是否大于所有计算节点的总数ncomputer,如果是则进入步骤(4-8),否则转入步骤(4-6);

(4-6)第一管理服务器分别根据步骤(1)获取的硬件信息和步骤(3)中配置的多个网络确定其下一级的(ncomputer-2i-1)个计算节点中除了计算节点cn_succeed(i)以外数据传输速率最快的节点,并分别将收到的openstack安装包下发到该计算节点,同时计算节点cn_succeed(i),cn_succeed(i+1),…,cn_succeed(2i-1)分别从(ncomputer-2i-1-1)个计算节点中选择与其数据传输速率最快的计算节点,并将收到的openstack安装包下发到该计算节点;

(4-7)设置计数器i=i+1,并返回步骤(4-5);

(4-8)针对第二管理服务器而言,执行与上述步骤(4-2)至(4-7)相同的步骤,直到其下一级的所有存储节点都被部署完毕为止;

需要注意的是,本步骤与第一管理服务器的处理过程唯一的区别,就在于第一管理服务器确定传输速率最快的节点时使用的网络是所有构建的网络,而第二管理服务器确定传输速率最快的节点时使用的网络不包括内部网络和外部网络(这是由于存储节点并不参与构建这两个网络)。

(4-9)针对第三管理服务器而言,执行与上述步骤(4-2)至(4-7)相同的步骤,直到其下一级的所有网络节点都被部署完毕为止,从而最终将所有节点部署成openstack集群。

需要注意的是,本步骤与第一管理服务器的处理过程唯一的区别,就在于第一管理服务器确定传输速率最快的节点时使用的网络是所有构建的网络,而第三管理服务器确定传输速率最快的节点时使用的网络不包括存储网络(这是由于网络节点并不参与构建该网络)。

通过上述步骤最终将各个节点成功并高效部署成集群服务。裸机服务器管理的目标是为了将服务器配置成可用于集群部署的最佳状态,在逻辑上将节点划分成不同的节点类型集群,然后将集群按照划分的架构进行部署,并且将集群服务的api或者使用门户暴露出来。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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