运维自动化之Web文件分发系统实践(1)
2018-09-02 22:03 by 戎"码"一生, ... 阅读, ... 评论, 收藏, 编辑Web文件分发系统实践
@智客幸达
目录
- 应用场景
- 基本设计
- 总结
运维童鞋在日工作中,经常需要批量在服务器上安装某些应用程序,比如安全相关的软件,监控相关的服务等,还有就是经常会帮助同步更新生产环境上的产品程序。运维同学可能会借助一款开源软件rsync通过配置来实现文件跨服务器同步的目的。rsync是Linux上的一款文件同步工具,他可以以其特有的算法,对两个目录进行本机或跨机器同步。cwrsync是支持windows的版本。具体使用方法可以参照《使用cwRsync在Windows的目录之间增量同步文件》。
在构建运维自动化平台的过程中,我们也借助了rsync工具,将其融入到其中。但是作为一名开发人员我们也尝试了自己开发一套类似rsync的同步功能小工具。rsync是很强大的,但是我开发的工具是基于web的且能够监控和实时返回同步中任何细节。这样,其实也是更好的让运维童鞋操作起来更方便。
最常用的就是发布产品程序,通过一个简单按钮发起多任务,实现对各个部署上服务器进行同步。
当然需要到一下基本功能:
- 支持多服务器并行
- 消息实时反馈到面板
- 实现文件md5对比
参照rsync的实现方式,我也设计了一个了客户端+服务端模式。
客户端是一个web站点,上面是任务列表,一个任务对指向多个目标服务器。目标服务器上安装了代理,并开放了端口给客户端(客户端不需要知道服务器的用户名+密码,只要知道IP即可)。当我单机某个任务时,任务启动,向各个目标服务器指定位置发送程序。如下:
理解了基本架构设计,剩下的就是程序流程设计了。目前的流程能够满足要求,尽管已经在生产环境上经过实践,但是也会有很多改进的地方,欢迎大家不吝斧正。基本流程如下:
目前能够实现服务器同步的开源工具处理rsync,还有Jekins,但是这些工具都是很单一的,在实际应用总是不能满足我们自己的需求。我们可以通过整合多个现成工具来达到我们的目的,也可以参照这些开源工具,来造出一套完美匹配自己业务的轮子。在运维自动化平台搭建过程中,我们希望能够有自己的原创,一个公司或者个人,這些都是技术积累。
编者按:
- 芯片事件告诉我们,"拿来主义"和"全盘照搬”的危害太大。
- 不管是公司还是个人都应该有一定的“原创精神”,在关键节点,哪怕是在自己造轮子也在所不惜。
个人微信公众号: