免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 23482 | 回复: 34
打印 上一主题 下一主题

详细讨论一个常见的网络工具如何设计 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-01 17:49 |只看该作者 |倒序浏览
本帖最后由 duanjigang 于 2011-03-10 18:11 编辑

2011-03-10 18:00搞了三四天终于完成了一个版本,先做成了实时的反馈结果,测试一天,再调试多进程的异步方式,哈哈,测试命令如下:

  1. #test batch upload file
  2. ./cmclient -p 12345 -f ip1.conf -u 1.txt -d /tmp/1/2  -n 20

  3. #test batch run commds
  4. ./cmclient -p 12345 -f ip.conf -c "uname -a"  -n 20

  5. #test single host command running
  6. ./cmclient -p 12345 -h 10.32.20.200 -c "uname -a"  -n 20

  7. #test single host file upload
  8. ./cmclient -p 12345 -h 10.32.20.200 -u Makefile -d /tmp/  -n 20
复制代码
运行结果如下:

  1. deliver file [1.txt] to directory [/tmp/1/2]:
  2. 10.32.20.211
  3. success
  4. 10.32.20.200
  5. success
  6. 10.32.20.2
  7. failed
  8. run command [uname -a]:
  9. 10.32.20.211
  10. Linux localhost.localdomain 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux
  11. 10.32.20.224
  12. Linux localhost.localdomain 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux
  13. 10.32.20.227
  14. Linux localhost.localdomain 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux
  15. 10.32.20.228
  16. Linux localhost.localdomain 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux
  17. 10.32.20.231
  18. 10.32.20.200
  19. Linux localhost.localdomain 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux
  20. 10.32.20.214
  21. Linux localhost.localdomain 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux
  22. 10.32.20.217
  23. Linux localhost.localdomain 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux
  24. 10.32.20.218
  25. Linux localhost.localdomain 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux
  26. 10.32.20.219
  27. Linux localhost.localdomain 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux
  28. run command [uname -a]:
  29. 10.32.20.200
  30. Linux localhost.localdomain 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux
  31. deliver file [Makefile] to directory [/tmp/]:
  32. 10.32.20.200
  33. success
复制代码
========================================
需求是这样,做一个部署在客户端的程序和部署在服务端的程序,具体目标如下:
客户端通过参数方式,向多个服务端发送指令,客户端期望知道服务端执行的最终结果。

考虑到的问题是:
第一:接收命令的服务器可能比较多,上万台,因此,客户端需要多线程去发送,当然不能一个主机一个线程吧?应该给每个线程分配N个节点,尽量平均。
第二:客户端发给服务器的命令不一定就是立刻能返回的,可能执行时间比较长,比如让服务器去下载一个文件,然后返回当前目录的大小,因此,我想客户端不能在当前连接中等待服务端返回执行结果吧,也就是说,服务端需要启动一个线程或者进程异步去执行这个任务。
第三:如果服务端异步执行命令,等命令执行完以后,怎么通知客户端,我现在能想到的就是,客户端在分发命令时,把自己的IP和端口以及命令ID一并发给每个服务器,服务器上的线程执行完以后,再连接该命令对应的客户端的地址,把命令ID以及结果反馈给原来发送命令的客户端机器。

关于以上三点,不知诸位有无意见或者更好的方法,谢谢讨论!

附上我设计的结构图,欢迎讨论


2011-03-03
今天实现了个基本的模型,能跑起来了,把结构修改了下,更新上来,但是如果服务器过多的话,可能出现反馈时N对1的情况,会对客户端主机造成类似DOS synflood的攻击吧?呵呵,不知道是不是这样,专业人士帮分析下?详细信息见23楼

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2011-03-01 17:51 |只看该作者
通常比较大的互联网公司应该就会遇到这样的需求

论坛徽章:
0
3 [报告]
发表于 2011-03-01 17:54 |只看该作者
通常比较大的互联网公司应该就会遇到这样的需求
Godbach 发表于 2011-03-01 17:51



    嗯,通过脚本实现的话,异步执行和反馈检查个人感觉不太好做,也不太准确,往往需要人为的判断和纠错。
