OpenStack的“神秘组件” 裸金属(Ironic)管理使用

news2024/11/22 7:03:02

OpenStack是目前全球部署最广泛的开源云基础架构,在OpenStack中提供的裸金属服务的项目是Ironic。OpenStack的官网主要介绍裸金属的用途在如下5方面:

(1)高性能计算;
(2)无法虚拟化的硬件设备的计算任务;
(3)数据库主机(一些数据库在hypervisor中运行不佳);
(4)单租户、专用硬件、安全性、可靠性以及其它需求;
(5)快速部署云基础设施。

其本质是在过去的几年中随着如电信工作负载的5G,还有智能化的机器学习和人工智能,甚至是大数据,都在推动人们朝着越来越专业化的设备发展,数据中心和云环境统一建设模式。人们希望通过如OpenStack Ironic对物理硬件上实现自动化和控制,从而减少设备的空闲时间,降低运维人员对硬件安装部署时间。

为什么说OpenStack Ironic是一个神秘的组件:

原因一:Ironic使用了BMC(Baseboard Manager Controller)即基板管理控制器,独立的系统在服务器通过额外的硬件控制器和PXE(Pre-boot Execution Environment)网络启动,直接把事先做好的操作系统磁盘镜像克隆到物理服务器上,免去了使用Kickstart自动安装系统的过程,高效省时;

原因二:Ironic是通过Nova来调用的,是模拟Nova的一个虚拟化驱动,其创建和管理物理服务器资源是和虚拟化实例创建部署流程一样。

揭开OpenStack Ironic神秘的面纱,首先Ironic作为OpenStack一个独立的模块同样可与keystone、nova、neutron、cinder等组件交互,和部署虚拟机的调用流程是一样的,都是通过Nova的接口来执行创建实例,只是底层的nova-scheduler和nova-compute驱动不一样,虚拟机底层驱动采用的是虚拟化技术,而物理机采用的是PXE和IPMI技术。在OpenStack官网的架构时序图如下:


OpenStack Ironic时序图(来源于OpenStack官网)

从时序图中可以看到Ironic组件的流程比较复杂,其主要是考虑与各个组件交互和错误异常的处理,其核心的逻辑流程可以简化为如下:用户通过Nova API和Nova Scheduler来启动一个裸金属实例,之后请求会通过Ironic API,连接到Ironic Conductor服务,由 Ironic Conductor负责和Neutron网络、Glance镜像、Cinder存储等组件交互确定安装服务器的系统、网络规划等,再到对应的Driver,并把信息记录到Ironic DB数据库中,最后完成实例部署,为用户提供成功部署的物理机服务。

OpenStack Ironic部署使用,Ironic部署和Nova等常用的组件部署方式基本一样,主要分为如下流程:

(1)环境准备,如果实验环境最少需要准备两台物理服务器,一台作为 Ironic控制节点也就是我们常说的controller节点,一台作为Ironic Node节点即裸金属的被管理节点,需要注意在Node节点需要具备并开启BMC、PXE功能,如果服务器有RAID需要先创建完成RAID,同时确保网络DHCP能力;

(2)配置Ironic服务,主要是创建数据库,安装和配置Ironic-api和Ironic-conductor服务,配置Nova、Neutron,详细部署可以参考OpenStack Ironic官网部署。Ironic-api和Ironic-conductor服务可以部署在相同或不同主机。用户也可以添加新的Ironic-conductor主机以应对不断增长的bare metal node。不过新增Ironic-conductor服务需要与现有Ironic-conductor保持相同版本。建议每个Ironic-conductor管理100个左右的bare metal裸机节点,以平衡较优的可靠性和性能;

(3)构建或使用现有镜像,部署一个裸机节点需要两组镜像:实施/部署镜像(deploy images)和用户镜像(user images)。Bare Metal Provisioning 使用 deploy images 来准备bare metal(裸机) node,进行clean等操作,为user images的安装做准备。user images 被安装bare metal node上,供用户最终使用。deploy images镜像包括.kernel文件和 .initramfs文件。可以直接下载OpenStack官方发布的镜像(建议初学者优先使用)https://tarballs.opendev.org/openstack/ironic-python-agent/dib/files/中下载。user images镜像可以使用disk-image-builder工具来制作,不过目前此工具仅支持centos/fedora/ubuntu/opensuse等系统。如果想要构建UOS等镜像也可以使用虚拟机软件如vrish,创建好虚拟机后,虚拟机的qcow2磁盘文件可作为user images使用;

