Project Loda
Community
公司要改进现有的装机系统,尽量自动化、快速化的批量安装操作系统,提到自动化装机,可能很多人都知道cobbler,之前公司用的也是cobbler,但是在使用工程中遇到了很多问题,于是我们在开源社区调研了下,最终用了一款开源的系统:idcos,这套系统是用Go写的。随着我们的使用,发现这套系统并不能满足我们的所有需求,于是开始给官方提供patch,进行功能扩展,但是在整个过程中,并不是很开心,官方的响应速度慢的出奇,并且整个系统的设计有些细节并不是很满意,正好组里来了几个新人,感觉时候到了。
上图是我们在原有的系统之上做的功能扩展。
LODA
2015年12月开始我们试用了开源的idcos系统,其间我们尝试将遇到的一些问题和新的需求以PR的形式反馈给官方,但是官方反应始终很慢,另一方面,我们也尝试自己维护一个分支,但是后来由于开源代码的不可维护性,我们做了最坏的打算,从头开始。loda-server是整个项目最重要的组件之一,它为loda-agent和loda-portal提供API操作接口。
一个人一个星期完成了 server 和 agent 的功能实现。因为涉及到多机房部署,况且装机系统要和我们的线上生产环境要二层隔离开,以防止DHCP Server的影响。但是我们的最终目标是 二层不隔离(就算隔离,对用户透明),做到这一步,要把交换机的自动化配置搞好才行。现在多机房部署我们会使用多个装机vlan进行隔离。下面是我们的多机房架构,两个机房使用两个vlan。
Loda Arch
+--------------------------+
| |
| Portal | ZQ IDC
| |
+--+--+--------------------+
| |
++------------------------------+------------------------------+
| +----------------------+ | +----------------------+ |
| | | | | | |
| | Server | | | Server | |
| <---+ | | | +--> |
| | | | | | | | |
| | +----------------------+ | +----------------------+ | |
| | +-------------------------------------------------+ | |
| | | D|B | | |
| | +-------------------------------------------------+ | |
| | | | |
| | +--------------------+ | +---------------------+ | |
| | | Server (agent) | | | Server (agent) | | |
| | | | | | | | |
| | +--------------------+ | +---------------------+ | |
| +-> | <-+ |
| +--------------------+ | +---------------------+ |
| | Server (agent) | | | Server (agent) | |
| | | | | | |
| +--------------------+ | +---------------------+ |
| . | . |
| . | . |
| . | . |
| | |
+------------------------------+------------------------------+
SYQ IDC SJS IDC
configuration
原有开源的系统采用了rpm来分发硬件配置文件的,为了降低系统的维护性,提高系统的易用性,并且做到配置可以方便及时review,我们打算把所有的硬件配置脚本和ks文件放到自己的git上。
bootOS ----> 启动 agent ---> 判断硬件类型 ----> 拉取配置信息 ----> 配置 ----> 重启安装系统
我们在自己内部的gitlab上心建立了一个group: loda-tools 专门用于存放配置脚本。
test
跑到机房一个人守着服务器进行测试。
Monitor
由于批量装机拉取系统镜像的时候很耗费带宽资源,甚至可能成功系统的整个并发瓶颈,于是对系统做好流量监控就显得尤为重要,之前用go写了个小的流量监控系统,配合Grafana做展示。正好派上用场。
update 2016.05.05
五一过后,我们的系统迎来了第一次大规模上线,公司的一个核心机房来了170台服务器,我们打算用Loda给这批服务器安装操作系统。准备了这么长时间终于要上线了。
灰度测试了几台之后,开始将服务器序列号批量导入系统,系统开始自动安装。
30min后,系统安装完成。
问题总结:
- 1个C段的DHCP能够同时满足90台服务器安装
- 虽然刚刚上架,总会有一些故障的机器
- 型号对比严格
- raid必须测试 你面对的是各种各样的硬件