<<<<<<< HEAD
=======
用于分布式搭建命令代理执行器,可以指定或者批量执行特定的脚本任务,并回传执行结果
- 首先是权限问题,运维工具通常要开启root的权限,但agent只是执行查询任务,权限级别低
- 异步任务的模式
- 对服务器的侵入小,使用go作为开发语言,跨平台,也不会要求系统有多余的依赖
- 针对只需要ssh的运维工具来说,就是避免了一些问题
- 该工具不是面向运维的,是用于简化系统中数据获取的复杂度,用于实现数据接口化
1. ssh会有断开链接的问题
2. ssh还会开设服务端链接数的限制
3. 每台服务器都要配置密钥验证(这点还行,一般都会设置)
4. 对于目前的容器化方案来说,还需要安装ssh-server,并且端口是冲突的
- consul/etcd:自动服务发现及配置共享
- redis:消息发送及消息回传
- 首先是高可用,通过以上组件能满足整个系统的高可用
- 定义了一个异步通信的机制,简化了组件实现的难度
- 解耦组件之间的关系,能方便的进行组件的扩展
使用protobuf进行数据通信,通过redis的订阅发布实现异步消息的分布式发送
通过参数设定:advertise,可以是主机名可以是ip
通过与Server通信获取本机对应的角色列表 Server通过匹对advertise进行查找
- 每个agent启动后,订阅多个channel,订阅格式:$prefix/$advertise
- 定时将自己注册到channel,避免master意外退出 , 格式: $prefix/$master/register | prefix/master = path/file = scheme.path
- Data根据api的定义发送任务信息到对应的channel,并订阅一个channel
- agent执行完毕后,将结果发送到对应的channel,channel信息会在任务信息中传递
- 将该目录加入GOPATH
- 使用Godep作为依赖管理:在目录执行godep restore
- 添加新的依赖后,需执行godep save, 提交源码时将依赖文件也提交
release/v0.1.0