(4)设置驱动程序,在正确配置所有服务之后,您应该用Bare Metal服务注册硬件,并确认Compute服务看到可用的硬件。一旦bare metal节点处于available provisioning状态,Compute服务就可以看到。

OpenStack Ironic在部署时可能会遇到各种问题,经过一段时间学习,主要的报错原因分成如下几类:

1)环境部署问题,例如Ironic和Nova服务建议单独部署在不同的节点上;
2)构建或使用现有镜像问题,主要是自己制作的镜像会出现grub.efi找不到问题;
3)配置问题,由于OpenStack官网对于Ironic文档更新会慢与版本更新,导致有些配置有问题,例如报'ServiceTokenAuthWrapper' object has no attribute '_discovery_cache'可修改keystoneauth1/plugin.py。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/189497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DSVW通关教程

DSVW通关教程 首先整体浏览网站 Blind SQL Injection (boolean) 基于布尔型的盲注: HTTP请求的响应体中不会明确的返回SQL的错误信息, 当把参数送入程序查询时,并且在查询条件为真的情况下返回正常页面,条件为假时程序会重定向到或者返回一个自定义的错…

GICv3 基本规则

目录 1.中断类型 1.1中断标识符 1.2中断如何发送给中断控制器 二、中断状态机 2.1 电平触发 2.2 边沿触发 三、亲和性路由 四、安全模型 4.1 对软件的影响 4.2 对单一安全状态的支持 五、编程模型 本章介绍了符合GICv3架构的中断控制器的基本操作。它还描述了不同…

R语言与数据分析—上(篇幅长,全)

内容过长但详细,分三篇写,总结分享也供日后参考回顾一、什么是R语言R是免费的,是一个全面的统计研究平台,提供了各式各样的数据分析技术,R拥有顶尖的绘图功能二、R语言优点和缺点优点1、有效的数据处理和保存机制2、拥…

LwIP系列--数据包处理和PBUF结构详解

