http://blog.itpub.net/70024420/viewspace-2929070/
【摘要】运维是一门艺术,也是一门苦差事,每个人对此均有不同的理解,正所谓一千个人眼中有一千个哈姆雷特。干一行就要爱一行,既然选择了这个行业,最好是能把它做到最好,发挥自己最大的价值。本文来聊聊在日常运维当中涉及网络的方方面面。分为以下四个方面:系统运维网络方面的规划和思考、系统运维中网络方面操作梳理、系统运维过程中需要掌握的利器、故障的诊断与分析,同时也将分享一些具有参考意义的经验和方法。
【作者】董志卫,任职于李宁(中国)体育有限公司,深耕运维领域多年。
来源:twt企业IT社区
一、系统运维中网络方面的规划与思考
在很多公司,岗位职责都是很明确的,专职转岗,每人或者每组负责一块业务。系统运维岗基本上在IT架构上相对偏后一些,该岗位和网络管理岗基本上是平行的。因为今天咱们说的是系统运维方面网络方面的事情,或多或少都会和网络岗打交道,那么谈一点网络岗的内容就显得很有必要。
系统运维建立在网络的基础之上,如果没有一个相对合理的网络架构,恐怕系统运维做起来也不是那么的顺手。一个公司基本上都会把网络和服务器独立开来,划分不同的区域摆放设备,很多时候都是物理隔离。服务器接入交换机大多是经过配线架连接起来和有的服务器机柜头柜安装网络交换机,是相对比较常见的两种方式。
走线从侧面可以反映一个企业对IT的重视程度和投入,很多企业是做不到如图这么漂亮的效果的。这一切一切还要立足于预算,现在基本上没有预算啥事也干不了。
大多数IT机房当初建立的时候,从设备混乱摆放到区域明确划分存放,又从区域功能明确到后来的后来的功能区域模糊,都反映了一个问题:计划赶不上变化。十年前还相当前卫的规划,到现在已经跟不上时代,这并不是谁的错,还是要求我们去适应去改变,业务引领变革,基础架构也需要做相应调整,所谓唯一不变的就是变。
我心中企业目前现阶段相对比较理想的架构这样的,如图所示:
这样一个传统企业典型的网络结构,保证每个核心节点都是双链路,链路异常自动切换,各种切换在这种典型的网络结构上都或多或少的简单或复杂,不尽相同。网络方面关注几个点:稳定,安全,自动化。业务系统组件也尽量避免单点问题。
这样后端业务系统在连接网络层面稳定性就有了保障,在主机系统层面,尽量避免单独问题,消除性能瓶颈,异常能够自动告警自动修复得相对比较完美,当然这一切还要立足于预算。
二、系统运维中网络方面操作梳理
在系统运维中,经常涉及的网络方面的操作,一般由以下几个方面组成。
1.设备上线,物理连线设置
很多运维人员要从事从刚开始立项到项目上线再到后期运维的一条龙服务,每个环节都要自己亲自动手,这是好事也是坏事,好的是自己的环境一般会非常的熟悉,不好的是事必躬亲,不出活,业绩不明显。插个线都要自己来,你恐怕也没太多精力干其他的,这就是个矛盾体,自己把握就好。
2.网络逻辑配置调整
这一块内容就涉及到了具体的操作,你可以手工一步一步操作,也可以借助高大上的工具批量完成,这个要看企业的IT建设的能力。一个掩码一个点错误都会导致网络连接异常。如果自己有开发能力也可以使用脚本或语言写成成型的东西,平时多多积累,使用的时候就会方便很多。
具体内容涉及:
1) 配置ip,别名,设置个端口监听,绑定个网卡,设置个路由
2) 划分个vlan,配置个trunk
3) 测试个端口,配置个监控
具体的操作过程在此不做过多的介绍,比如做个网卡绑定啊,测试个端口啊,这些操作网上有大批的文档可以查阅,本节内容就是描述在日常的Linux系统运维方面所涉及网络方面的操作,有一个整体的印象。
3.性能分析与优化
该部分内容相对不太容易操作,不是随随便都可以依葫芦画瓢就能完成,性能稳定分析和定位相对困难一些,很多场景都需要结合多个方面进行统一分析。这个需要一些工作经验的结论和沉淀,选择合适的工具,多方面配合往往会有比较好的效果。
工欲善其事,必先利其器:
熟练掌握该图上面的各种工具,基本上可以解决性能分析99%的工作,那剩下的1%的不是bug就是天灾。这里其实在说笑了,但这也说明一个好的工具有多么的重要。剩余就是要仔细认真,再好的工具,不会用也不行,态度是第一位的。
三、系统运维过程中需要掌握的利器
在上文中分享了一个图,该图涵盖的面比较广,本节内容主要针对网络方面进行一些梳理,分享一下在工作当中经常使用的利器。
首先我们来分享一张目前Linux 系统性能查看调优工具图:
这张图片基本上涵盖了Linux系统各个方面的性能工具,可以说相当的全面,下面我们看一下有关网络方面我们常用的命令或工具有哪些,这样有助于大家方便查看和使用。
以上工具基本上在日常工作当中经常会使用到,每个工具都有其侧重点,这里列举的只是大量工具中的一小部分,因为每个人使用习惯不一样,各有侧重,选择适合自己就好,以上工具仅供参考。
本文内容意在梳理分享,不在具体的工具使用方面做更加深入的讲解,因为每一个工具如果详细讲起来都会涉及大量篇幅,也不可能面面俱到,有兴趣的可以在社区或搜索引擎搜索之。
推荐小工具:
Dig,ethtool,iperf,iftop,dstat,mtr
比如在你想知道两个主机之间的带宽是否能够到达相应的带宽,请使用iperf。想动态的查看目的地是否可到以及延迟等信息,请使用mtr。
四、故障的诊断与分析
故障诊断处理方面不是一两句话就可以说清楚的,很大程度上在于平时经验的积累,很多故障都是相互关联的,如何顺藤摸瓜,找到问题的最终原因,有一些方法可以借鉴。这里不具体描述解决那个问题用了什么方法,只是聊聊解决问题有哪些经验和技巧。
分享一点小小的经验:
a)平时要多问几个为什么
b)故障是否可以重现,找到第一个场景,关注整体结合细节
c)多方面相互参考,同事之间相互配合
d)可以多做几个假设,直到推翻自己的想法
e)自己的工具箱要有几个使用顺手的TOOLS,包括自己开发的
以上只是一些解决问题的方法,具体问题还要具体分析。
下面我们结合一个真实的案例来描述一下:在出现网络故障时,。我们如何想办法快速的排除问题。
场景描述:
某日下午,公司里内部的业务系统突然出现反应比较慢的问题,多个业务管理员过来描述问题现象。近期一段时间内曾出现过类似的问题,该类问题的原因是由于业务区的防火墙老旧,处理能力不足,导致CPU在短时间内使用率激增,超过了境界阈值很多,导致此类现象的发生。
解决思路:
1)初步定位
又是类似问题的出现,肯定不是个别业务系统的问题,一看就是有共性的,问题应该是出现在网络设备上才对,这样才会造成大面积的问题,可是该防火墙一周前已经升级换代了,不应该有此类问题了。查看业务区域拓扑,因为拓扑已经在心中,直接搞起。
2) 逐步排查
首先登录新的防火墙,查看CPU使用率,一切正常,看来问题不在此。
然后登录业务系统去交换机查看负载,一看果然是高,高达99%,我勒个去,配合网络管理员查看问题原因,查看各种性能信息,初步没有太合理的线索,不能精准定位问题。收集各种信息准备发给厂商支持。
3) 协助排查
多方回忆近期有无做过其他操作。
网络方面: 一周前升级换代该区域防护墙
主机方面: 昨天接入6太新设备,并做端口绑定bond
4)再次排查
由于该区域Windows主机设备均已经安装杀毒软件,病毒的可能性不大,Linux 病毒可能性就更小了,先初步忽略。 由于昨天上线6个主机设备,着重观察网络设备所连接端口,
通过交换机和监控性能视图分析该端口今天出现流量过大的问题,端口饱和。由于影响业务面比较广,需要快速定位问题或者暂时消除影响。初步意见,交换机上线shutdown 这6台机器所连端口。持续观察了一段时间,交换机CPU 负载下来了,其他业务逐渐恢复。考虑到已经下班,暂时观察一下,明天看情况再做调整。并结合一下厂商意见。
5) 第二日上班后,6台机器业务恢复,交换机CPU负载又上来了,但是其他业务没有影响,什么情况?再次进行梳理,找问题线索。
6) 进一步排查
网络管理员打开debug 查看信息,经过一段时间的分析梳理发现有12个mac 地址频繁的在两台交换机来回出现,核对mac 后,可以定位引起CPU过载的原因是这新上线的6台机器(每台机器两个端口bond),果断拔掉其中一个端口,交换机CPU负载很快下来,那么就可以能定位bond绑定有问题。
7) 系统进一步排查
我做了很多次bond了,就算这次换了一个高版本操作系统应该也没有问题啊,果断检查之,查看绑定模式,一看模式为0 ,当时一惊,不应该啊。进一步查看确实是模式配置错误了,当初我想设定的是模式6,后来不知道怎么写成0 了,以为其他机器都是拷贝过去的,所以都是模式0了,立马改之。重启网卡,一切看似正常,重新插入网线观察交换机CPU 负载很稳定。这次CPU高应该是这个引起的无疑了,这个锅扣到我脑袋上了。
8)下午14:00,问题又出现了,这次交换机的cpu也不高了,什么情况,一脸懵逼的状态。
再次排查,这次聚焦交换机,收集大量信息反馈给厂商,很快厂商给出的建议说是端口饱和丢包严重,影响了其他业务端口的正常使用,经过厂商进一步排查确认,该型号交换机虽然以前性能很好,但是已经属于老旧设备,该型号端口组背板能力只有1G,该组其他端口带宽总和已经超过了1G,属于交换机处理能力不足。
9) 进一步协调该项目人员,调整大量交互端口成内网私有网段,单独使用一个千兆交换机做内部业务交互使用,外部访问还继续走这个交换机。最终这个问题得到解决。
总结:
此次事件引出三个问题:
1.端口绑定不可马虎,需要仔细再仔细,并做验证
2.预估业务端口网络流量不足,主机设备连线分配不合理
3.交换机老旧,处理能力不足
后续应该针对此类事情多多的总结,升级换代产品,深入了解业务特性。
https://www.cnblogs.com/anyoneofus/p/16467677.html sosreport命令用于收集系统配置及架构信息并输出诊断文档。