文件监听 inotify
inotify文件事件的自动化部署
-
需要安装,补充inotify命令inotify-tools,inotifywait.
1
sudo apt-get(yum) install inotify-tools
-
inotifywait -h 了解其使用方法
基于文件事件的自动化部署
- 1.需求: 由于公司所有服务器采用跳板机(jumpserver)登录方式,目前无法通过任何方式进行直连以及文件的直接传输,于是乎,程序更新部署(尤其是测试环境)显得及其麻烦.当前只能通过将程序文件上传(ftp)到目的服务器临时目录 /tmp,然后再进行二次操作.
- 2.解决方案: 考虑二次操作,有几个解决方案,其中2个比较代表性的是:
- 2.1 通过supervisord配置,界面管理重启.
- 2.2 通过文件监听inotifywait自己实现监听重启脚本
- 3.方案对比
- 3.1 supervisord劣势: 需要额外的配置文件,需要开放管理界面端口,(根据以往的经验,)容易失效
- 3.2 supervisord优势: 界面管理,可以随时重启当前服务
- 3.3 inotifywait劣势: 每次重启需要手动出发事件(相当于去supervisord界面点击一下),但是要通过jumpserver的界面去操作,中间多了好几步.
- 3.4 inotifywait优势: 安装简单(就是一个安装命令和一个监听脚本),根据自己的服务特性写脚本足够灵活(不必重复的配置文件)
微服务配置脚本
由于完全自己开发,所有的脚本,配置格式都比较统一,所以脚本不会复杂
1 |
|
- 说明: 略
- 操作: 每次上传完新程序文件,只需要删除对应目录下(自动生成的)EOF文件即可重启
- 执行: 不用 -d的原因是 -d -o 执行的时候出现了问题(提示日志文件权限之类的,没有细查…)
为什么不监听文件上传完成后重启
- 大文件断续上传,会产生好几个CREATE\CLOSE事件,不好判断(主要是我也不会)文件是否真的完整上传完成.
- 上传时就在同一个目录下,删除一个EOF文件足够简单.并且这样还可以支持无更新重启(虽然上面脚本没支持)
- 动作缓冲,潜意识提醒你检查服务状态^0_0*