CN112948008B - 一种基于Ironic管理物理裸机的方法 - Google Patents
一种基于Ironic管理物理裸机的方法 Download PDFInfo
- Publication number
- CN112948008B CN112948008B CN202110227975.8A CN202110227975A CN112948008B CN 112948008 B CN112948008 B CN 112948008B CN 202110227975 A CN202110227975 A CN 202110227975A CN 112948008 B CN112948008 B CN 112948008B
- Authority
- CN
- China
- Prior art keywords
- ipa
- boot
- script
- ramdisk
- starting
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
Abstract
本发明提供一种基于Ironic管理物理裸机的方法,属于云计算领域,本发明通过mini‑ramdisk启动裸机后,mini‑ramdisk可以访问完全的内存空间,再启动ipa‑boot‑script进程来完成IPA的下载和启动工作,最终实现ironic conductor对裸机的管理。
Description
技术领域
本发明涉及云计算领域,在OpenStack云平台环境中,针对IPA的ramdisk无法直接运行在内存中的物理裸,提供了一种基于Ironic管理物理裸机的方法。
背景技术
目前,开源的云平台管理系统主要基于OpenStack实现,OpenStack控制整个数据中心的计算、存储和网络资源。物理裸机(也称为云物理主机)既是数据中心的基础设施,也是高性能计算的主要计算资源。其作为一种物理计算资源,通过Ironic组件可以方便地将裸机纳入OpenStack的计算服务nova的管理之下,在调度计算资源时,仅需要指定flavor中的resource,便可以方便地实例部署调度到物理裸机上,实现了物理机和虚拟机资源创建使用统一的接口和相似的流程。nova对裸机的管理通过调用的ironic driver实现,而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提出并完成baremetal node和port的注册工作。并将node的uuid返回给IPA,注册完成后,inspector可以向IPA发送关机命令关闭裸机。注册完成,node的provision state转为enroll,执行manage命令后,裸机转为可管理的状态,可以正式被ironic进行管理。
2.开关机:裸机在注册时,会将BMC address信息写入baremetal node的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接到auto clean的命令后,将裸机转为cleanwait状态,并创建cleaning_network,ipmitool控制裸机从网络启动,下载ramdisk并启动IPA,IPA发送心跳到conductor,conductor检测到node为cleanwait状态,开始向IPA下发clean step和clean指令,IPA收到指示后执行,node provision state转到cleaning状态,直到清理完成。裸机本身清理完成后被关机,同时ironic清理cleaning_network,此时node又为cleanwait状态。待清理完成后,转为available状态,裸机已经做好了被使用的准备。
5.提供远程控制台功能:裸机的控制台功能主要使用ipmitool的sol功能实现。
Ironic是OpenStack平台提供的裸机管理组件,通过该组件,可以将物理裸机纳入OpenStack的统一管理中。Ironic对裸机的管理主要通过conductor进行状态控制、心跳监测和命令下发,具体的执行有IPA完成,inspector提供了对裸机信息的收集和自动发现时的DHCP server服务。
在使用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的脚本程序,该脚本程序向DHCP server请求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)部署tftp server服务器,并将所有资源放置在tftp服务中,搭建并启动dhcpserver;
(4)裸机pxe启动并请求ip及tftp server地址;
(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包,dhcp client,iptables,shred,lldpctl,arcconfcommandline,mege raid cli,iscsi等,这些资源从前文所述搭建的tftf server上下载,ipa_boot_script通过安装上述包构建起适合IPA运行及于ironic conductor和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上传到tftf server服务器的/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管理ipa ramdisk无法运行的裸机的过程图;
图2是基于ironic管理物理裸机的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明在OpenStack云平台环境中,针对IPA的ramdisk无法直接运行在内存中的物理裸机,提供了一种通过Ironic管理此类机器的方法,其中的关键点是的BIOS固件版本对内存限制过小,IPA使用的ramdisk无法直接被载入内存中,通过mini-ramdisk启动裸机后,mini-ramdisk可以访问完全的内存空间,再启动ipa-boot-script进程来完成IPA的下载和启动工作,最终实现ironic conductor对裸机的管理。主要步骤如下:
1)部署ironic及其相关服务:ironic服务中主要包括:ironic-conductor,http,pxe server;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需要的资源和安装包,放在TFTP Server目录下:主要包括启动引导程序,引导程序配置文件,mini-kernel,mini-ramdisk,DHCP安装包,python2,python3,ipa依赖的包,lldp安装包,Raid卡工具安装包,shred安装包等;
4)设置裸机从pxe启动;
5)裸机启动并发出dhcp请求到dhcp server,dhcp server给裸机分配ip并下发tftp server的位置和裸机架构对应的启动引导程序文件名;
6)裸机pxe client向tftp server下载启动引导程序,并开始执行;
7)启动引导程序加载grub.cfg,向tftp server请求并下载grub.cfg;
8)引导程序根据grub.cfg向tftp server请求并下载kernel(mini-kernel)和和initrd(mini-ramdisk);
9)kernel启动成功后,将控制权交给ramdisk,ramdisk启动;
10)ramdisk启动成功后,dhcp client启动,获取ip,建立网络;
11)网络建立成功后,ipa_boot_script进程启动并开始执行,下载并安装ipa的环境和依赖的包,接收ipa启动参数并最终启动ipa;
12)IPA启动后,向api_url发送heartbeat;向inspector发送裸机序列号及硬件信息,inspector向ironic查询或注册该node,并返回node uuid;
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包,dhcp client,iptables,shred,lldpctl,arcconf commandline,megeraid cli,iscsi等,以上资源均从tftp server中下载并执行安装配置。
所述步骤12的IPA启动,通过ipa-boot-script脚本,将ironic-python-agent命令及其参数组合成systemctl启动文件,有systemctl启动,ipa-boot-script对其进行监控,并将产生的日志通过ssh传递给ironic conductor所在节点。
以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (9)
1.一种基于Ironic管理物理裸机的方法,其特征在于,
从裸机运行的镜像文件的/boot文件下提取其中的vmlinuz文件和initrd.img文件作为kernel和ramdisk;对该ramdisk进行修改,使其先在内存中启动运行,此时该ramdisk访问内存中所有的空间,然后运行名为ipa-boot-script的脚本程序,该脚本程序向DHCPserver请求ip并下载IPA以及IPA运行所有的依赖程序和环境,接收IPA启动参数,在完成IPA环境搭建后启动IPA并监控其运行状态;IPA和conductor建立通信,也将硬件信息发送到inspector,来完成conductor发送的各项指令,IPA运行结束后,由ipa-boot-script将IPA的日志发送给conductor。
2.根据权利要求1所述的方法,其特征在于,
本方法包括以下步骤:
(1)部署ironic及其服务;
(2)修改ramdisk,使其在启动后执行ipa_boot_script进程,并接收kernel传递的参数;
(3)部署tftp server服务器,并将所有资源放置在tftp服务中,搭建并启动dhcpserver;
(4)裸机从pxe启动并请求ip及tftp server地址;
(5)裸机下载启动引导程序及其配置文件,并引导系统启动;
(6)引导程序下载并启动kernel和ramdisk;
(7)ramdisk启动ipa_boot_script进程;
(8)ipa_boot_script下载IPA及其依赖资源,构建IPA运行环境,传递IPA配置参数并启动IPA;
(9)IPA启动并向ironic及inspector发送信号,建立通信;
(10)IPA执行ironic下发的指令,完成自动发现,清理,部署操作。
3.根据权利要求2所述的方法,其特征在于,
所述步骤(2)中的修改ramdisk,为使其能够在启动后自动执行ipa_boot_script进程,需要将ipa_boot_script的启动命令添加都/etc/init.d下。
4.根据权利要求2所述的方法,其特征在于,
所述步骤(2)中的ipa_boot_script,该进程负责下载IPA以及其运行需要的依赖和环境,并监控IPA的运行状态,并在IPA启动成功之前进行dhcp请求,IPA执行失败时重新启动,将IPA的运行日志发送给ironic。
5.根据权利要求2所述的方法,其特征在于,
所述步骤(2)中的接收kernel传递的参数,是IPA启动所需要的,包括api_url,advertise_host, advertise_port, inspection_callback_url, inspection_collectors, collect_lldp,其通过在grub.cfg中的指定kernel时传入,并交由ipa_boot_script在启动IPA时指定。
6.根据权利要求2所述的方法,其特征在于,
所述步骤(8)中的下载IPA及其依赖资源,包括python运行环境,IPA程序中调用的python包,dhcp client,iptables,shred,lldpctl,arcconf commandline,mege raidcli,iscsi,这些资源从前文所述搭建的tftf server上下载,ipa_boot_script通过安装上述包构建起适合IPA运行及于ironic conductor和ironic inspector通信的基础环境,保障IPA的正常运行。
7.根据权利要求5所述的方法,其特征在于,
所述步骤(8)中IPA的启动参数,这些参数由kernel传递给ipa_boot_script,ipa_boot_script启动IPA进程时,将步骤(2)中的接收kernel传递的参数写入IPA的启动命令,保证IPA的正常启动并加载响应driver。
8.根据权利要求5所述的方法,其特征在于,
所述步骤(8)中IPA启动或运行过程中,ipa_boot_script对其进行监控,在异常退出或启动失败后尝试进行重启,重启次数为3次。
9.根据权利要求5所述的方法,其特征在于,
所述步骤(9)中IPA启动及运行期间,其产生的日志将记录在带时间戳的指定文件中,并在退出执行后由ipa_boot_script上传到tftf server服务器的/log/ipa/下。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110227975.8A CN112948008B (zh) | 2021-03-02 | 2021-03-02 | 一种基于Ironic管理物理裸机的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110227975.8A CN112948008B (zh) | 2021-03-02 | 2021-03-02 | 一种基于Ironic管理物理裸机的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112948008A CN112948008A (zh) | 2021-06-11 |
CN112948008B true CN112948008B (zh) | 2023-06-23 |
Family
ID=76247055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110227975.8A Active CN112948008B (zh) | 2021-03-02 | 2021-03-02 | 一种基于Ironic管理物理裸机的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112948008B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113612702B (zh) * | 2021-09-30 | 2021-12-24 | 苏州浪潮智能科技有限公司 | 一种实现裸金属检查流程的方法、系统、设备和存储介质 |
CN114416434B (zh) * | 2022-03-30 | 2022-07-08 | 苏州浪潮智能科技有限公司 | 一种裸金属磁盘备份方法、装置及计算机可读存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103297504A (zh) * | 2013-05-09 | 2013-09-11 | 浙江大学 | 一种云数据中心中物理裸机快速部署操作系统的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111475172B (zh) * | 2020-02-29 | 2023-05-16 | 新华三大数据技术有限公司 | 一种裸机部署方法及装置 |
US11829793B2 (en) * | 2020-09-28 | 2023-11-28 | Vmware, Inc. | Unified management of virtual machines and bare metal computers |
-
2021
- 2021-03-02 CN CN202110227975.8A patent/CN112948008B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103297504A (zh) * | 2013-05-09 | 2013-09-11 | 浙江大学 | 一种云数据中心中物理裸机快速部署操作系统的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112948008A (zh) | 2021-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11301280B2 (en) | System and method for managing a monitoring agent in an operating system of a virtual computing instance | |
US6421777B1 (en) | Method and apparatus for managing boot images in a distributed data processing system | |
JP6058628B2 (ja) | マルチノードアプリケーションのデプロイメント・システム | |
US8375252B2 (en) | Method, device and system for automatic device failure recovery | |
WO2016112825A1 (zh) | 远程控制方法、终端设备、管理服务器及远程控制系统 | |
US9465625B2 (en) | Provisioning of operating environments on a server in a networked environment | |
CN100525206C (zh) | 自动恢复设备故障的实现方法及系统 | |
US10379922B1 (en) | Error recovery in a virtual machine-based development environment | |
CN108089913B (zh) | 一种超融合系统的虚拟机部署方法 | |
CN110908753B (zh) | 一种智能融合的云桌面服务器、客户端及系统 | |
CN112948008B (zh) | 一种基于Ironic管理物理裸机的方法 | |
CN107911467B (zh) | 一种脚本化操作的服务操作管理系统和方法 | |
CN103200271A (zh) | Arm服务器及其自动化安装系统的方法 | |
CN111930396B (zh) | 一种基于notify机制的4G路由器中通讯模组的升级方法 | |
CN111475172B (zh) | 一种裸机部署方法及装置 | |
US10353729B1 (en) | Managing service dependencies across virtual machines in a development environment | |
CN112214227A (zh) | 一种边缘服务器镜像定制化及部署系统和方法 | |
CN114115917A (zh) | 操作系统安装方法及装置 | |
JP6051798B2 (ja) | ファームウェア検証システム、ファームウェア検証方法およびファームウェア検証プログラム | |
JPH10320184A (ja) | ソフトウェアバージョン管理システム | |
CN111008043A (zh) | 一种云平台的服务器启动方法及终端 | |
CN115509590B (zh) | 持续部署方法及计算机设备 | |
US11860752B2 (en) | Agentless system and method for discovering and inspecting applications and services in compute environments | |
CN114050971B (zh) | 服务器配置方法及装置、系统、电子设备、存储介质 | |
CN117376117A (zh) | 裸金属服务器部署模组及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |