暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

大规模集群下使用P2P技术软件(Murder)分发大文件

大数据田地 2018-07-22
358

一般情况下,在运维多台服务器的时候,使用Ansible来完成文件的分发和命令的执行。但如果运维的机器数量多,而且内网带宽有限的情况下,比如,需要向500台机器分发一个1G大小的升级包,这时候如果使用Ansible直接分发,那么肯定会引起带宽占满,导致SSH链接超时,Ansible执行卡死,分发任务执行失败。

那么对于这种大文件的大规模分发,能想到的好的解决方案就是利用P2P网络实现,节省带宽,提高效率。关于p2p网络,大家可以自行搜索,典型的代表就是BitTorrent(BT下载)。

这里介绍的P2P文件分发的软件是Twitter开源的Murder。早期Twitter每次版本更新,需要向上万台服务器分发代码,从中央服务器向那么多台服务器上分发文件,服务器越多,分发时间越长。后来Twitter研发了Murder,用来解决这个问题,以前需要40-60分钟完成的代码发布任务,使用Murder之后,只需要几十秒就可以完成。


Murder的架构




整个Murder由三个组件构成:

  • Tracker

它是运行在一台服务器上的单个服务,用来根据哪些torrent文件正在被分发,以及管理和维护Peer节点的信息和状态。

  • Seeder

存放需要向其他主机分发的文件的服务器。Seeder将要分发的真实文件制作成torrent,这个torrent文件很小,只存放关于真实文件的基本Hash信息,torrent文件需要先分发到要下载文件的服务器(peer)上。

  • Peer

就是要接收文件的服务器,他们之间可以互相传输文件。

Murder的使用示例



我这里有4台服务器,角色分别如下:

tracker  192.168.1.220

seeder  192.168.1.220

peers   192.168.1.222、192.168.1.228、192.168.1.229

Tracker和Seeder在同一服务器上。

1.    下载和部署Murder

从https://github.com/lg/murder下载zip包,并解压到/opt目录下;

在所有的服务器(Tracker、Seeder、Peers)上,将Murder部署在/opt目录下,部署后的目录为:/opt/murder-master

2.    启动Tracker服务

在Tracker服务器上执行:

cd opt/murder-master/dist

nohup python murder_tracker.py --port 8998 --dfile data --logfile urder_tracker.log &

 --port tracker监听的端口,默认是8998

--dfile  存储近期下载信息的文件

--logfile  tracker日志文件,默认是标准输出

3.    在Seeder服务器上准备好要分发的文件,并创建种子

Seeder服务器上,要分发的文件:

[liuxiaowen@test04v ~/lxw]$ du -h home/liuxiaowen/lxw/test.tar.gz

3.1G    home/liuxiaowen/lxw/test.tar.gz

制作种子:

cd /opt/murder-master/dist/

python murder_make_torrent.py /home/liuxiaowen/lxw/test.tar.gz 192.168.1.220:8998 /tmp/test.tar.gz.torrent


其中,第一个参数为要分发的文件;第二个参数为Tracker服务器的地址和端口;第三个参数为torrent文件路径。

将种子文件分发至Peers

用Ansible将很小的torrent文件,分发至所有peers节点,关于Ansible的使用,请自行搜索,你也可以使用SCP。

ansible myhosts -m synchronize -a “src=/tmp/test.tar.gz.torrent dest=/tmp/”

启动Seeder服务:

cd /opt/murder-master/dist/

python murder_client.py seed /tmp/test.tar.gz.torrent /home/liuxiaowen/lxw/test.tar.gz 192.168.1.220

最后一个IP是Seeder服务器本机IP。

4.    在peer节点执行下载

单个节点下载:在peer节点上,

cd /opt/murder-master/dist/

python murder_client.py peer /tmp/test.tar.gz.torrent /tmp/test.tar.gz 192.168.1.220

单台当然不能体现Murder的优势了,使用Ansible命令,在多台Peer节点上同时下载:

ansible myhosts -m shell -a “python /opt/murder-master/dist/murder_client.py peer /tmp/test.tar.gz.torrent /tmp/test.tar.gz 192.168.1.220″

 

PS:这种P2P分发,在大规模服务器环境下才能体现出优势,节点越多,分发任务消耗的整体时间越短。。

 

 


软件
文章转载自 大数据田地,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

深圳SEO优化公司诸城企业网站设计价格三亚百姓网标王公司漯河网站优化按天扣费报价贵港百度网站优化公司忻州网站seo优化推荐玉林网站推广方案多少钱梧州百度seo哪家好宁德网站seo优化哪家好大浪网站设计报价绥化营销型网站建设报价海南百度标王烟台关键词排名公司白银模板推广营口模板网站建设哪家好舟山seo网站优化多少钱内江网络营销公司永州关键词按天计费公司滨州网站建设设计报价西安网站定制报价随州SEO按天计费报价嘉兴如何制作网站多少钱沈阳网站开发多少钱福永SEO按天扣费晋中建网站公司坪地网站优化推广价格平湖网站优化排名多少钱上饶网页制作廊坊SEO按效果付费价格布吉网站优化报价莆田网站推广歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化