Home | 简体中文 | 繁体中文 | 杂文 | 知乎专栏 | Github | OSChina 博客 | 云社区 | 云栖社区 | Facebook | Linkedin | 视频教程 | 打赏(Donations) | About
知乎专栏多维度架构 微信号 netkiller-ebook | QQ群:128659835 请注明“读者”

第 16 章 IDC

目录

16.1. 网络设备配置管理与版本控制
16.1.1. 背景
16.1.2. 怎样实现网络设备配置管理
16.1.3. 总结
16.2. 机房迁移
16.2.1. 拓扑确立
16.2.2. 存储规划
16.2.2.1. RAID Disk Group 规划
16.2.2.2. 文件系统规划
16.2.2.3. 目录规划
16.2.3. 设备上架
16.2.4. 操作系统初始化
16.2.5. 服务器及运行环境
16.2.6. 部署应用程序
16.2.7. 监控系统
16.2.8. 日志中心
16.2.9. 测试
16.3. 网线怎样连接才合理
16.3.1. 单个硬件防火墙方案
16.3.1.1. 防火墙
16.3.1.2. 交换机
16.3.2. 双防火墙方案
16.3.3. 网卡
16.3.3.1. 内外隔离
16.3.3.2. 负载均衡
16.3.3.3. 交叉互联
16.3.3.4. 网络适配器
16.3.3.4.1. 常见网络适配器品牌
16.3.3.4.2. 1G 千兆以太网产品
16.3.3.4.3. 10G 万兆以太网产品
16.4. 记录思科路由器/防火墙/交换机日志
16.4.1. 开启日志
16.4.2. syslogd 服务器脚本
16.5. 影响网络流量的因素
16.5.1. 带宽
16.5.1.1. 防火墙带宽
16.5.1.2. 交换机带宽
16.5.1.2.1. 聚合端口
16.5.1.3. 服务器带宽
16.5.2. 会话数
16.5.2.1. 防火墙会话数
16.5.2.2. 服务器会话数
16.5.2.3. 应用服务器会话数
16.5.3. IO
16.5.3.1. 硬盘 HDD
16.5.3.2. 固态硬盘 SSD
16.5.3.3. 分布IO
16.5.3.4. FC SAN
16.5.3.5. iSCSI / FCoE
16.5.3.6. InfiniBand 或 RDMA

16.1. 网络设备配置管理与版本控制

http://netkiller.github.io/journal/network.ios.html

16.1.1. 背景

我们经常会频繁的配置网络设备,但有时候做了某些操作出现了异常,我们不清楚问题出在哪里,还原配置也不起作用,甚至你根本记得你改动了什么。

另外我们希望能够监控网络设备的配置变化,一个公司可能有很多网络工程师,他们都有权限操作路由交换或防火墙设备,我们要知道网络设备配置什么时候发生了变化,并通知其他几位同事。同时我们要对修改操作记录归档,方便日后查阅。

16.1.2. 怎样实现网络设备配置管理

我们每隔一段时间便将网络设备的配置导出存档,然后通过版本控制工具进行版本化管理,远离非常简单。

有了版本控制我们可能很方便的回撤操作。下面我来详细讲解怎样安装于配置该软件

$ git clone https://github.com/netkiller/logging.git
$ cd logging
$ python3 setup.py sdist
$ python3 setup.py install

$ sudo apt-get install expect
$ sudo chmod +x /usr/local/libexec/*		
		

配置网络设备地址

打开 /usr/local/bin/cisco 文件,修改BACKUP_DIR,改为你的备份目录

$ vim /usr/local/bin/cisco

CFGFILE=$BASEDIR/etc/cisco.conf
BACKUP_DIR=~/.backup

$ cat /usr/local/etc/cisco.conf 
192.168.50.1 mgmt EBopQ1X2vMkrl M8YJxvDiddG6QK
192.168.50.2 mgmt EBopQ1X2vMkrl M8YJxvDiddG6QK
192.168.50.3 mgmt EBopQ1X2vMkrl M8YJxvDiddG6QK
192.168.50.4 mgmt EBopQ1X2vMkrl M8YJxvDiddG6QK

$ sudo chmod 600 /usr/local/etc/cisco.conf		
		

编辑/usr/local/etc/cisco.conf文件,格式如下:

host | username | password | enable password
		

初始化版本仓库

# Initialized empty Git repository in local.
$ cisco init

# Initialized empty Git repository from remote.
$ cisco init http://xxx.xxx.xxx.xxx/project/xxxx.git
$ cisco init user@host:/project/xxxx.git		
		

启动,停止等操作

$ cisco
Usage: /usr/local/bin/cisco {init|start|stop|status|restart}

# cisco start
# cisco stop 		
		

查看网络设备配置变化

查看当前与上一个版本的变化

$ cd your_backup_dir
$ git diff HEAD HEAD~ route.running-config		
		

查看当前与前面第三个版本的变化

$ cd your_backup_dir
$ git diff HEAD HEAD~3 route.running-config		
		

16.1.3. 总结

该程序主要是备份网络设备的配置文件,当然也能起到监控做用,但备份间隔时间需要根据你的情况设定,如果太频繁也不太好,间隔太长可能起不到很好的监控作用。

关于监控与报警,你可以通过git diff 命令对比与上次配置文件的变化,通常是没有变化的,一旦发生变化便通过电子邮件与短信发出警报。至于怎么实现,不再本文讨论范围,有兴趣可以参考笔者的其他技术手札。

关于版本控制软件更多细节,延伸阅读 《Netkiller Version 手札》