需求
最近前同事问我有没有免费或者开源的硬件运维管理平台,通过此平台可以实现包括自动抓取服务器配置、带外管理、开关机、bios配置、固件升级等等功能。
虽然我们可以通过IPMI标准监视接口跨不同的操作系统、固件和硬件平台,智能的监视、控制和自动回报大量服务器的运作状况,以降低服务器管理成本;但是服务器厂商都有自己的硬件管理平台,如华为的BMC、戴尔的iDRAC,没有一个统一的管理平台服务可以兼容各家厂商。
解决方案
现在我们有了一个靠谱的开源解决方案:RackShift。
RackShift 是开源的裸金属服务器管理平台,功能覆盖裸金属服务器的发现、带外管理、RAID 配置、固件更新、操作系统安装等。
RackShift 要解决的问题包括:
各种网络环境下裸金属服务器的自动、手动发现;
裸金属服务器的带外控制管理,包括开关机、重启、配置 PXE 等;
裸金属服务器批量 RAID 配置、固件更新、装机等。
RackShift目前已可以支持的机型:
品牌 型号
DELL EMC Power Edge R630 R640 R720 R730 R740 R910 R920 R930系列
HPE Proliant 380 580 Gen8 Gen 9 Gen 10 系列
Inspur 5280 8480 M4 M5 系列
IBM X3550 X3650 M4 系列
H3C R4900 G3 系列
ZTE R5300 G4 系列
系统架构
RackShift 遵循 GPL v2 开源协议,使用 SpringBoot/Vue 进行开发,界面美观、用户体验好,集成并扩展 RackHD,支持的X86 服务器品牌包括浪潮、戴尔、华为、联想、惠普等。
1.技术栈:
前端: Vue.js
后端: Spring Boot
数据库: MySQL
另外,RackShift 使用、集成、借鉴的其他开源项目:
RackHD:RackShift 集成和参考了 RackHD 提供的裸金属服务器管理能力和思路;
MAAS:RackShift 参考了 MAAS 提供的裸金属服务器生命周期纳管思路;
Digital Rebar:RackShift 参考了 Digital Rebar 提供的操作方式和 UI 参考;
Element:RackShift 使用 Element 提供的优秀前端组件库。
2.软件分层
组件说明:
RackShift-WEB:基于 VUE2.6.11 开发的单页应用
RackShift-Server:基于 SSM 的 SpringBoot 应用,对 RackHD 的操作进行更高的抽象并且控制与 RackHD API的交互,控制 RackShift-Proxy 节点,与 RackShift-WEB 一并打包成一个应用部署
RackShift-Proxy:可单独与 RackHD 模块部署,主要用于主节点控制客户节点进行注入镜像下发,DHCP 配置,远程 KVM 等等
RackHD:DELL EMC 开源的裸金属供应软件,现已停止维护
Mysql:RackShift-Server 主要运行数据的存储区
Mongo:RackHD 与RackShift-Server 的运行数据存储区
RabbitMQ:各组件之间通信的中间件
DockerEngine:各组件都是以 Docker 容器运行在节点计算机
3.组件调用关系
部署
1.网络结构
RackShift 网卡说明:
管理:与 BMC 管理网络三层通信,通过该网络 RackShift 能控制物理机的 PXE 启动等行为
PXE :与 物理机 PXE 网口直连,通过该网络 RackShift 能下发 PXE 过程中需要的文件
2.安装
# 1.在线安装
sh -c "$(curl -sSL https://github.com/rackshift/rackshift/releases/latest/download/quick_start.sh)"
# 2.离线安装
tar -zxvf rackshiftV1.4.0-offline.tar.gz
cd rackshiftV1.4.0-offline/installer
./install.sh
1
2
3
4
5
6
7
**注意:**安装过程中需要您手动输入服务器上用作 PXE 的网卡 IP 地址作为 RackShift 服务器的 IP 地址。
3.访问
地址: http://ip:80
账号:admin
密码:123
1
2
3
服务器装机演示
1.选择需要装机的服务器
2.工作流操作,安装Centos7 64位版
3.设置工作流参数
在工作流中设置服务器密码及网卡信息,操作系统安装过程中会进行自动配置。
4.执行工作流
执行工作流后,系统自动下发并执行安装
此时可在远程控制台,查看执行情况
总结
RackShift 在基础运维领域真正做到了我们想做但却做不到的事情,将其应用到生产环境可以节省我们很多的运维成本。