Smartnet 网络运维

「举一反三」

「继开源工具分享之后,本章系列文章将带来团队初尝自研的一些故事和技术分享、几个python模块、几个自动化空白工作领域等....」

1、作者介绍

张智慧,来自“码蚁”团队(南方基地移动云运维团队),负责移动云网络运维、运维工具研发、运维场景开发。

2、前言

看过上一篇介绍forward的文章得人不知还是否记得一张图,移动云网络设备在逐年增加,而网络运维的人数一直是4人。在移动云四期上线后,南北基节点网络设备已超过700台,这700台设备分别属于15种不同的厂商的37种型号。移动云五期即将上线,上线后设备种类和设备数量还将持续增长,但是维护人员的人数一直是4个。海量的设备给网络运维工作带来了极大的挑战。Forward的产生给网络运维工作带来了希望,让网络运维自动化成为了可能。

3、网络的自动化探索

Forward产生后,传统网络运维人员开始自动化运维的探索。日常工作中重复性高的、沟通成本大的工作成为了第一批自动化开发的重点。一段时间后,第一批自动化运维脚本产生了,这些脚本覆盖了日常运维的巡检、故障排查、信息查询的多个场景,并且也达到了预期的效果。同时,在脚本越积越多的工程中也发现了一些无法避免的问题

调用forward时需要写入设备的IP、用户名、密码、设备型号等信息。这些信息暴露在脚本中有一定的风险

脚本的格式千差万别、调用关系较为混乱

基于以上两点,网络组决定基于forward研发一个适用于移动云网络自动化运维的工具。

4、什么是Smartnet

Smartnet是移动云运维团队在长期的运维过程中研发的适用于移动云的自动化工具,它简单理解为是适用于移动云网络运维的网络设备类库的集合,类中根据设备角色的不同,提供了适用于移动云的网络设备查询及配置的不同方法。场景脚本只需要调用smartnet类库中的方法即可自动返回结果。同时,为了让非网络运维的人员也可以使用smartent,还对smartnet进行了指令封装。目前smartnet已使用于故障处理、巡检、查询、配置等多个场景,节省了不少的运维工作量。

5、Smartnet的功能

Smartnet位于forward(forward是移动云研发团队研发的位于更底层的网络自动化工具)的结构之上,smartnet主要做了以下3个事情。

smartnet将网络设备的信息进行统一管理,场景脚本只需要调用smartnet的数据库即可对设备进行登陆

smartnet把移动云常用的查询以及配置的场景进行封装,主程序只需要调用对应的函数即可,无需对于函数进行编写

smartnet还支持指令方式运行,例如:smartne “192.168.1.1” “ showUptime”,无需登陆设备即可获取到192.168.1.1这台设备的启动时间

6、Smartnet和Forward的关系

forward是一个python模块,提供与目标设备之间的通道封装,基于指令行(Command Lines)的方式实现多数功能的封装,供开发者快速简便调用,屏蔽不同设备上指令差异。

下面介绍一下用户场景脚本、smartnet、forward之间的调用关系为:

用户场景脚本中指定设备IP,之后调用该IP对应的smartnet原子函数

Smartnet调用forward对设备进行登录

Forward对指令进行执行并返回原始结果给smartnet

Smartnet对原始结果进行查找匹配,返回结果

Smartnet将原子函数的结果返回给用户场景脚本

用户场景脚本将多个原子函数的结果进行逻辑判断、整合后,将最终的结果进行输出

7、Smartnet类库

Smartnet目前已经封装了23种设备类型超过300个原子函数,原子函数包含常用的查询类和配置类的函数,目前smartnet正在逐步丰富。例如下图为移动云9312的类库,包含查询类的方法:查看vlan的描述、查看设备的NTP状态、查看IP所属的vlan等;配置类:创建vlan、在端口下放通vlan等。下方图片所列仅为目前所开发的部分函数,Smartnet的目标是原子函数覆盖运维的全部场景

8、Smartnet调用方式

上面的类库是如何被调用的呢?目前Smartnet提供了两种方式对底层的方法进行调用(详情可参考下图)

方式一:通过脚本方式调用——在脚本中通过实例化调用smartnet的原子函数;

方式二:通过命令行方式进行调用——直接在部署了forward和smartnet的主机上通过命令行的方式进行调用。

9、Smartnet的作用

由于smartnet对常用的运维场景进行封装,使得同一场景函数无需被重复编写,因此使得:

代码量大幅减少,代码的利用率进一步提高

随着smartnet底层类库的逐渐丰富,对于编写自动化脚本的运维人员来说,由于无需编写底层原子函数,只需关注脚本本身的逻辑,入门的难度也进一步降低,加快了网络的自动化的进程。

10、Smartnet场景举例

场景一:客户反馈网络有问题,访问延迟较大、网络不通等

传统网络运维排查方式——维护人员需要在客户流量所经历的所有网络节点上进行逐一排查(保守估计每天发生3次,每次10分钟,共30分钟),排查工作重复性高,且技术含量较低

