OpenSatck Ironic实现裸机管理
实习将近一个月了,期间不断努力,终于算是把OpenStack Ironic项目实现裸机部署的过程理解了一遍,并在小规模集群上成功实践。整理一些这段时间工作的内容,就算是一个阶段性的小项目总结了。
Ironic
Ironic是OpenStack的一个子项目,用于实现在云里像管理虚拟机一样管理裸机。
Ironic在OpenStack中的概念架构图如下
其中Bare Metal就是我们要控制的物理机了,Neutron为其提供网络服务,Cinder提供块存储服务,Glance则提供裸机部署时的镜像缓存服务,在部署过程中,我们的Ironic模块要和Neutron,Nova,Glance,Keystone这些核心的OpenStack项目配合,才能完美实现裸机部署的过程。
裸机部署过程中用到的一些核心的技术
- (PXE) 预引导执行环境,PXE是英特尔和微软开发的Wired for Management(WfM)规范的一部分。PXE使系统的BIOS和网络接口卡(NIC)能够从网络引导计算机而不是磁盘。引导是系统将OS加载到本地存储器的过程,以便处理器可以执行该过程。允许系统通过网络引导这种功能简化了管理员和服务器部署和服务器的管理。
- 动态主机配置协议(DHCP) DHCP是用于英特网协议(IP)网络的标准化网络协议,用于动态分配网络配置参数,例如接口和服务的IP地址。使用PXE,BIOS使用DHCP获取网络接口的IP地址,并找到存储网络引导程序(NBP)的服务器。
- 网络引导程序(NBP) NBP等同于GRUB(Grand Unified Bootloader)或 LILO(Linux LOader) - 传统上用于本地引导的加载器。与硬件驱动器环境中的引导程序一样,NBP负责将OS那个加载到内存中,以便可以通过网络引导操作系统。
- 普通文件传输协议(TFTP) TFTP是一种简单的文件传输协议,通常用于在本地环境中的计算机之间自动传输配置或引导文件。在PXE环境中,TFTP用于使用来自DHCP服务器的信息通过网络下载NBP。
- 智能平台管理接口(IPMI) IPMI是系统管理员用于计算机系统的带外管理和监视其操作的标准化计算机系统接口。这是一种通过仅使用于硬件而不是操作系统的网络连接来管理可能无响应或断电的系统的方法。
Ironic裸机部署的过程
- 核心流程分析
- 1、引导实例请求通过 Nova API 进入,通过消息队列进入 Nova 调度程序。
- 2、Nova Scheduler 应用过滤器并查找符合条件的虚拟机监控nova调度程序,还使用flavor的extra_specs(例如 cpu_arch)来匹配目标物理节点。
- 3、Nova compute 管理选中hypervisor的资源声明。
- 4、Nova compute 管理器根据 nova引导请求中网络接口在Networking服务中创建(未绑定)租户虚拟接口(VIF)。这里需要注意的是,端口的MAC将随机生成,并且当VIF连接到某个节点以对应于节点网络接口卡时MAC将更新。
- 5、nova compute创建一个 spawn 任务,它包含所有信息,例如从哪个镜像引导等。它从Nova compute的virt层调用 driver.spawn。在spawn过程中,virt驱动程序执行以下操作: 更新目标ironic节点的deploy镜像,实例UUID,请求的功能和各种flavor属性。通过调用ironic API 验证节点的电源和部署的接口。将之前创建的VIF附加到节点。每个neutron port 可以被附加到任何ironic port和port group,port groups 比 ports有更高的优先级。在Ironic这边,这个工作时由 network interface做的。
- 6、Nova 的 ironic驱动程序通过 Ironic API 向服务裸机节点的 Ironic conductor 发出部署请求。
- 7、配置虚拟接口,Neutron API更新DHCP端口以设置 PXE/TFTP选项。在使用neutron网络接口的情况下,ironic在网络服务中创建单独的配置端口,在 flat 网络接口的情况下,nova创建的端口用于配置和部署实例网络。
- 8、Ironic节点的启动接口准备PXE配置和缓存 deploy kernel和 ramdisk。
- 9、Ironic 节点通过 Management interfacec发出命令来启动节点的网络引导。
- 10、Ironic 节点的 Deploy Interface 缓存实例镜像(在 iSCSI 部署接口的情况下),缓存kernel和ramdisk,在netboot的时候需要它。
- 11、Ironic节点的Power Interface 指示节点的电源接口通电。
- 12、节点引导部署ramdisk
- 13、根据确切的驱动程序需求,conductor 将通过iSCSI复制镜像到物理节点。
- 14、节点的引导接口将 pxe config切换为引用实例镜像,要求 ramdisk agent 软关闭节点电源,如果ramdisk agent 软关闭电源失败,则通过IPMI/BMS呼叫关机裸机节点电源。
- 15、部署接口会触发网络接口,以便在创建时删除配置端口,并将租户端口绑定到节点。然后给节点上电。
- 16、裸机节点的 provisioning state更新为active状态。
部署实践
- 安装好ubuntu server 16.04系统作为裸机部署的控制节点
- 配置网络
1 | auto eth0 |
eth0 做为 API_NET 接口,提供 OpenStack 的管理网络,我们给它分配一个静态IP,这里的地址需要和你的实际网络环境一致。
eth1 做为 EXT_NET 接口,提供 OpenStack 的 neutron 网络,这里我们启动网口但是不对它进行IP配置。
- 安装kolla环境,部署OpenStack with Ironic
更新apt源,安装依赖
1 | sudo apt-get update |
配置 pip 加速,使用阿里云 pip 源
1 | mkdir ~/.pip |
安装 kolla,kolla-ansible,python-openstackclient
1 | sudo pip install --upgrade pip |
Kolla部署Ironic配置
1 | sudo cp -r /usr/local/share/kolla-ansible/etc_examples/kolla /etc/kolla |
1 | sudo vim /etc/kolla/global.yml |
Ironic 相关配置
1 | # 启用内核支持模块,删除open-iscsi |
kolla快速部署环境
1 | # 生成密码 |
配置br-ex
1 | # 配置 eth1 即neutron对应的网卡所在的网络环境 |
- Ironic 初始环境 SetUp
1 | #!/bin/bash |
- 使用diskimage-builder制作ubuntu部署镜像
1 | sudo pip install diskimage-builder |
- 将制作的用户镜像上传到 glance
1 | glance image-create --name my-kernel --visibility public \ |
- 生成ssh-key,以便免密钥登录实例
1 | # 生成密钥对 |
- 注册BareMetal节点,启动部署裸机的操作系统
1 | source server_ipmi --key-name mykey --network public1 node1 |
脚本github地址 https://github.com/vajn/ironic_setup

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Docker的4种网络模式
我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: · host模式,使用--net=host指定。 · container模式,使用--net=container:NAME_or_ID指定。 · none模式,使用--net=none指定。 · bridge模式,使用--net=bridge指定,默认设置。 下面分别介绍一下Docker的各个网络模式。 1 host模式 众所周知,Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿...
- 下一篇
HAProxy高性能软负载均衡器
现在公司实现高可用已经成为必不可少的一环,在众多的负载均衡集群方案中,Haproxy是比较有名的一个。它可以实现TCP或Http的负载均衡。优点如下: 免费开源,与硬件负载均衡相比划算很多 最高可以维护40000~50000个并发,作为软件级别的负载均衡来说,实在强大 支持多种负载均衡算法,同时支持session保持 支持虚拟主机 拥有服务器监控页面,可以了解系统的实时运行状态 借用官网的图,图中的HA即为Haproxy软件,下面的PROXY为要代理的服务器,客户端只需要访问HA,相当于在访问PROXY。 image.png 演示 像这种软件的东西,直接动手比说理论有用的多。我还是基于Docker演示,明白其原理主要是配置文件,用虚拟机或容器都是类似的。 拉取Haproxy:1.8镜像 docker pull haproxy:1.8 拉取httpd镜像,并且准备web容器 docker pull httpd:2.4 docker run -it -d --name web1 httpd:2.4 docker run -it -d --name web2 httpd:2.4 docker...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度