我就职于一家互联网企业,主要工作是网络管理,准确的说是面向IDC生产网络的设计与维护,架构勉强有一些吧,距离自己心中的架构还远得很。专职做网络差不多快5年了,之前系统、开发都涉及一点,但过于肤浅毫无建树以至于浪费了大好时光,如果早点进入专项的技术方向就好了,当然这只是个人看法,因人而异。
公司大大小小几十个机房分布在全国各地,网络结构比较简单,只是多年积累下来的陈年旧账、面对特殊情况产生的特殊问题,给网络维护、发展带来一些麻烦,也遇到不少有意思的问题、挑战,加上网络团队的同事都是真正做技术的人,因此几年下来感觉有了不小的收获。
在工作中遇到的很多问题,很多企业在其网络发展过程中,很多网络工程师在其成长过程中,都会遇到,因此我想聊一聊自己遇到的有意思的事情,希望可以在分享的过程中有所收获。
OK,切入正题:我是如何实现AAA、NTP和SYSLOG的。
为什么我会比较重视这三项服务呢?
公司网络发展,初期是比较缓慢的,中期随着关键业务的快速发展,要求所有相关基础服务也快速跟进,这时因为不得不保证速度和规模,而没有考虑太多细节。当前,不但要求网络规模增长快速,互联网业务类型也多样化发展,由先前的南北向流量为主,变成了东西向流量占据了半壁江山,高密度万兆接入、低延时高可靠数据交换、中大规模分布式应用、跨地域的复杂网络应用、大数据等等。
但不管有多少问题,首先要解决的是处理故障。
处理故障,最起码要能够登录设备,而我在早期遇到的问题是,某台设备上有哪些帐号、可以从哪儿登录,拥有什么权限还是个大麻烦。即使登录到设备上,会发现无法得知谁在什么时间做了什么事、设备在什么时间发生了什么事,或者获得的数据不完整、不准确。这些都极大地影响了故障处理效率,也是必须解决的基本问题。
同时,这三项服务是网络管理自动化的基础。
通过两期工作实现了让我满意的上述三项服务。
一期是对已有服务的整理,主要解决的问题是
1)确保所有网管服务器上都运行这三项服务。
2)确保软件版本、配置、数据一致。
3)确保服务可用性,降低服务中断时间。
在实施过程中遇到很多问题,如操作系统不一致导致的软件版本无法统一不得不分化为两套标准,如软件过于复杂导致配置和数据同步的复杂化,如配置变更带来的巨大工作量和操作失误引起的服务不可用,网管服务器双机HA可用性及主备切换后带来的配置有效性、数据差异消除问题等等。
最终一期完成,基本实现了上述目标。但却推动我下定决心,一定要从根本上解决问题。
*注:
一期使用的tacacs+软件tac_plus来自 http://www.networkforums.net/ ,更新缓慢、安装配置复杂、需要额外数据库和web支持、支持文档极少。web使用apache,数据库为mysql4(不支持5.0以上版本)。ntp使用系统自带ntp程序,受操作系统类型、版本影响较大。syslog使用syslog-ng 2.1.4。
二期是服务重构。
1)软件重新选型
tacacs+ 使用 http://www.pro-bono-publico.de/projects/tac_plus.html 的 tac_plus。优点是功能强大,配置简单,方便同步,稳定可靠,更新及时,对新设备支持好。
ntp 对比了 http://www.openntpd.org 和 http://www.ntp.org 选择了后者。优点是短小精悍,可靠稳定。
syslog 仍然使用 http://www.balabit.com/network-security/syslog-ng/ 的 open-source 3.x 版本。优点是功能强大,可靠稳定。
2)统一环境
操作系统全部更新为CentOS 5,tac_plus、ntp、syslog-ng全部统一版本。
最重要的是,除ntp外,tac_plus和syslog-ng在所有网管服务器上都使用同一配置文件,这极大地简化了配置同步和服务管理。其实ntp也可以使用一份配置文件,但考虑到ntp配置变化极少、安全风险小,故未实现。
3)服务监护和配置同步
通过shell脚本对tac_plus、ntp和syslog-ng服务检查,确保服务正确运行。
通过shell脚本实现tac_plus和syslog-ng的配置自动下发和更新,以及配置更新后的服务重启。以及对网管服务器上的服务检查脚本、监控脚本等各类保障程序的自动下发和更新。
通过rsync将分散在不同IDC的网管服务器收集的网络设备的syslog集中到备份服务器归档。
4)维护服务搭建文档,提供统一的安装文件
在对全网网管服务器更新时,根据文档搭建环境不超过30分钟,当然需要对情况有一定了解。
5)实现了syslog-ng配置文件的程序化创建,实现了tac_plus配置文件的动态部分的程序化创建
由于公司的公网、私网网段就有上千个,并且变更频繁,靠人工去维护syslog-ng配置文件,不但工作量巨大,也非常容易出错,并且不易排错,因此达成此事。这件事的重点是,要维护一套靠谱的网络信息库,每家公司都面临cmdb的各种问题,有机会单独聊一聊。
6)实现了对所有IDC重要交换机和路由器的配置自动备份,以及对配置自动分析和报警。
配置分析还很基础,但的确帮了大忙,人总是会出错的。
在二期实现过程中,我放弃原有的HA双机结构,因为相比其带来的好处,给管理带来了很多麻烦,在系统和网络的精力投入分配上,必须有所取舍。
但是,网管服务器的容错是必须解决的问题,我的备选方案是在网络设备上指向多个不同的网管服务器,从网络设备配置上实现冗余的效果。另外一个思路,是在虚拟机上搭建网管环境(aaa+ntp+syslog),发生问题时在冷备服务器上快速启用虚拟机,并且由于已经实现了全网单一配置文件,那么只要维护一个虚拟机版本,基本就可以无限地扩展网管服务器的部署了。
以上就是我实现AAA(tac_plus)、NTP和SYSLOG的过程,并没有讲很具体的实现细节,我想更重要的是想法和思路吧。如果有需要,我会再分享具体的实现方法。