因此想开发一个比较具体的客户端和服务端,能够把该任务的执行做到完全自动化。期待高见

论坛徽章:
49
15-16赛季CBA联赛之福建
日期:2016-06-22 16:22:002015年亚洲杯之中国
日期:2015-01-23 16:25:12丑牛
日期:2015-01-20 09:39:23未羊
日期:2015-01-14 23:55:57巳蛇
日期:2015-01-06 18:21:36双鱼座
日期:2015-01-02 22:04:33午马
日期:2014-11-25 09:58:35辰龙
日期:2014-11-18 10:40:07寅虎
日期:2014-11-13 22:47:15申猴
日期:2014-10-22 15:29:50摩羯座
日期:2014-08-27 10:49:43辰龙
日期:2014-08-21 10:47:58
4 [报告]
发表于 2011-03-01 18:12 |只看该作者
嗯,通过脚本实现的话,异步执行和反馈检查个人感觉不太好做,也不太准确,往往需要人为的判断和 ...
duanjigang 发表于 2011-03-01 17:54



    前两天蜘蛛大哥说他们弄了个系统,在微博上说的,我拖他过来..........

论坛徽章:
0
5 [报告]
发表于 2011-03-01 18:15 |只看该作者
好,多谢sendlinux

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
6 [报告]
发表于 2011-03-01 18:23 |只看该作者
其实这个就需要不少配套的东西,你在服务器上预装一些常用的工具,然后你客户端调用的时候去执行。
客户端可以搞个工具,批量登陆服务器执行命令,并返回执行结果的模式

论坛徽章:
24
金牛座
日期:2013-10-18 21:35:56综合交流区版块每日发帖之星
日期:2015-08-15 06:20:00综合交流区版块每日发帖之星
日期:2015-09-30 06:20:00综合交流区版块每日发帖之星
日期:2015-10-16 06:20:03每日论坛发贴之星
日期:2015-10-16 06:20:03综合交流区版块每日发帖之星
日期:2015-10-24 06:20:00IT运维版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之天津
日期:2016-02-25 16:28:04综合交流区版块每日发帖之星
日期:2016-06-12 06:20:00每日论坛发贴之星
日期:2016-06-12 06:20:00综合交流区版块每日发帖之星
日期:2016-06-13 06:20:00综合交流区版块每日发帖之星
日期:2015-06-22 22:20:00
7 [报告]
发表于 2011-03-01 18:26 |只看该作者
连接来连接去的太麻烦,不如搞成多进程,每个进程连接若干的服务器并保持连接直到对方返回结果。

论坛徽章:
0
8 [报告]
发表于 2011-03-01 18:39 |只看该作者
其实这个就需要不少配套的东西,你在服务器上预装一些常用的工具,然后你客户端调用的时候去执行。
客户端 ...
Godbach 发表于 2011-03-01 18:23



    之前做了个cme_scanner,是多线程调用ssh脚本自动登录执行命令返回结果,但是expect结合ssh做成的自动脚本总感觉不稳定,还有,对于这种执行时间比较长的任务吗,不能一直阻塞着等吧?

论坛徽章:
0
9 [报告]
发表于 2011-03-01 18:41 |只看该作者
连接来连接去的太麻烦,不如搞成多进程,每个进程连接若干的服务器并保持连接直到对方返回结果。
一介村夫 发表于 2011-03-01 18:26



    这样的话,命令发起者对于服务器端的执行状态就不是很清楚了,呵呵,我现在设计了一个反馈线程(见一楼的图),在一个固定超时时间到达后,就给statserver返回一个状态信息,表明正在执行,这样是不是能好些?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
10 [报告]
发表于 2011-03-01 18:51 |只看该作者
远程执行命令的时候,可以加上一个超时机制吧。执行的命令那些耗时,那些很快就返回,你应该很清楚的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP