一种基于Ironic管理物理裸机的方法与流程

文档序号:25419860发布日期:2021-06-11 21:30阅读:262来源:国知局
本发明涉及云计算领域,在openstack云平台环境中,针对ipa的ramdisk无法直接运行在内存中的物理裸,提供了一种基于ironic管理物理裸机的方法。
背景技术
::目前,开源的云平台管理系统主要基于openstack实现,openstack控制整个数据中心的计算、存储和网络资源。物理裸机(也称为云物理主机)既是数据中心的基础设施,也是高性能计算的主要计算资源。其作为一种物理计算资源,通过ironic组件可以方便地将裸机纳入openstack的计算服务nova的管理之下,在调度计算资源时,仅需要指定flavor中的resource,便可以方便地实例部署调度到物理裸机上,实现了物理机和虚拟机资源创建使用统一的接口和相似的流程。nova对裸机的管理通过调用的ironicdriver实现,而ironic对物理裸机的管理主要包括:1.注册云物理主机:该功能的实现主要通过网络启动云物理主机,裸机从网络启动后,网卡中的dhcp客户端向dhcp服务端请求ip,服务端分配ip的同时,指定tftp服务器的地址和系统启动引导文件,裸机获取ip后根据指引下载启动引导文件并执行,根据引导文件的grub.cfg设置从tftp服务器上下载kernel和ramdisk,下载完成后kernel和ramdisk依次启动,待启动成功后,init进程准备拉起ironic-python-agent进程:首先通过dhcp请求ip,拿到ip后启动ironic-python-agent进程,该进程进行向conductor发起heartbeat,并向inspector发起http请求,通过机器序列号判断该裸机是否已经注册在ironic的nodes中,如果未注册,则收集裸机的硬件信息,发送到inspector,由inspector向ironic提出并完成baremetalnode和port的注册工作。并将node的uuid返回给ipa,注册完成后,inspector可以向ipa发送关机命令关闭裸机。注册完成,node的provisionstate转为enroll,执行manage命令后,裸机转为可管理的状态,可以正式被ironic进行管理。2.开关机:裸机在注册时,会将bmcaddress信息写入baremetalnode的driver-info字段中,增加ipmi的用户名和密码后,可以通过ipmitool直接对其进行开关机控制。3.部署云物理主机:裸机处理available状态时,可以被nova调度来部署实例,实例部署的主要过程为:被调度到的裸机从网络启动,下载kernel和ramdisk启动并运行ironic-python-agent进程,ipa向conductor发回heartbeat,conductor指示ipa从glance下载用户镜像,可以通过iscsi方式,也可以下载到本地,下载完成后,设置裸机从root_disk启动,裸机从用户镜像重启完成实例部署,并转为active状态。4.对云物理主机进行自动清理:在云物理主机从manageable转为available的过程中,即provide的过程中,以及删除裸机上实例的过程中,可以设置自动清理。ironicconductor接到autoclean的命令后,将裸机转为cleanwait状态,并创建cleaning_network,ipmitool控制裸机从网络启动,下载ramdisk并启动ipa,ipa发送心跳到conductor,conductor检测到node为cleanwait状态,开始向ipa下发cleanstep和clean指令,ipa收到指示后执行,nodeprovisionstate转到cleaning状态,直到清理完成。裸机本身清理完成后被关机,同时ironic清理cleaning_network,此时node又为cleanwait状态。待清理完成后,转为available状态,裸机已经做好了被使用的准备。5.提供远程控制台功能:裸机的控制台功能主要使用ipmitool的sol功能实现。ironic是openstack平台提供的裸机管理组件,通过该组件,可以将物理裸机纳入openstack的统一管理中。ironic对裸机的管理主要通过conductor进行状态控制、心跳监测和命令下发,具体的执行有ipa完成,inspector提供了对裸机信息的收集和自动发现时的dhcpserver服务。在使用ironic管理物理裸机的过程中,ironic-conductor(以下简称conductor)负责管理物理裸机对应的nodes,ironic-inspector(以下简称inspector)负责将自动发现物理裸机注册为ironic的node,无论是自动发现过程中对物理机信息的收集,还是后续ironic-conductor对裸机进行的管理,最终实际指令的操作执行都是由运行在裸机内存中的ironic-python-agent(以下简称ipa)来执行,而为了运行ipa,需要使用openstack提供的镜像制作工具disk-image-builde(以下简称dib)制作ipa专用的kernel和ramdisk。一般使用ubuntu和centos制作的ramdisk大小在300m以上,x86及amd64,arm64架构的机器,基本都有很完善的基础软件资源,bios固件可以使用高达4g的内存空间,可以充分满足ipa的ramdisk数百兆大小的要求,但对于mips架构,uos系统的物理裸机,部分机器的bios仅能支持数十兆内存空间的机器,没有充分的资源支撑ipa的运行,使用普遍的方法无法通过ironic管理这些机器。技术实现要素:为了解决以上技术问题,本发明提供了一种基于ironic管理物理裸机的方法,解决在ipa的ramdisk无法直接在物理裸机内存中运行时,ironic仍旧能够管理该物理裸机。本发明的技术方案是:一种基于ironic管理物理裸机的方法,从裸机可以运行的镜像文件的/boot文件下提取其中的vmlinuz文件和initrd.img文件作为kernel和ramdisk(为了与包含ipa的ramdisk及对应的kernel进行区分,后续称之为mini-kernel和mini-ramdisk),对该nimi-ramdisk进行简单修改,使其先在内存中启动运行,此时mini-ramdisk可以访问内存中所有的空间,然后运行名为ipa-boot-script的脚本程序,该脚本程序向dhcpserver请求ip并下载ipa以及ipa运行所有的依赖程序和环境,接收ipa启动参数,在完成ipa环境搭建后启动ipa并监控其运行状态,自此,ipa可以和conductor建立通信,也可以将硬件信息发送到inspector,来完成conductor发送的各项指令,ipa运行结束后,由ipa-boot-script将ipa的日志发送给conductor。进一步的,包括以下步骤:(1)部署ironic及其相关服务;(2)修改ramdisk,使其在启动后执行ipa_boot_script进程,并接收kernel传递的参数;(3)部署tftpserver服务器,并将所有资源放置在tftp服务中,搭建并启动dhcpserver;(4)裸机pxe启动并请求ip及tftpserver地址;(5)裸机下载启动引导程序及其配置文件,并引导系统启动;(6)引导程序下载并启动kernel和ramdisk;(7)ramdisk启动ipa_boot_script进程;(8)ipa_boot_script下载ipa及其依赖资源,构建ipa运行环境,传递ipa配置参数并启动ipa;(9)ipa启动并向ironic及inspector发送信号,建立通信;(10)ipa执行ironic下发的指令,完成自动发现,清理,部署等操作;进一步的,所述步骤(2)中的修改ramdisk,为使其能够在启动后自动执行ipa_boot_script进程,需要将ipa_boot_script的启动命令添加都/etc/init.d下。进一步的,所述步骤(2)中的ipa_boot_script,该进程负责下载ipa以及其运行需要的依赖和环境,并监控ipa的运行状态,并在ipa启动成功之前进行dhcp请求,ipa执行失败时重新启动,将ipa的运行日志发送给ironic等。进一步的,所述步骤(2)中的接收kernel传递的参数,这些参数是ipa启动所需要的,包括api_url,advertise_host,advertise_port,inspection_callback_url,inspection_collectors,collect_lldp等,其通过在grub.cfg中的指定kernel时传入,并交由ipa_boot_script在启动ipa时指定。进一步的,所述步骤(8)中的下载ipa及其依赖资源,主要包括python运行环境,ipa程序中调用的python包,dhcpclient,iptables,shred,lldpctl,arcconfcommandline,megeraidcli,iscsi等,这些资源从前文所述搭建的tftfserver上下载,ipa_boot_script通过安装上述包构建起适合ipa运行及于ironicconductor和ironicinspector通信的基础环境,保障ipa的正常运行。进一步的,所述步骤(8)中ipa的启动参数,这些参数由kernel传递给ipa_boot_script,ipa_boot_script启动ipa进程时,将权力要求4中的参数写入ipa的启动命令,保证ipa的正常启动并加载响应driver。进一步的,所述步骤(8)中ipa启动或运行过程中,ipa_boot_script对其进行监控,在异常退出或启动失败后尝试进行重启,重启次数为3次。进一步的,所述步骤(9)中ipa启动及运行期间,其产生的日志将记录在带时间戳的指定文件中,并在退出执行后由ipa_boot_script上传到tftfserver服务器的/log/ipa/下。本发明的有益效果是针对物理裸机的管理,ironic提供了较为简单快捷的方法,但其实际动作的执行都有赖于运行在专门构建的ramdisk中的ipa,对于构建的ramdisk的大小超过bios限制的裸机,没有提供可行的解决方案,本发明提出的方法既可以解决此问题,又可以推广至更大范围,具体而言:1)实现了对无法直接构建ironic专用ramdisk裸机的自动发现,管理和控制;2)mini-ramdisk和mini-kernel由操作系统的/boot文件提供,只要操作系统能够支持ipa的运行环境,对系统和机器架构则没有更特殊的要求;3)根据ironic对裸机管理功能的不同,可以灵活设置需要下载到裸机的包,避免每次都下载完全的ramdisk文件;4)由于ipa及其依赖是在ramdisk启动后才安装并启动的,避免了对bios等固件的特殊要求,可以充分利用裸机的全部内存空间。附图说明图1是使用ironic管理iparamdisk无法运行的裸机的过程图;图2是基于ironic管理物理裸机的流程图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明在openstack云平台环境中,针对ipa的ramdisk无法直接运行在内存中的物理裸机,提供了一种通过ironic管理此类机器的方法,其中的关键点是的bios固件版本对内存限制过小,ipa使用的ramdisk无法直接被载入内存中,通过mini-ramdisk启动裸机后,mini-ramdisk可以访问完全的内存空间,再启动ipa-boot-script进程来完成ipa的下载和启动工作,最终实现ironicconductor对裸机的管理。主要步骤如下:1)部署ironic及其相关服务:ironic服务中主要包括:ironic-conductor,http,pxeserver;ironic-inspector中主要包括ironic-inspector和dnsmasq服务;ironic-api提供api服务;nova-compute-ironic提供计算服务;neutron提供网络服务;glance提供镜像服务;keystone提供认证服务;2)修改ramdisk,将ipa-boot-script进程放置在mini-ramdisk中,并使其在mini-ramdisk启动成功后自行启动执行;3)准备ipa需要的资源和安装包,放在tftpserver目录下:主要包括启动引导程序,引导程序配置文件,mini-kernel,mini-ramdisk,dhcp安装包,python2,python3,ipa依赖的包,lldp安装包,raid卡工具安装包,shred安装包等;4)设置裸机从pxe启动;5)裸机启动并发出dhcp请求到dhcpserver,dhcpserver给裸机分配ip并下发tftpserver的位置和裸机架构对应的启动引导程序文件名;6)裸机pxeclient向tftpserver下载启动引导程序,并开始执行;7)启动引导程序加载grub.cfg,向tftpserver请求并下载grub.cfg;8)引导程序根据grub.cfg向tftpserver请求并下载kernel(mini-kernel)和和initrd(mini-ramdisk);9)kernel启动成功后,将控制权交给ramdisk,ramdisk启动;10)ramdisk启动成功后,dhcpclient启动,获取ip,建立网络;11)网络建立成功后,ipa_boot_script进程启动并开始执行,下载并安装ipa的环境和依赖的包,接收ipa启动参数并最终启动ipa;12)ipa启动后,向api_url发送heartbeat;向inspector发送裸机序列号及硬件信息,inspector向ironic查询或注册该node,并返回nodeuuid;13)ipa接收ironic的指令并执行相关的操作;所述步骤2包括:开发ipa-boot-script脚本程序,通过cpio工具解压ramdisk,将ipa-boot-script程序写入ramdisk,并修改/etc/init.d/下文件,将ipa-boot-script启动命令写入系统启动后自动执行的程序中;所述步骤2中的ipa-boot-script程序的主要功能是:检测裸机架构及mini-ramdisk版本,以下载对应的应用程序;检测裸机网卡并启动dhcp获取ip,以通过tftp从服务端下载资源;下载并安装ipa运行需要的软件包和程序;接收从kernel传递来的ipa启动时所需的参数;将参数传递给ipa并启动ironic-python-agent进程;监控ipa进程并在异常退出后重启ipa;在ipa退出后发送ipa日志到conductor。所述步骤3包括:为支持多种的架构和操作系统,设置多个资源仓库,资源下发时根据ipa-boot-script上报的架构进行分配;所述步骤7的grub.cfg文件中,通过kernel参数传递了ipa-boot-script运行需要的配置和ipa进程运行需要的参数,主要包括:api-url,inspection_callback_url,inspection_collectors,collect_lldp等设置;所述步骤11下载并安装配置ipa运行环境,主要包括:python运行环境,ipa程序中调用的python包,dhcpclient,iptables,shred,lldpctl,arcconfcommandline,megeraidcli,iscsi等,以上资源均从tftpserver中下载并执行安装配置。所述步骤12的ipa启动,通过ipa-boot-script脚本,将ironic-python-agent命令及其参数组合成systemctl启动文件,有systemctl启动,ipa-boot-script对其进行监控,并将产生的日志通过ssh传递给ironicconductor所在节点。以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1