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

Posted 高效运维

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高效自动化运维工具 Clip | 介绍篇相关的知识,希望对你有一定的参考价值。

编辑

  • 徐凯强@和信(整理)

作者介绍

王冬生

腾讯高级工程师,《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个子命令,如下所示:

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

  • 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

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

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

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

后记

好消息来啦

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

如何一起愉快地发展

以上是关于高效自动化运维工具 Clip | 介绍篇的主要内容,如果未能解决你的问题,请参考以下文章

sysAK(青囊)系统运维工具集:如何实现高效自动化运维?| 龙蜥技术

高效运维工具 Python

自动化运维工具介绍

自动化运维了解

自动化运维之Ansible模块篇

四款常见IT自动化运维工具简单介绍-行云管家