什么是自动发布系统?我想先简单说一下我对这种系统需求的理解:
- 通过可视化通用平台(如WEB浏览器)来实现系统发布、系统备份、系统回滚功能
- 按服务类型进行集群任务规划和组织
- 定义常用任务和限制不同用户拥有不同的任务操作级别
- 一次操作,多机更新
此系统应用的前置硬件与网络要求:同一内网及相同的软硬件安装部署配置。
自动发布系统的需求其实来源于我日常工作的体会,相信很多人也遇到过与我类似的情况。例如我经常涉及WEB系统的部署更新,归纳下来就是以下几步:
- 上传更新包到服务器(通过FTP、lrzsz、SCP等方式)
- 解压并替换相关资源(image,css,js或.class文件)
- 重启web容器(如tomcat等)
相信大家都和我有相同的一种感受:操作超级乏味,易出错,大量时间浪费在击打不同的linux命令中,重复性高。所以自动发布系统的需求迫在眉睫,我心中理想的部署过程是:
- 选择更新服务范围(即集群中需要更新的机器)
- 选择更新包并上传
- 点击“开始部署”等待自动任务操作完成,过程中不断显示任务执行状态,最后响应部署结果(自动备份,更新替换资源,自动重启服务等)
目前我设想中自动发布系统整体组织包含以下内容:
- 1台或多台web容器部署基于WEB的管理及操作界面(主要操作工作都基于此WEB系统)
- 1台或多台zookeeper服务器(用于将部署相关的具体任务分发到不同机器,简单说可以是linux的命令,如cp,ftp,ps,kill等)
- 不同实际服务所在机器运行一个后台进程,即zookeeper客户端(接收管理机分发的任务命令)和运行本地命令(如cp等)
具体架构图如下:
主要三大部分:
- 自动发布WEB管理系统集群
- zookeeper集群
- 自动发布后台进程(驻留在各服务器上,每台服务器运行一个此进程,可同时操作多个此服务器上部署的服务【或应用】)
以上我和同事设想的自动发布系统的蓝图,暂未实现(正在计划适时实现基础DEMO并部署运行测试)。