一種基于Docker實現(xiàn)冗余交換機(jī)操作系統(tǒng)的方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及Docker技術(shù)應(yīng)用領(lǐng)域,具體地說是一種實用性強(qiáng)、基于Docker實現(xiàn)冗余交換機(jī)操作系統(tǒng)的方法。
【背景技術(shù)】
[0002]目前,單臺交換機(jī)只能承載單一品牌的交換機(jī)操作系統(tǒng)以及單種形式的系統(tǒng)組件與網(wǎng)絡(luò)協(xié)議模塊。對于網(wǎng)絡(luò)管理員及用戶來說這是一種很大的限制。同時,多種品牌的交換機(jī)操作系統(tǒng)使用不同的配置命令對于網(wǎng)絡(luò)管理工作來說也是非常大的挑戰(zhàn)。因此,能夠?qū)崿F(xiàn)一種屏蔽底層硬件資源,實現(xiàn)多種交換機(jī)操作系統(tǒng)運行在統(tǒng)一平臺上,并且能夠使用一種統(tǒng)一化的配置方式來對網(wǎng)絡(luò)進(jìn)行配置成為了一項當(dāng)務(wù)之急。
[0003]基于此,本發(fā)明提出的一種基于Docker實現(xiàn)冗余交換機(jī)操作系統(tǒng)的方法來解決上述問題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的技術(shù)任務(wù)是針對以上不足之處,提供一種實用性強(qiáng)、基于Docker實現(xiàn)冗余交換機(jī)操作系統(tǒng)的方法。
[0005]—種基于Docker實現(xiàn)冗余交換機(jī)操作系統(tǒng)的方法,首先搭建基于Docker實現(xiàn)冗余交換機(jī)操作系統(tǒng)的模型架構(gòu),該架構(gòu)包括:I)一臺Docker Registry服務(wù)器;2)—個冗余交換機(jī)操作系統(tǒng);3)所述Docker Registry服務(wù)器與交換機(jī)操作系統(tǒng)之間通過IP網(wǎng)絡(luò)進(jìn)行聯(lián)結(jié)并通信。
[0006]其實現(xiàn)過程為:
1)選定Linux作為交換機(jī)操作系統(tǒng)內(nèi)核,在交換機(jī)操作系統(tǒng)內(nèi)核中添加DockerEngine服務(wù),并作為系統(tǒng)啟動進(jìn)程在交換機(jī)操作系統(tǒng)內(nèi)核啟動時自動啟動;
2)交換機(jī)操作系統(tǒng)內(nèi)核啟動之后,獲得對交換機(jī)硬件資源的控制權(quán),并調(diào)用硬件資源驅(qū)動,封裝可供Docker容器調(diào)用的編程接口以形成硬件編程資源池;
3)網(wǎng)絡(luò)管理員指定需要在交換機(jī)操作系統(tǒng)內(nèi)核上運行的主、備交換機(jī)操作系統(tǒng)版本,Docker Engine提供拉取指定交換機(jī)操作系統(tǒng)鏡像的服務(wù);
4)獲取鏡像成功后,交換機(jī)操作系統(tǒng)內(nèi)核依照主、備交換機(jī)操作系統(tǒng)鏡像部署主、備交換機(jī)操作系統(tǒng)容器;
5)部署成功后,交換機(jī)操作系統(tǒng)工作在主交換機(jī)操作系統(tǒng)容器的控制下,網(wǎng)絡(luò)管理員通過交換機(jī)行為描述腳本來部署網(wǎng)絡(luò)功能;
6)在當(dāng)前主交換機(jī)操作系統(tǒng)容器中,提供切換至備交換機(jī)操作系統(tǒng)的命令,并將交換機(jī)操作系統(tǒng)內(nèi)核及資源控制權(quán)交給備交換機(jī)操作系統(tǒng)容器,主、備交換機(jī)操作系統(tǒng)容器身份互換。
[0007]步驟I)中,在交換機(jī)操作系統(tǒng)內(nèi)核中添加DockerEngine服務(wù)通過使用C語言改寫Docker Engine服務(wù)的Go語言實現(xiàn),并將其整合到Linux內(nèi)核當(dāng)中。
[0008]步驟2)中,封裝可供Docker容器調(diào)用的編程接口以形成硬件編程資源池,包括以下步驟:
交換機(jī)操作系統(tǒng)內(nèi)核掃描硬件設(shè)備并查詢對應(yīng)驅(qū)動程序;
將查詢到的硬件設(shè)備及其對應(yīng)驅(qū)動程序編程接口寫入硬件編程資源池數(shù)據(jù)庫中;
通過SWIG編程接口轉(zhuǎn)換工具將硬件編程資源池數(shù)據(jù)庫中的C語言編程接口自動化封裝為尚級編程語言接口 ;
將轉(zhuǎn)換后的高級語言編程接口存入硬件編程資源池數(shù)據(jù)庫相對應(yīng)的硬件設(shè)備條目中。
[0009]步驟3)中主、備交換機(jī)操作系統(tǒng)版本的指定通過交換機(jī)操作系統(tǒng)內(nèi)核提供的命令行來傳遞給Docker Engine服務(wù),Docker Engine服務(wù)通過遠(yuǎn)程Docker Registry服務(wù)器的鏡像倉庫拉取指定交換機(jī)操作系統(tǒng)鏡像。
[00?0]步驟3)中拉取指定交換機(jī)操作系統(tǒng)鏡像的具體實現(xiàn)過程為:Docker Engine的拉取鏡像服務(wù)獲得由交換機(jī)操作系統(tǒng)內(nèi)核傳遞過來的主、備交換機(jī)操作系統(tǒng)版本,并寫入拉取鏡像命令,發(fā)送給遠(yuǎn)程Docker Registry服務(wù)器;遠(yuǎn)程Docker Registry服務(wù)器在收到拉取鏡像命令之后,將指定版本的鏡像下發(fā)到交換機(jī)。
[0011 ]步驟4)的具體實現(xiàn)過程為:
獲取鏡像成功后,交換機(jī)操作系統(tǒng)內(nèi)核先部署主交換機(jī)操作系統(tǒng)容器;
主交換機(jī)操作系統(tǒng)容器獲得交換機(jī)操作系統(tǒng)內(nèi)核的控制權(quán),并建立與硬件控制資源池數(shù)據(jù)庫的聯(lián)系,獲得對硬件資源的控制權(quán);
完成主交換機(jī)操作系統(tǒng)容器的部署后,交換機(jī)操作系統(tǒng)內(nèi)核部署備交換機(jī)操作系統(tǒng)容器,并設(shè)置備交換機(jī)操作系統(tǒng)處于睡眠狀態(tài)。
[0012]步驟5)的具體實現(xiàn)步驟為:
網(wǎng)絡(luò)管理員根據(jù)網(wǎng)絡(luò)配置要求編寫符合標(biāo)準(zhǔn)定義的交換機(jī)行為描述腳本;
交換機(jī)操作系統(tǒng)內(nèi)核解析并運行交換機(jī)行為描述腳本中的相關(guān)命令;
交換機(jī)操作系統(tǒng)內(nèi)核將相關(guān)命令交給Docker Engine服務(wù)去處理,Docker Engine依據(jù)命令從遠(yuǎn)程Docker Registry服務(wù)器拉取相應(yīng)的鏡像;
鏡像拉取完成后,Docker Engine為其建立相應(yīng)的容器,并附加到主交換機(jī)操作系統(tǒng)容器上,為主交換機(jī)操作系統(tǒng)中的操作提供服務(wù)。
[0013]上述從遠(yuǎn)程DockerRegistry服務(wù)器拉取的鏡像包括系統(tǒng)組件、網(wǎng)絡(luò)協(xié)議模塊、數(shù)據(jù)庫。
[0014]步驟6)中提供的切換至備交換機(jī)操作系統(tǒng)的命令通過主交換機(jī)操作系統(tǒng)容器中的命令行方式進(jìn)行切換。
[0015]步驟6)的具體實現(xiàn)步驟為:
用戶在當(dāng)前的主交換機(jī)操作系統(tǒng)容器內(nèi)觸發(fā)操作系統(tǒng)切換命令;
交換機(jī)操作系統(tǒng)內(nèi)核激活備交換機(jī)操作系統(tǒng)容器,并使主交換機(jī)操作系統(tǒng)容器處于睡眠狀態(tài);
按照時間排序最靠后的交換機(jī)行為描述腳本對備交換機(jī)操作系統(tǒng)容器進(jìn)行配置。
[0016]本發(fā)明的一種基于Docker實現(xiàn)冗余交換機(jī)操作系統(tǒng)的方法,具有以下優(yōu)點:
本發(fā)明提供的一種基于Docker實現(xiàn)冗余交換機(jī)操作系統(tǒng)的方法通過使用Docker輕量級虛擬化技術(shù),實現(xiàn)對交換機(jī)底層硬件資源的屏蔽,使得各具特色的交換機(jī)操作系統(tǒng)可以運行在同一硬件平臺上;同時,使用交換機(jī)描述腳本文件來屏蔽復(fù)雜多樣的交換機(jī)配置指令,使網(wǎng)絡(luò)配置更加簡潔,推廣實現(xiàn)起來比較容易,實用性強(qiáng),適用范圍廣泛,可適用于統(tǒng)一交換機(jī)平臺、統(tǒng)一網(wǎng)絡(luò)配置以及同功能模塊不同實現(xiàn)方式等應(yīng)用場景。
【附圖說明】
[0017]附圖1為基于Docker實現(xiàn)冗余交換機(jī)操作系統(tǒng)的架構(gòu)圖。
[0018]附圖2為基于Docker實現(xiàn)冗余交換機(jī)操作系統(tǒng)的流程圖。
[0019]附圖3為冗余交換機(jī)操作系統(tǒng)的啟動過程流程圖。
[0020]附圖4為主、備交換機(jī)切換的過程流程圖。
【具體實施方式】
[0021]下面結(jié)合附圖和具體實施例對本發(fā)明作進(jìn)一步說明。
[0022]當(dāng)前主流交換機(jī)多采用單一品牌交換機(jī)操作系統(tǒng),同時網(wǎng)絡(luò)配置復(fù)雜,缺乏靈活性。本發(fā)明通過使用Docker輕量級虛擬化技術(shù),實現(xiàn)對交換機(jī)底層硬件資源的屏蔽,使得各具特色的交換機(jī)操作系統(tǒng)可以運行在同一硬件平臺上。同時,使用交換機(jī)描述腳本文件來屏蔽復(fù)雜多樣的交換機(jī)配置指令,使網(wǎng)絡(luò)配置更加簡潔。
[0023]本發(fā)明的一種基于Docker實現(xiàn)冗余交換機(jī)操作系統(tǒng)的方法,如附圖1、圖2所示,首先搭建基于Docker實現(xiàn)冗余交換機(jī)操作系統(tǒng)的模型架構(gòu),該架構(gòu)包括:I )一臺DockerRegistry服務(wù)器;2)—個冗余交換機(jī)操作系統(tǒng);3)所述Docker Registry服務(wù)器與交換機(jī)操作系統(tǒng)之間通過IP網(wǎng)絡(luò)進(jìn)行聯(lián)結(jié)并通信。
[0024]基于上述架構(gòu),本發(fā)明的具體實現(xiàn)過程為:
1)選定Linux作為交換機(jī)操作系統(tǒng)內(nèi)核,在交換機(jī)操作系統(tǒng)內(nèi)核中添加DockerEngine服務(wù),并作為系統(tǒng)啟動進(jìn)程在交換機(jī)操作系統(tǒng)內(nèi)核啟動時自動啟動;
2)交換機(jī)操作系統(tǒng)內(nèi)核啟動之后,獲得對交換機(jī)硬件資源的控制權(quán),并調(diào)用硬件資源驅(qū)動,封裝可供Docker容器調(diào)用的編程接口以形成硬件編程資源池;
3)網(wǎng)絡(luò)管理員指定需要在交換機(jī)操作系統(tǒng)內(nèi)核上運行的主、備交換機(jī)操作系統(tǒng)版本,并由Docker Engine服務(wù)由遠(yuǎn)程Docker Registry鏡像倉庫拉取指定交換機(jī)操作系統(tǒng)鏡像;
4)獲取鏡像成功后,交換機(jī)操作系統(tǒng)內(nèi)核依照主、備交換機(jī)操作系統(tǒng)鏡像部署主、備交換機(jī)操作系統(tǒng)容器;
5)部署成功后,交換機(jī)操作系統(tǒng)工作在主交換機(jī)操作系統(tǒng)容器的控制下,網(wǎng)絡(luò)管理員可以通過交換機(jī)行為描述腳本來部署網(wǎng)絡(luò)功能;
6)在當(dāng)前主交換機(jī)操作系統(tǒng)容器中,提供切換至備交換機(jī)操作系統(tǒng)的命令,并將交換機(jī)操作系統(tǒng)內(nèi)核及資源控制權(quán)交給備交換機(jī)操作系統(tǒng)容器,主、備交換機(jī)操作系統(tǒng)容器身份互換。
[0025]在交換機(jī)操作系統(tǒng)內(nèi)核中添加Docker Engine服務(wù),需要使用C語言改寫DockerEngine服務(wù)的Go語言實現(xiàn),并將其整合到Linux內(nèi)核當(dāng)中。
[0026]封裝可供Docker容器調(diào)用的編程接口以形成硬件編程資源池,包括以下步驟:
交換機(jī)操作系統(tǒng)內(nèi)核掃描硬件設(shè)備并查詢對應(yīng)驅(qū)動程序;
將查詢到的硬件設(shè)備及其對應(yīng)驅(qū)動程序編程接口寫入硬件編程資源池數(shù)據(jù)庫中; 通過SWIG編程接口轉(zhuǎn)換工具將硬件編程資源池數(shù)據(jù)庫中的C語言編程接口自