高效自动化运维工具 Clip | 介绍篇

允我心安 提交于 2020-11-12 09:00:19

本文根据高效运维系列微信群的群友文章整理并发布。“高效运维”公众号作为本系列群的官方唯一公众号,原创并独家首发。

欢迎关注“高效运维”公众号,以免费参加「运维讲坛」每月一次的线下交流活动;并抢先赏阅干货满满的各种原创文章(详见文末)。

编辑

  • 徐凯强@和信(整理)

作者介绍

王冬生

腾讯高级工程师,《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管理方式有以下优势:

  1. 传统为IP管理方式,IP由4组无意义的数字组成,比较难记忆。与传统方式相比String可以见名识意,方便记忆。

  2. 管理海量服务时,IP相似经常会导致运营故障,譬如A模块(10.131.24.37)和B模块(10.117.24.37),后两位数字一致,惯性的认为两个B模块就是A模块,发送配置导致线上故障。通过String管理方式可以很方便的规避此问题。

  3. String 可以解析1个IP,也可以解析一组IP,根据IP也可以反解析String对应关系,这让我们管理一组服务更加的方便。

Clip 的C/S 的架构

刚介绍到 Clip 为 C/S 架构,String 对应的 IP 关系保存在 Server 服务器中,Client 通过 Clip 的 SDK 获取IP。

其优势有3点:

  1. IP与String建立一次关系后,由于关系保存在 Server 端,因此所有的服务器上通过SDK都可以调用到。

  2. SDK 可以提供更加丰富的功能,如扫描服务器,远程命令,远程拷贝等。

  3. 可以方便的进行定制开发,Clip 提供简单清晰的API与SDK代码结构与文档,当Clip不能满足我们需求时,可以通过文档很容易的扩展Clip 满足自己的需求。

Clip SDK

目前 SDK 共有8个子命令,如下所示:

f4fc83c23fe7398376d5e9a938fc37b9.jpeg

  • 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命令,具体的操作步骤如下:

  1. 找到要同步的A模块 IP 列表。

  2. 编写脚本与 IP 列表中的服务器建立连接。

  3. 连接服务器时输入账号密码。

  4. 账号密码认证成功后拷贝文件。

  5. 在每个 IP 重复以上步骤。

Clip 方式:

在 A 模块的100台服务器上,执行uptime命令,具体的操作步骤如下:

  1. 建立A模块ip列表与String的对应关系,譬如为tj-qzone-qzoneini-access6。

  2. clip ssh -p 密码 root@tj-qzone-qzoneini-access6

执行上述命令后,以下为执行结果。

ce0fa11336021cd8770a80516fc88211.jpeg

可以看出相较于传统的管理方式,采用Clip 的方式进行管理,大大简化了工作量。

后记

关于 Clip 的安装及详细的操作使用说明将会在后面的文章中说明,请大家持续关注此公众号的最新文章。

好消息来啦

全球运维大会·上海站,将于10月31日举行,届时三大运维体系(精益运维、高效运维和白盒运维),将首度同台汇演。本次会议免费,如需报名或了解详情,请猛戳如下链接。

约不?三大运维体系首度同台汇演 | 全球运维大会·上海站

如何一起愉快地发展

“高效运维”公众号(如下二维码)值得您的关注,作为高效运维系列微信群的唯一官方公众号,每周发表多篇干货满满的原创好文:来自于系列群的讨论精华、运维讲坛线上精彩分享及群友原创。“高效运维”也是互联网专栏《高效运维最佳实践》及运维2.0官方公众号。

8224fff77185d99cc10cadadf129359a.jpeg

提示:目前高效运维新群已经建立,欢迎加入。您可添加萧田国个人微信号xiaotianguo8 为好友(或扫描如下二维码),进行申请,请备注“申请入群”。

c09b1250a42d5c301072a7c5663ce0b9.jpeg

重要提示:除非事先获得授权,请在本公众号发布2天后,才能转载本文。尊重知识,请必须全文转载,并包括本行。


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!