在我们日常运维工作中,会遭遇各种各样,甚至乱七八糟的故障。而且有些故障刚开始会让你莫名其妙,但结果却让人苦笑不得。本文作者通过阐述个人运维生涯中的其中两个故障作为引子,进而聊聊发生故障之前和之后,我们应该怎么办。
作者简介
赵舜东,江湖人称赵班长,曾负责武警某部指挥自动化架构和运维工作,2008年退役后一直从事互联网运维工作。UnixHot运维社区创始人、《SaltStack入门与实践》作者。
引言
“没有经历过故障的运维生涯是不完美的”—路人甲
在我们日常运维工作中,会遭遇各种各样,甚至乱七八糟的故障。而且有些故障刚开始会让你莫名其妙,但结果却让人苦笑不得。
这次分享,我想通过阐述个人运维生涯中的其中两个故障作为引子,进而聊聊发生故障之前和之后,我们应该怎么办。
案例1:我只是插了一根网线,全网中断!?
1.环境描述
某年某月某日,机房上架新的服务器。我们的架构是服务器上联两台接入层交换,做端口 Bonding 。
每两个机柜都会有接入层交换机,所有接入层交换,双链路上联到汇聚层交换中。然后汇聚层交换运行MSTP+HSRP协议。
架构图如下:我们的操作是要新增一个接入层交换,用来扩展网络规模。
2.故障现象
当时网络工程师(路人甲)正在准备登录汇聚层交换配置端口Trunk,其它人员配合机房工作人员走线。
当接入层交换的上联网线拉到汇聚层交换机的机柜的时候,作为负责人的我(领导不能闲着啊)就问网络工程师:插哪里?回复:两台汇聚层交换的23端口 。
插线谁不会啊,于是我就先把其中一根接入层交换机的线,插入了23端口。刚过去不到一分钟,QQ群就有人反映打不开网站了,紧接着监控的系统各种报警就来了。
3.故障处理
我当时的第一反映,赶紧询问网络工程师(路人甲)刚才执行了什么操作,回复刚登录到交换机上还没有操作。可以排除他的误操作。
然后询问其它配合人员是否在线路上有插拔操作,同样回复没有。
登录监控系统,发现报警的是主机无法连接,也就是网络不通,肯定是网络方面的原因。
开始思考在故障之前我们都干了什么?我马上反映过来,我插了一根网线!虽然觉得不可思议,但是根据故障回滚的原则,我立即把网线拔掉,过了一会,故障恢复了。当时的想法就是这个黑锅,我背定了,真心冤啊。
4.故障排查
网络工程师(路人甲),登录汇聚层交换后,发现该交换机的23端口之前开启了portfast特性。
5.故障原因剖析
Portfast快速端口
是一个Cisco Catalyst交换机的一个特性,在STP(Spanning Tree Protocol)中,端口有5个状态:disable、blocking、listening、learning、forwarding,只有forwarding状态,端口才能发送用户数据。
一个端口接入设备后,就会经历blocking->listening->learing->forwarding,每个状态的变化要经历一段时间。这样从pc接上网线,到能发送用户数据,需要进行等待的时间。但如果设置了portfast,那就不需要等待了。
好的,重点来了!portfast只能用在接入层,也就是说交换机的端口是接主机的才能启用portfast,如果是接交换机的就一定不能启用,否则会造成新的环路。(不过,Cisco也提供了BPDU guard特性去解决这个问题,但是我们没有启用。)
那么为什么,这个汇聚层交换的23端口会开启这个特性呢?原因是之前这个交换机确实有服务器接入,后来架构拓展了,才只用来接入二层的接入层交换机。
小结
故障经常就是来的很突然,而且肯定会有各种奇葩的原因。甚至有的时候就是让你还债,还是那句话“出来混,终究要还的。”