本文根据高效运维系列微信群的群友文章整理并发布。“高效运维”公众号作为本系列群的官方唯一公众号,原创并独家首发。
欢迎关注“高效运维”公众号,以免费参加「运维讲坛」每月一次的线下交流活动;并抢先赏阅干货满满的各种原创文章(详见文末)。
编辑
徐凯强@和信(整理)
作者介绍
王冬生
腾讯高级工程师,《Puppet权威指南》作者
引子
IP数字不容易记忆,所以聪明的人类发明了DNS。DNS把不容易记忆的数字,改为容易记忆的一串有规则的域名,域名又可以解析相应的IP,基于此思路,我们开发了近似 DNS 工具的名字服务系统。
在公司内部希望通过名字服务系统在 CMDB 基础之上把不同的业务(cpu、内存、磁盘和网卡)“夹在一起”,对于上层可以实现资源互补,对于下层可以方便核算业务成本,所以这就是CLIP(夹子)的由来了。
Clip 简介
Clip是一款自动化运维工具,适用于海量服务器的管理场景,可以降低系统误操作风险,提高工作效率。
其将传统的 IP 管理纬度替换为String管理纬度的管理方式,使海量运维变得更加便捷、可靠与高效。
Clip是 C/S 架构,它将IP关系保存在 Server 端,Client 端可以下载 SDK,通过 SDK 遍历 Server 端的 IP 与模块关系等,并在本地对获取的 IP 模块关系进行重新的组织与编排,这就是Clip。
Clip还提供了远程命令、文件拷贝、IP组织树遍历、历史命令查看、IP对应String关系正反解析与导入等功能。为海量服务器运维保驾护航,奠定基础。
下面来详细介绍下Clip这款自动化运维工具,首先从基于String管理的 String 组成说起。
String 的组成方式
String由(idc-product-modules-group) 4段组成,了解 CMDB 的同学会发现它与 CMDB 的结构很像,4级模块定位一个服务。
但是随着业务的发展,笔者觉得4级服务已经无法定位到一个服务,譬如:在一台服务器上混合部署不同的业务模块,这里4级只能定位到服务的IP级别,而无法精确定位到真正的服务。
所以Clip在此基础上增加了一级 — Port (端口号),改完的String格式变成了这样:(idc-product-modules-group-port),通过5段定位一个服务。这也是Clip优势,灵活变换来定位一组服务,满足业务需求。
举一个实际的例子:
上海机房,A 模块使用80端口提供服务,目前有100多个机器,B模块使用8080端口提供服务,目前也有100多个机器,由于业务流量下降,为了节约资源目前想将两个模块200台机器资源合并,但功能不合并。
我们可将两个服务表示到不同的String中,如:
A模块(sh-weixin-friend-a-80)
B模块(sh-weixin-friend-b-8080)
通过String就很容易的将两个服务分别开,并部署在相同的服务器上提供服务了。
管理方式对比
相较于传统服务器管理方式,String管理方式有以下优势:
传统为IP管理方式,IP由4组无意义的数字组成,比较难记忆。与传统方式相比String可以见名识意,方便记忆。
管理海量服务时,IP相似经常会导致运营故障,譬如A模块(10.131.24.37)和B模块(10.117.24.37),后两位数字一致,惯性的认为两个B模块就是A模块,发送配置导致线上故障。通过String管理方式可以很方便的规避此问题。
String 可以解析1个IP,也可以解析一组IP,根据IP也可以反解析String对应关系,这让我们管理一组服务更加的方便。
Clip 的C/S 的架构
刚介绍到 Clip 为 C/S 架构,String 对应的 IP 关系保存在 Server 服务器中,Client 通过 Clip 的 SDK 获取IP。
其优势有3点:
IP与String建立一次关系后,由于关系保存在 Server 端,因此所有的服务器上通过SDK都可以调用到。
SDK 可以提供更加丰富的功能,如扫描服务器,远程命令,远程拷贝等。
可以方便的进行定制开发,Clip 提供简单清晰的API与SDK代码结构与文档,当Clip不能满足我们需求时,可以通过文档很容易的扩展Clip 满足自己的需求。
Clip SDK
目前 SDK 共有8个子命令,如下所示:
scan: 用于对String对应的IP进行端口存活状态扫描。
cstring: 用于解析String和IP的对应关系。
ssh: 用于对String对应的IP,远程执行系统命令。
scp: 用于对String对应的IP,远程拷贝文件。
tree: 遍历String下的子节点。
history: 显示历史执行过的命令。
import: 导入IP对应String关系。
lt: 从本地获取IP关系进行管理。
help: 显示Clip当前有多少子命令。
Clip 案例
最后我们再来看一下应用案例 ,来比较一下传统方式和Clip管理方式差异:
传统方式:
在 A 模块的100台服务器上,执行uptime命令,具体的操作步骤如下:
找到要同步的A模块 IP 列表。
编写脚本与 IP 列表中的服务器建立连接。
连接服务器时输入账号密码。
账号密码认证成功后拷贝文件。
在每个 IP 重复以上步骤。
Clip 方式:
在 A 模块的100台服务器上,执行uptime命令,具体的操作步骤如下:
建立A模块ip列表与String的对应关系,譬如为tj-qzone-qzoneini-access6。
clip ssh -p 密码 root@tj-qzone-qzoneini-access6
执行上述命令后,以下为执行结果。
可以看出相较于传统的管理方式,采用Clip 的方式进行管理,大大简化了工作量。
后记
关于 Clip 的安装及详细的操作使用说明将会在后面的文章中说明,请大家持续关注此公众号的最新文章。
好消息来啦
全球运维大会·上海站,将于10月31日举行,届时三大运维体系(精益运维、高效运维和白盒运维),将首度同台汇演。本次会议免费,如需报名或了解详情,请猛戳如下链接。
如何一起愉快地发展
“高效运维”公众号(如下二维码)值得您的关注,作为高效运维系列微信群的唯一官方公众号,每周发表多篇干货满满的原创好文:来自于系列群的讨论精华、运维讲坛线上精彩分享及群友原创。“高效运维”也是互联网专栏《高效运维最佳实践》及运维2.0官方公众号。
提示:目前高效运维新群已经建立,欢迎加入。您可添加萧田国个人微信号xiaotianguo8 为好友(或扫描如下二维码),进行申请,请备注“申请入群”。
重要提示:除非事先获得授权,请在本公众号发布2天后,才能转载本文。尊重知识,请必须全文转载,并包括本行。
来源:oschina
链接:https://my.oschina.net/u/4411837/blog/4713543