一種高可擴(kuò)展的容器網(wǎng)絡(luò)管理系統(tǒng)和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及云計(jì)算技術(shù)領(lǐng)域,特別涉及由容器構(gòu)成的高可擴(kuò)展的系統(tǒng)網(wǎng)絡(luò)管理系統(tǒng)和方法。
【背景技術(shù)】
[0002]作為新一代云計(jì)算的核心技術(shù),容器技術(shù)已漸漸成為近年國內(nèi)外云計(jì)算企業(yè)的發(fā)展重點(diǎn)。對(duì)于構(gòu)成云計(jì)算系統(tǒng)的核心技術(shù),高可擴(kuò)展性是必要的核心技術(shù)特性。在現(xiàn)有容器技術(shù)支持下,一臺(tái)宿主機(jī)可以運(yùn)行幾十甚至幾百容器,但是在超過幾百的容器數(shù)量后,一臺(tái)宿主機(jī)則是遠(yuǎn)遠(yuǎn)不夠的。同時(shí),僅用一臺(tái)宿主機(jī)運(yùn)行容器,也會(huì)影響高可用性,即如果一臺(tái)宿主機(jī)出現(xiàn)故障,則所有用戶容器都將無法運(yùn)行。因此,要實(shí)現(xiàn)云計(jì)算環(huán)境的高可擴(kuò)展性和高可用性,要求可用多臺(tái)宿主機(jī)同時(shí)運(yùn)行容器,并保持不同宿主機(jī)容器之間的連通性。
[0003]現(xiàn)有容器的網(wǎng)絡(luò)管理系統(tǒng)無法很好的完成上述要求,即不能滿足用多臺(tái)宿主機(jī)同時(shí)運(yùn)行容器,并保持不同宿主機(jī)容器之間的連通性?,F(xiàn)有容器網(wǎng)絡(luò)管理系統(tǒng)如圖1所示:在運(yùn)行容器的宿主機(jī)中,運(yùn)行著多個(gè)容器實(shí)例和一個(gè)容器網(wǎng)關(guān),容器網(wǎng)關(guān)和容器實(shí)例通過一個(gè)宿主機(jī)內(nèi)部網(wǎng)段進(jìn)行互聯(lián)互通。正如圖1上所示,在默認(rèn)情況下,一個(gè)宿主機(jī)內(nèi)部的多個(gè)容器可以互聯(lián)互通,但不同宿主機(jī)運(yùn)行的容器之間無法互聯(lián)互通。
[0004]現(xiàn)有一種容器網(wǎng)絡(luò)互聯(lián)的解決方案如圖1下示例,即由容器網(wǎng)關(guān)設(shè)置網(wǎng)絡(luò)地址轉(zhuǎn)換NAT(Network Address Translat1n,網(wǎng)絡(luò)地址轉(zhuǎn)換)功能,將某些容器提供的服務(wù)通過端口映射到宿主機(jī)的網(wǎng)絡(luò)地址上。如宿主機(jī)的地址為172.16.1.1,某容器的內(nèi)網(wǎng)地址為192.168.1.1;通過網(wǎng)絡(luò)地址轉(zhuǎn)換,可以將192.168.1.1的80端P,映射為172.16.1.1的8080端口;這樣其他主機(jī)的容器如果想訪問該容器的192.168.1.1的80端口,只需要通過訪問172.16.1.1的8080端口來實(shí)現(xiàn)。上述網(wǎng)絡(luò)地址轉(zhuǎn)換方法的缺點(diǎn)在于,由于受單臺(tái)宿主機(jī)的網(wǎng)絡(luò)端口所限制,不能滿足同一宿主機(jī)上多臺(tái)容器希望發(fā)布相同端口的擴(kuò)展場景。例如,如果宿主機(jī)172.16.1.1中的兩個(gè)容器192.168.1.1和192.168.1.2都希望80端口,則它們不可能都發(fā)布為172.16.1.1的8080端口,這樣勢必造成端口的沖突。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提出一種高可擴(kuò)展的容器網(wǎng)絡(luò)管理系統(tǒng)和方法,可以自動(dòng)控制管理一個(gè)由容器構(gòu)成的高可擴(kuò)展高可用的云計(jì)算系統(tǒng),保證不同宿主機(jī)上的容器之間的互通性和安全性,從而解決現(xiàn)有技術(shù)中存在的前述問題。
[0006]為了實(shí)現(xiàn)上述目的,本發(fā)明的高可擴(kuò)展的容器網(wǎng)絡(luò)管理系統(tǒng),包括宿主機(jī)地址分配器、網(wǎng)絡(luò)配置管理器、網(wǎng)絡(luò)控制器和容器隧道,所述網(wǎng)絡(luò)配置管理器,用于配置所述宿主機(jī)地址分配器,配置所述網(wǎng)絡(luò)控制器,部署和配置所述容器隧道;所述網(wǎng)絡(luò)控制器用于為每個(gè)宿主機(jī)上運(yùn)行的容器分配一個(gè)容器網(wǎng)絡(luò)子網(wǎng)段,并且,分配、保存宿主機(jī)地址到容器網(wǎng)絡(luò)子網(wǎng)段的一一映射關(guān)系;所述容器隧道設(shè)置在每個(gè)宿主機(jī)上,用于封裝來自本宿主機(jī)的數(shù)據(jù)包,和/或拆除封裝其他宿主機(jī)上的容器發(fā)送到本宿主機(jī)的數(shù)據(jù)包。
[0007]進(jìn)一步地,所述網(wǎng)絡(luò)配置管理器包括用戶交互模塊、宿主機(jī)地址配置模塊、容器地址配置模塊和容器隧道部署模塊;所述用戶交互模塊用于提供用戶自主設(shè)置容器網(wǎng)絡(luò)參數(shù)的交互界面,所述容器網(wǎng)絡(luò)參數(shù)包括宿主機(jī)網(wǎng)段,容器地址總段,每主機(jī)最大容器數(shù)和容器網(wǎng)關(guān)地址;所述宿主機(jī)地址配置模塊用于配置所述宿主機(jī)地址分配器;所述容器地址配置模塊用于配置、管理所述容器網(wǎng)絡(luò)參數(shù);所述容器隧道部署模塊用于部署和配置所述容器隧道。
[0008]進(jìn)一步地,所述用戶交互模塊為命令行或者圖形用戶界面。
[0009]為了實(shí)現(xiàn)上述目的,本發(fā)明的高可擴(kuò)展的容器網(wǎng)絡(luò)管理的方法,包括以下步驟:
[0010]SI,配置容器網(wǎng)絡(luò)參數(shù),配置宿主機(jī)地址到容器地址段的映射;
[0011]S2,部署容器隧道,配置、激活所述宿主機(jī)地址到容器網(wǎng)絡(luò)段的一一映射;
[0012]S3,根據(jù)所述宿主機(jī)地址到容器網(wǎng)絡(luò)段的一一映射,發(fā)送和接受數(shù)據(jù)包。
[0013]具體地,步驟SI為:
[0014]SI I,配置所述容器網(wǎng)絡(luò)參數(shù);
[0015]S12,計(jì)算、配置所述宿主機(jī)地址到容器地址段的映射。
[0016]更具體地,步驟SI I為:
[0017]SI 11,注冊(cè)、連接宿主機(jī)地址分配器,配置宿主機(jī)地址段;
[0018]S112,注冊(cè)、連接網(wǎng)絡(luò)控制器,配置容器地址總段、每主機(jī)最大容器數(shù)和容器網(wǎng)關(guān)主機(jī)地址;
[0019]S113,讀取所述宿主機(jī)地址段;
[0020]SI 14,計(jì)算宿主機(jī)地址到容器地址段映射;
[0021]S115,配置宿主機(jī)到容器地址段映射。
[0022]再具體地,步驟SI 14為:
[0023]SI 141,配置所述容器地址總段;
[0024]SI 142,計(jì)算容器網(wǎng)絡(luò)地址前綴;
[0025]SI 143,配置宿主機(jī)最大容器數(shù);
[0026]SI 144,計(jì)算容器實(shí)例地址長度;
[0027]S1145,判斷允許的容器網(wǎng)絡(luò)地址后綴個(gè)數(shù)是否大于等于允許的宿主機(jī)地址個(gè)數(shù),
[0028]若所述容器網(wǎng)絡(luò)地址后綴個(gè)數(shù)大于或者等于所述允許的宿主機(jī)地址個(gè)數(shù),則保存配置到網(wǎng)絡(luò)控制器;
[0029]若所述容器網(wǎng)絡(luò)地址后綴個(gè)數(shù)小于所述允許的宿主機(jī)地址個(gè)數(shù),則向用戶提示網(wǎng)絡(luò)段不夠。
[0030]具體地,步驟S2為:
[0031]S21,注冊(cè)、連接宿主機(jī);
[0032]S22,部署所述容器隧道;
[0033]S23,配置網(wǎng)絡(luò)控制器地址,所述容器隧道連接所述網(wǎng)絡(luò)控制器,并獲取本宿主機(jī)容器網(wǎng)絡(luò)配置;
[0034]S24,通過所述容器隧道配置所述容器網(wǎng)關(guān),配置所述容器隧道,配置宿主機(jī)路由,將容器網(wǎng)絡(luò)總段路由向下一跳指向所述容器隧道;
[0035]S25,注冊(cè)、激活所述宿主機(jī)地址到所述容器網(wǎng)絡(luò)的一一映射。
[0036]具體地,步驟S3為,
[0037]S31,容器發(fā)送數(shù)據(jù)包到目標(biāo)宿主機(jī);
[0038]S32,所述目標(biāo)宿主機(jī)接收并處理數(shù)據(jù)包。
[0039]更具體地,步驟S31為,
[0040]S311,容器發(fā)送數(shù)據(jù)包;
[0041]S312,判斷所述目標(biāo)宿主機(jī)是否為同一宿主機(jī),
[0042]若所述目標(biāo)宿主機(jī)為不同宿主機(jī),則執(zhí)行步驟S313;
[0043]若所述目標(biāo)宿主機(jī)為同一宿主機(jī),則通過宿主機(jī)內(nèi)部通信發(fā)送給另一容器,完成數(shù)據(jù)包發(fā)送;
[0044]S313,通過容器網(wǎng)關(guān)發(fā)送給宿主機(jī)路由模塊;
[0045]S314,判斷目標(biāo)是否為容器網(wǎng)絡(luò)總段,
[0046]若目標(biāo)是容器網(wǎng)絡(luò)總段,則執(zhí)行步驟S315;
[0047]若目標(biāo)不是容器網(wǎng)絡(luò)總段,則由所述宿主機(jī)路由模塊直接發(fā)送給目標(biāo)地址,完成數(shù)據(jù)包發(fā)送;
[0048]S315,由所述宿主機(jī)路由模塊發(fā)送數(shù)據(jù)包給所述容器隧道處理;
[0049]S316,獲取目標(biāo)容器網(wǎng)絡(luò)映射的目標(biāo)宿主機(jī);
[0050]S317,封裝容器數(shù)據(jù)包為可發(fā)送到宿主機(jī)的數(shù)據(jù)包,然后,發(fā)送封裝后的數(shù)據(jù)包到目標(biāo)宿主機(jī),完成數(shù)據(jù)包發(fā)送。
[0051]在具體地,步驟S316為從緩存或者從所述網(wǎng)絡(luò)控制器讀取目標(biāo)容器網(wǎng)絡(luò)映射的目標(biāo)宿主機(jī)地址。
[0052]更具體的,步驟S32包括,
[0053]S321,宿主機(jī)接收數(shù)據(jù)包;
[0054]S322,判斷目標(biāo)是否為所述容器隧道,
[0055]若目標(biāo)是所述容器隧道,則執(zhí)行步驟S323;
[0056]若目標(biāo)不是所述容器隧道,則轉(zhuǎn)給相應(yīng)的端口進(jìn)程處理,完成接收數(shù)據(jù)包。
[0057]S323,發(fā)送給所述容器隧道處理;
[0058]S324,拆除數(shù)據(jù)包封裝,目標(biāo)變?yōu)楸舅拗鳈C(jī)容器;
[0059]S325,發(fā)送給本宿主機(jī)容器處理,完成接收數(shù)據(jù)包。
[0060]具體地。步驟S24 中,配置容器網(wǎng)絡(luò) DHCP (Dynami c Host Configurat1nProtocol,動(dòng)態(tài)主機(jī)配置協(xié)議)為:
[0061]判斷容器網(wǎng)網(wǎng)關(guān)是否包含DHCP功能,
[0062]如果容器網(wǎng)關(guān)包含DHCP功能,那么就設(shè)置容器網(wǎng)關(guān)DHCP配置;
[0063]如果容器網(wǎng)關(guān)不包含DHCP功能,那么就設(shè)置容器隧道DHCP配置。
[0064]本發(fā)明的有益效果是:可以建立一種高可擴(kuò)展的容器網(wǎng)絡(luò),云計(jì)算系統(tǒng)管理員可以自主設(shè)置宿主機(jī)網(wǎng)段、容器網(wǎng)段、每宿主機(jī)最多可支持的容器數(shù)以及每個(gè)容器網(wǎng)絡(luò)的網(wǎng)關(guān)地址,根據(jù)系統(tǒng)管理員設(shè)置,云計(jì)算系統(tǒng)可以自動(dòng)分配容器網(wǎng)絡(luò)的網(wǎng)絡(luò)地址,保持整個(gè)容器網(wǎng)絡(luò)的連通性和穩(wěn)定性。
【附圖說明】
[0065]圖1是:現(xiàn)有技術(shù)中一般容器網(wǎng)絡(luò)的網(wǎng)絡(luò)環(huán)境;
[0066]圖2是:本發(fā)明應(yīng)用于容器網(wǎng)絡(luò),對(duì)容器網(wǎng)絡(luò)進(jìn)行配置管理;
[0067]圖3是:網(wǎng)絡(luò)配置管理器的組成模塊;
[0068]圖4是:容器網(wǎng)絡(luò)利用本發(fā)明通信的示意圖;
[0069]圖5是:本發(fā)明中各種配置參數(shù)對(duì)容器網(wǎng)絡(luò)中各種地址段的作用;
[0070]圖6是:通過網(wǎng)絡(luò)配置管理器配置容器網(wǎng)絡(luò)參數(shù)的流程;
[0071]圖7是:配置宿主機(jī)網(wǎng)絡(luò)地址段時(shí),各模塊的交互流程;
[0072]圖8是:配置將網(wǎng)絡(luò)控制器注冊(cè)到網(wǎng)絡(luò)配置管理器,配置容器網(wǎng)絡(luò)參數(shù)到網(wǎng)絡(luò)控制器時(shí),各模塊的交互流程;
[0073]圖9是:將某個(gè)