开发者社区> 技术小胖子> 正文

nginx lua redis解决saltstack下发传输文件慢的问题思路

简介:
+关注继续查看

更多saltstack的文章总结在:

http://rfyiamcool.blog.51cto.com/1030776/1357677



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


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

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

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

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

原文:http://rfyiamcool.blog.51cto.com/1030776/1388127


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


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


后期我这边用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 做子访问的时候。


1
2
3
4
res = ngx.location.capture(
       '/api/redisget',
       { method = ngx.HTTP_POST, body = post_from_key }
   )


原文:http://rfyiamcool.blog.51cto.com/1030776/1388127

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


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





 本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1388127,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
VS2010无法保存项目文件(.csprj)的问题解决方法
VS2010无法保存项目文件(.csprj)的问题解决方法   【出错提示】保存项目文件“XXX”时出错。类没有注册。正在查找具有CLSID的对象:{D9B3211D-E57F-4426-AAEF-30A806ADD397}。
1004 0
redis配置文件详解
######################### 通用 ######################### # 启动后台进程 daemonize yes # 后台进程的pid文件存储位置 pidfile /var/run/redis.
1328 0
如何重置Joomla并解决文件或数据库问题
如果您在Joomla网站上遇到问题,那么重新安装其核心文件和数据库可能是最好的解决方案。
788 0
从 Git 提交历史中「恢复」文件修改时间
几个月之前,我贪图部署方便,把博客的部署方式,从本地编译推送更新变成了借助 Github 和 Travis-CI 自动部署。 用了几个月一直相安无事,直到几天前我小小修改了一下主题,展示了文章的更新日期。 本地调试的时候一切正常,直到我把变更推到 Github,触发了自动部署。下图就是出乎意料的
5610 0
Trace文件过量生成问题解决
查看用户临时文件(trace文件)所在位置 如果是trace文件(.trc)大导致的 SQL>show parameters user_dump_dest 在路径下查看 alert_log 文件 参考资料 主要参考文章:http://blog.
923 0
21117
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载