背景
目前项目中会使用了Iaas中的vm,所有操作都是通过ssh连上去的。pm表示要不要写个agent在里面用,现在每次操作都ssh一下都很恶心。
谈谈我认为使用ssh的好处:
- 代码集中在一处,不需要分发
- 不需要维护agent这么一个进程的生命周期,以及检测它的心跳
缺点:
- 不支持异步
我想问的问题
- ssh的开销大吗?在我看来似乎和写一个基于web server 的agent差不多
- 大家一般是如何选型的?为什么这么选?
目前项目中会使用了Iaas中的vm,所有操作都是通过ssh连上去的。pm表示要不要写个agent在里面用,现在每次操作都ssh一下都很恶心。
缺点:
中间代码
,由agent将中间代码翻译成当前OS实际该执行的本地命令。15 回答8.4k 阅读
7 回答5.3k 阅读
6 回答6.9k 阅读✓ 已解决
8 回答6.2k 阅读
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
这个东西以前做过类似的,也有过反思,甚至设计的原型和你说的一模一样。
例如,我为什么要用基于web server的agent呢,我干嘛不用tcp长连接到服务端,这样执行的结果可以流式传输到调用方,他那边显示起来比较平滑,不用每个命令执行完等结果。
但是我这样搞的话,中控端流量和日志存储就成了问题了啊。
如果我的业务都在云上,如果不同机房网络不互通的话,我又要蛋疼地搞点兼容的事情……
例如,agent的生命周期,为什么我要检测她的心跳呢?机器上万台的话,任何可能的事情都会发生啊,修复起来太蛋疼了。但是我不处理的话……所以后面我会考虑用ssh来修复agent啊。
我假设你所有的机器都是linux,发行版为同一种。
SSH:
AGENT:
大公司有各种审计、安全方面的需求,会把这种事情统一到某个地方,搞个中控端,所有的批量操作必须通过中控端。模式也不一样,有些用agent,有些用ssh,只有中控端才是必须要有的。
再说的直白点,
你是个小公司,小于30台机器或者小于50台机器的话,不建议考虑agent模式。
没那个需求,投入的成本大而收效低。
基于各种第三方框架包装一个就好了嘛,嫌麻烦就ansible用起。