方慧琳 360云计算 

女主宣言

裸金属特性是一种将物理设备作为资源提供给租户的云计算服务,租户通过该服务可申请、管理和配置相应的物理设备资源,本文将介绍360Stack裸金属服务器的部署实践。

PS:丰富的一线技术、多元化的表现形式,尽在“360云计算”,点关注哦!

1

裸金属介绍

裸金属特性是一种将物理设备作为资源提供给租户的云计算服务,租户通过该服务可申请、管理和配置相应的物理设备资源。这种物理设备是未安装操作系统的服务器,又称为裸金属服务器,简称裸金属。

在Openstack中,由Ironic这个组件来提供裸金属的部署和管理。Ironic需要与Keystone、Nova、Neutron、Cinder以及Swift进行交互,像Nova创建虚拟机一样,需要对应的认证服务、网络服务、块存储服务、对象存储服务等。

对Nova而言,通过Ironic部署物理机,和部署虚拟机的调用流程是一样的,都是通过Nova的接口来执行创建实例。不同之处在于,调度裸金属时所用的套餐,与创建虚机的套餐不同;裸金属节点所属的nova-compute驱动与虚机要用的nova-compute驱动不一样;虚拟机底层驱动采用的是虚拟化技术,而物理机采用的是PXE和IPMI技术。以下是Ironic与Nova,Neutron,Glance,Cinder,Swift等组件交互的逻辑架构图。

2

裸金属服务的部署阶段

部署阶段


部署阶段也称为Provision/Deploy阶段,租户向云平台申请裸金属资源,云平台为租户分配资源,并为裸金属加载系统镜像。

1)在deploy阶段,ironic-conductor将裸金属设置为PXE引导安装模式,通知neutron准备好TFTP配置,然后启动裸金属。裸金属上电后学习到DHCP报文,根据DHCP报文的TFTP Server地址,向Ironic节点获取kernel及ramdisk镜像并启动,这个ramdisk里包含了ironic-python-agent;在实际使用中,iPXE会比PXE下载镜像的速度更快,推荐使用iPXE更好。

2)启动后,ironic-python-agent会和Ironic控制节点互通,连接到Ironic控制节点的http server,获取完整的用户系统镜像。

运行阶段


也称为Tenant阶段,裸金属服务器启动系统镜像,业务开始运行

(1) 待部署阶段的镜像获取完成,Ironic通知裸金属重启,则进入租户网络运行。

3

不同网络模式下的裸金属部署

原生Ironic支持Flat和VLAN模式的裸金属部署,而对于Vxlan模式不支持,我们结合networking-l2gw这个项目,实现了Vxlan网络模式下的裸金属部署。下面介绍一下每种模式的组网场景。

flat网络模式


1) ironic控制节点所在的管理网络(management network)要和裸机的ipmi网络互通,因为要对裸机做开关机,设置bios启动项等操作;

2) 裸机的deploy网络及tenant网络使用的是同一个flat网络(图中的external network),无需进行切换,且该网络要与管理网络互通;

3) 下图为裸机tftp的一个截图,deploy阶段分配了一个external ip,部署结束后的租户网络依然是使用这个ip。


vlan网络模式


(1) 使用直通网络部署,需要在neutron里加入networking-generic-switch这个插件,

(2) Ironic服务在部署阶段,会通知插件将裸金属所接的交换机端口配置为使用deploy vlan(蓝色实线)

(3) 在运行阶段,插件将裸金属所接的交换机端口配置为使用tenant vlan(橘色实线)

(4) 部署阶段和运行阶段也可以使用同一个vlan,那么会分配一个相同的IP,无需进行切换。

vxlan网络模式


(1) 安装networking-l2gw后,在neutron里配置并启动neutron-l2gw-agent

(2) 裸金属连接的交换机开启ovsdb的功能。

(3) 在neutron里创建l2gw及l2gw connection, neutron会调用l2gw对应的plugin去建立控制节点到交换机,以及计算节点到交换机的隧道,从而来打通虚机到裸机的vpc网络。



(4) 在Ironic控制节点上需要创建一个部署网络里的虚拟网卡,通过这个虚拟网卡,裸金属可以与Ironic控制节点上的ironic服务/tftp server/http server互通,从而获取到部署镜像及用户系统镜像。

(5) 计算节点与交换机建立的隧道信息,以及交换机上学习到的虚机MAC地址信息可以通过执行ovsdb-client dump --pretty tcp:<交换机ip>:6632 看到




相关文章

  • https://docs.openstack.org/ironic/latest/

  • http://kimizhang.com/neutron-l2-gateway-hp-5930-switch-ovsdb-integration/


©著作权归作者所有:来自51CTO博客作者mob604756f04b77的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 监控系统项目实施--安装与部署-- MySQL数据库
  2. 监控系统项目实施--安装与部署-- MySQL数据库--分区表创建
  3. 监控系统项目实施--安装与部署-- MySQL数据库--分区表创建2
  4. 监控系统项目实施--安装与部署-- MySQL数据库--备份脚本
  5. K8S中部署KAFKA集群
  6. Docker容器引擎的安装部署
  7. 一键实现自动化部署(灰度发布)实践
  8. kubernetes ingress 原理、部署
  9. 在复杂业务体系中DevOps理论及方法的实践

随机推荐

  1. 如何配置使用CAS的PHP客户端--迁移文章(bl
  2. 无法使用dropzone上传多个文件
  3. 阿里云ECS服务器Linux环境下配置php服务
  4. phpstorm+wamp+xdebug配置php调试环境
  5. 印像新闻系统v1.0.c(php版下载)
  6. 是否有可能在PHP网站上进行Windows身份验
  7. 使用 PHP usort() 通过用户自定义的比较
  8. 锁定表是否可以通过包含的脚本访问
  9. 更改数组键而不更改顺序
  10. php执行shell不阻塞方法