前言:

    saltstack是个好东西,我现在很多的api接口都开始用saltstack做。有的时候会有在页面上传文件,然后推送到客户端的情况。或者是把安装配置的安装包推送到客户端。 唉, salstack下发文件慢,大家有没有头疼过,我是真的头疼过。  


其实说起来大家也没必要非要用saltstack做文件的下发,看个人的喜好,有些人会用git做,我这里只是为了解决速度的问题,git在大文件和多minion拉取文件下,也不见得快。也有哥们用saltstack rsync的组合,大家也都知道rsync分集中模式,一种是密码,一种是cs的认证,有点麻烦。

我上面说的废话,当然还是要看情况做下一步的:

如果你是下发配置文件,这个时候你要用saltstack的sls相关的功能。

如果你只是单纯下发文件,这个时候你在用saltstack的file模块,那会痛苦的,因为他有点慢。

说下我这这边因为saltstack文件慢的问题,在项目中的升级情况:


刚开始的时候用的是saltstack本身的文件传输,经常传大的文件,速度真的不乐观。一开是我觉得zeromq和msgpack是个很好的组合,有一次大意了,推了一个大的文件包,结果导致salt master卡死了。。。

这里标注下,我的原文地址 blog.xiaorui.cc

后期我这边用tornado做下载的接口,慢慢的也开始承受不了了。

现在的模式是用socket的模式,用msgpack socket来解决,堵塞的问题是用threading线程池解决的。但是zeormq也是个高端版的socket,我这边用底层的socket对于大文件是比zeromq强,但是压力大了,还是蹦出异常。。。

现在的需求是,我需要在下载文件的时候,提交一个由master分配给他的临时key,带着这个key去下载文件。 其实方法比较的简单,比如让10个人下载这个文件,我就产生了10个临时的key,然后用saltstack api的模式,传给客户端,然后客户端拿着这个key去下载。

我现在的想法是用 nginx lua的模式,在access_by_lua里面增加redis的key的判断,当key匹配成功后,我再给他下载的地址。


这边也已经大体实现了,但是和后端的交互产生了冲突,正在解决。。。。还有一个问题是用ngx.location.capture 做子访问的时候。

还是那句话,你要是不想搞复杂了,就简单的用 saltstack rsync的方案就行啦。 如果想折腾,有体现高端的话,可以用用我介绍的那几种方法, sokect或者是nginx lua redis的模式。


希望官网能出一个好的方案来解决saltstack下发文件速度慢的问题。



对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!

saltstack cp实现配置代码文件的管理拉取和回滚下发

前沿:       前段时间搞了集群配置系统,正在搞配置文件的备份,中心点上传,文件hash记录,配置文件的下发回滚。 这里要用到saltstack...

阅读全文

发表评论