一、目的在之前的博文中我们介绍了LwIP中的内存堆和内存池实现细节以及它们之间的优缺点对比。本篇我们将介绍LwIP中另一个比较重要的知识点,即数据包管理和PBUF结构;个人认为PBUF的设计是LwIP整个源码的亮点之一(充分考虑了数据包处理的高效…

泛微发布数字化营销管理平台-九川汇

泛微全程数字化营销管理平台——九川汇,对内可以跨部门、跨组织高效协同,对外借助企业微信快速连接客户。 营销活动是企业运营中重要的一环,数字化工具如何满足企业的营销管理需求: 1、如何有效助力销售活动:帮助销售…

WebServer重写(一):日志库双缓冲和阻塞队列压测对比

目录前言重构动机模块介绍FileUtil,LogFile,LogStream,LoggingAsyncLogging(重要)压测源码前言 上次参考TinyWebserver的实现思路是:实现一个blockQueue, 然后实现一个日志接口类,这个接口类承…

ROS小车研究笔记1/31/2023 小车硬件结构及键盘移动控制节点

1 小车硬件结构 1 中控设备 上方的单片机用于控制电机运动,搭载wifi模块和电量显示屏。下方为树莓派,安装了ROS系统和Ubuntu系统,用于整个小车控制。显示屏和树莓派相连 2 传感器系统 激光雷达及转换器。激光雷达和转换器相连&#xff0…

【Rust】7. 枚举和模式匹配

7.1 枚举(可存储不同类型的值) 7.1.1 基本概念 7.1.2 枚举的简洁用法:构造函数 7.1.3 枚举的优势:处理不同类型和数量的数据 枚举成员的类型:字符串、数字类型、结构体、枚举注意:在未将标准库枚举引入当…

Java——两两交换链表中的节点

题目链接 leetcode在线oj题——两两交换链表中的节点 题目描述 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 题目示例 …

Vue中的$children与$parent讲解

$children与$parent直接演示代码父组件&#xff1a;<template><div><h2>BABA有存款: {{ money }}</h2><button>找小明借钱100</button><br /><button>找小红借钱150</button><br /><button>找所有孩子借钱2…

Day875.怎么给字符串字段加索引 -MySQL实战

怎么给字符串字段加索引 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于怎么给字符串字段加索引的内容。 现在&#xff0c;几乎所有的系统都支持邮箱登录&#xff0c;如何在邮箱这样的字段上建立合理的索引。 假设&#xff0c;现在维护一个支持邮箱登录的系统&…

【计算机图形学(译)】 一、介绍

【计算机图形学(译&#xff09;】 一、介绍1 介绍 Introduction1.1 图形领域 (Graphics Areas)1.2 主要应用 (Major Applications)1.3 图形APls (Graphics APIs)1.4 图形管线 (Graphics Pinpline)1.5 数值问题 (Numerical Issues)1.6 效率 (Efficiency)1.7 设计和编写图形程序 …

Detectron2部署教程,着重ONNX(从官网翻译)

本教程翻译至这里 https://detectron2.readthedocs.io/en/latest/tutorials/deployment.html detectron2模型训练以后如果想要部署&#xff0c;就需要导出专门的模型才可以。 三种模型导出方式 detectron2支持的模型导出方式有&#xff1a; tracing 该方式导出的格式是Torch…

常量池/String常见面试题

目录 常量池与运行时常量池 字符串常量池String_Table 字符串变量拼接 字符串常量拼接 字符串延迟加载 字符串intern方法 总结StringTable的特点 常量池与运行时常量池 二进制字节码包括 类的基本信息,常量池,类方法定义(包含虚拟机指令) class文件中除了有类的版本,字…

新突破:科学家发现全新的量子纠缠效应

布鲁克海文国家实验室&#xff08;图片来源&#xff1a;网络&#xff09;布鲁克海文国家实验室的科学家发现了一种全新的量子纠缠效应&#xff0c;即使宇宙距离相隔广阔&#xff0c;量子纠缠也会使粒子奇迹般地联系在一起。这一发现使他们能够捕捉到原子内部的奇特世界。这项研…

【算法自由之路】二叉树的递归套路

【算法自由之路】二叉树的递归套路 预热&#xff0c;二叉树的后继节点 话不多说&#xff0c;首先是一道练手题&#xff0c;寻找二叉树任意给定节点的后继节点&#xff0c;此二叉树具备一个指向父节点的指针。 后继节点&#xff1a;在中序遍历中于给定节点后一个打印的节点 p…

SpringBoot实现配置文件的加密和解密

一、项目搭建 1.新建一个springBoot项目 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocatio…

DAMO-YOLO : A Report on Real-Time Object Detection Design

DAMO-YOLO:实时目标检测设计报告在本报告中&#xff0c;我们提出了一种被称为DAMO-YOLO的快速准确的物体检测方法&#xff0c;该方法比最先进的YOLO系列具有更高的性能。DAMO-YOLO是由YOLO扩展而来的&#xff0c;它采用了一些新技术&#xff0c;包括神经结构搜索(NAS)、高效的重…

LeetCode——1669. 合并两个链表

一、题目 给你两个链表 list1 和 list2 &#xff0c;它们包含的元素分别为 n 个和 m 个。 请你将 list1 中下标从 a 到 b 的全部节点都删除&#xff0c;并将list2 接在被删除节点的位置。 下图中蓝色边和节点展示了操作后的结果&#xff1a; 请你返回结果链表的头指针。 来…

【Qt】3.菜单栏、工具栏、状态栏、铆接部件、核心部件、资源文件

目录 菜单栏 工具栏 代码 mainwindow.cpp 结果 状态栏 铆接部件 核心部件 代码 mainwindow.cpp 结果 资源文件 代码 mainwindow.cpp 结果 菜单栏 只能有一个 menuBar()返回一个QMenuBar *bar 将bar放入到窗口中setMenuBar(bar) 添加菜单addMenu("文件&…