自动化方式——按照此类故障的排查方式,将排查思路固化在脚本中。直接输入客户云主机的公网IP,运行脚本后即可输出客户在每个节点的网络情况

场景二:实时查看设备端口状态

传统网络——这个场景对于二线运维人员来说没有难度,但是对于一线和系统负责人来说,网络设备的配置信息及状态信息对他们不可见,他们无法实时获取网络设备的状态、配置等信息,需要网络运维人员手动查询后告知,查询个工作量较小但沟通工作量巨大。

自动化方式——使用自动化后,任何人只要调用smartnet的原子函数即可对设备的物理状态等信息进行查询。

场景三:同事A请求为新建的虚机开通网络,如果人工开通的话通常情况下分为以下三步

首先为虚机分配资源,包括vlan、IP等资源

在核心交换机进行配置,配置vlan、网关、在端口放通vlan等

在接入交换机进行配置,配置vlan、在上行和下行端口放通vlan

整个过程加上资源以及配置方案的审批流程,保守估计至少也得半天..............

如果使用脚本方式开通,那就不一样了,只需要在脚本中输入虚机的相关信息即可一键开通。

11、网络自动化的展望:

目前Smartnet的类库仍有待完善,目标是原子函数覆盖场景脚本的95%以上,即场景脚本大部分无需进行底层函数的编写,直接调用底层原子函数即可。网络自动化方面,目前自动化已经覆盖移动云网络运维的多个场景,但仍有部分较为复杂的场景没有覆盖。希望通过进一步的自动化开发,使得自动化在日常运维中的占比越来越大。

目前smartnet已经应用于移动云网络运维的多个场景。Smartnet的出现给网络的自动化运维插上了翅膀,但也逐渐发现可以自动化的场景越来越多,未来网络运维的自动化将变成什么样,或者你对于网络自动化有什么好的见解,欢迎继续关注“火炉山蚁群”,并留言一起讨论~

本文来自企鹅号 - 火炉山蚁群媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

Git 企业开发者教程

为什么要写这样一个面向企业开发者的Git教程?这个问题也困扰我自己很久。其实我使用git的时间也不短了,但是就和正在阅读本文的每一位一样,常用的基本就是那么几个...

325100
来自专栏CSDN技术头条

Instagram 的持续部署实践

在Instagram,我们每日部署后端代码的次数达30-50次,只要有工程师将修改内容提交到主服务器,部署就会进行,而且在大多情况下无需人工介入。这听起来也许很...

247100
来自专栏运维一切

ceph容量使用率的优化 原

###背景 随着ceph集群不断的变大和复杂,可能会遇到,整个容量很大,但是真正的数据使用率很低的情况。比如明明有100多TB的空间,但是数据才存了20TB,就...

23320
来自专栏北京马哥教育

一个开发眼中的运维

马哥linux运维 | 最专业的linux培训机构 ---- 在云计算时代,开发和运维的结合变得越来越重要。在DIFF论坛第一期,前新浪SAE运维主管,郑志勇...

44070
来自专栏即时通讯技术

简述移动端IM开发的那些坑:架构设计、通信协议和客户端1、前言 2、学习交流3、概述4、有关移动端IM通信协议的坑5、移动端IM客户端的坑6、移动端IM架构设计的坑7、结语附录:更多IM技术文章

有过移动端开发经历的开发者都深有体会:移动端IM的开发,与传统PC端IM有很大的不同,尤其无线网络的不可靠性、移动端硬件设备资源的有限性等问题,导致一个完整的移...

26510
来自专栏FreeBuf

一个关于Facebook用户个人和好友隐私信息泄露的漏洞

大家好,在我的上一篇文章中,我分享了Chrome浏览器中存在的一个Facebook用户信息泄露漏洞,此后,在接下来的研究中,我又发现了另外一个关于Faceboo...

11440
来自专栏架构师之路

多key业务,数据库水平切分架构一次搞定

数据库水平切分是一个很有意思的话题,不同业务类型,数据库水平切分的方法不同。 本篇将以“订单中心”为例,介绍“多key”类业务,随着数据量的逐步增大,数据库性能...

43470
来自专栏微服务生态

基于Nginx+lua的蓝绿发布系统

蓝绿部署是不停老版本,部署新版本然后进行测试,确认OK,将流量切到新版本,然后老版本同时也升级到新版本。

20940
来自专栏数据和云

【从根源出发,化风险为可控】应用到数据库的连接数管控

作者介绍 ? 巩飞(Morinson) 云和恩墨技术专家 网名Morinson,现服务于云和恩墨西北区,有14年在IT公司的技术类工作经验,特别是在 Ora...

32250
来自专栏流柯技术学院

LR--Controller的Pacing设置(不容忽视的设置)

笔者:很多人在使用LR时会忽略此选项,但对LR有深入理解的人,会经常使用该配置。测试场景:100个并发用户达到100TPS的处理能力,重点验证并发用户,也就是每...

19520

扫码关注云+社区

领取腾讯云代金券