Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

第 25 章 IDC

目錄

25.1. 網絡設備配置管理與版本控制
25.1.1. 背景
25.1.2. 怎樣實現網絡設備配置管理
25.1.3. 總結
25.2. 機房遷移
25.2.1. 拓撲確立
25.2.2. 存儲規劃
25.2.2.1. RAID Disk Group 規劃
25.2.2.2. 檔案系統規劃
25.2.2.3. 目錄規劃
25.2.3. 設備上架
25.2.4. 操作系統初始化
25.2.5. 伺服器及運行環境
25.2.6. 部署應用程序
25.2.7. 監控系統
25.2.8. 日誌中心
25.2.9. 測試
25.3. 網綫怎樣連接才合理
25.3.1. 單個硬件防火牆方案
25.3.1.1. 防火牆
25.3.1.2. 交換機
25.3.2. 雙防火牆方案
25.3.3. 網卡
25.3.3.1. 內外隔離
25.3.3.2. 負載均衡
25.3.3.3. 交叉互聯
25.3.3.4. 網絡適配器
25.3.3.4.1. 常見網絡適配器品牌
25.3.3.4.2. 1G 千兆乙太網產品
25.3.3.4.3. 10G 萬兆乙太網產品
25.4. 記錄思科路由器/防火牆/交換機日誌
25.4.1. 開啟日誌
25.4.2. syslogd 伺服器腳本
25.5. 影響網絡流量的因素
25.5.1. 頻寬
25.5.1.1. 防火牆頻寬
25.5.1.2. 交換機頻寬
25.5.1.2.1. 聚合連接埠
25.5.1.3. 伺服器頻寬
25.5.2. 會話數
25.5.2.1. 防火牆會話數
25.5.2.2. 伺服器會話數
25.5.2.3. 應用伺服器會話數
25.5.3. IO
25.5.3.1. 硬碟 HDD
25.5.3.2. 固態硬碟 SSD
25.5.3.3. 分佈IO
25.5.3.4. FC SAN
25.5.3.5. iSCSI / FCoE
25.5.3.6. InfiniBand 或 RDMA

25.1. 網絡設備配置管理與版本控制

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

25.1.1. 背景

我們經常會頻繁的配置網絡設備,但有時候做了某些操作出現了異常,我們不清楚問題出在哪裡,還原配置也不起作用,甚至你根本記得你改動了什麼。

另外我們希望能夠監控網絡設備的配置變化,一個公司可能有很多網絡工程師,他們都有權限操作路由交換或防火牆設備,我們要知道網絡設備配置什麼時候發生了變化,並通知其他幾位同事。同時我們要對修改操作記錄歸檔,方便日後查閲。

25.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		
		

25.1.3. 總結

該程序主要是備份網絡設備的配置檔案,當然也能起到監控做用,但備份間隔時間需要根據你的情況設定,如果太頻繁也不太好,間隔太長可能起不到很好的監控作用。

關於監控與報警,你可以通過git diff 命令對比與上次配置檔案的變化,通常是沒有變化的,一旦發生變化便通過電子郵件與短信發出警報。至于怎麼實現,不再本文討論範圍,有興趣可以參考筆者的其他技術手札。

關於版本控制軟件更多細節,延伸閲讀 《Netkiller Version 手札》