欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種實(shí)現(xiàn)分布式存儲(chǔ)系統(tǒng)的部署方法及裝置與流程

文檔序號(hào):12494872閱讀:315來(lái)源:國(guó)知局
本發(fā)明涉及分布式存儲(chǔ)系統(tǒng)的部署技術(shù),具體涉及一種實(shí)現(xiàn)分布式存儲(chǔ)系統(tǒng)的部署方法及裝置。
背景技術(shù)
::目前互聯(lián)網(wǎng)企業(yè)軟件逐漸通過(guò)從單體應(yīng)用遷移到微服務(wù)架構(gòu)下來(lái)保障系統(tǒng)的高可用性。但在微服務(wù)架構(gòu)下,軟件模塊、進(jìn)程數(shù)量以及系統(tǒng)的部署維護(hù)難度日益增加。因此,需要通過(guò)自動(dòng)化部署管理系統(tǒng)來(lái)處理各個(gè)節(jié)點(diǎn)的資源。其中,自動(dòng)化部署管理系統(tǒng)可以從互聯(lián)網(wǎng)上下載資源并根據(jù)各個(gè)節(jié)點(diǎn)的IP來(lái)分配資源。但是在實(shí)際應(yīng)用中,為了系統(tǒng)的安全考慮,各個(gè)服務(wù)器會(huì)被限制在局域網(wǎng)內(nèi)獲取資源,從而通過(guò)Docker配置使得每個(gè)節(jié)點(diǎn)上的Docker服務(wù)分別負(fù)責(zé)所在節(jié)點(diǎn)容器的IP地址分配。而這樣容易導(dǎo)致不同節(jié)點(diǎn)上的容器獲得相同的內(nèi)外IP地址。并使這些容器之間能夠通過(guò)相同的內(nèi)外IP地址相互找到,從而增加了系統(tǒng)的風(fēng)險(xiǎn)。技術(shù)實(shí)現(xiàn)要素:為解決現(xiàn)有存在的技術(shù)問(wèn)題,本發(fā)明實(shí)施例期望提供一種實(shí)現(xiàn)分布式存儲(chǔ)系統(tǒng)的部署方法及裝置,能夠降低系統(tǒng)的風(fēng)險(xiǎn)系數(shù)。本發(fā)明實(shí)施例的技術(shù)方案是這樣實(shí)現(xiàn)的:根據(jù)本發(fā)明實(shí)施例的一方面,提供一種實(shí)現(xiàn)分布式存儲(chǔ)系統(tǒng)的部署方法,所述方法包括:根據(jù)分布式存儲(chǔ)系統(tǒng)的編碼文件,確定執(zhí)行所述分布式存儲(chǔ)系統(tǒng)的程序的主機(jī),并向所述主機(jī)發(fā)送鏡像拉取命令;其中,所述主機(jī)包括源主機(jī)和目標(biāo)主機(jī),所述源主機(jī)和所述目標(biāo)主機(jī)中均包含覆蓋網(wǎng)絡(luò)ON的工具Flannel和容器引擎Docker;接收所述鏡像拉取命令,并根據(jù)所述鏡像拉取命令從內(nèi)部局域網(wǎng)中的Docker鏡像私有倉(cāng)庫(kù)獲取所述分布式存儲(chǔ)系統(tǒng)的第一鏡像數(shù)據(jù);為所述源主機(jī)配置IP地址段,并從所述IP地址段中獲取所述源主機(jī)的第一IP地址,根據(jù)所述第一IP地址以及所述目標(biāo)主機(jī)的第二IP地址信息對(duì)所述第一鏡像數(shù)據(jù)進(jìn)行路由封裝,得到第二鏡像數(shù)據(jù),并根據(jù)所述第二IP地址信息查找路由表,按照所查找出的路徑將所述第二鏡像數(shù)據(jù)從所述源主機(jī)中的第一Flannel虛擬網(wǎng)卡向所述目標(biāo)主機(jī)中的第二Flannel虛擬網(wǎng)卡發(fā)送。上述方案中,在所述接收所述鏡像拉取命令,之前,所述方法還包括:通過(guò)互聯(lián)網(wǎng)獲取所述分布存儲(chǔ)系統(tǒng)的原始鏡像數(shù)據(jù),并將所述原始鏡像數(shù)據(jù)發(fā)送到所述Docker鏡像私有倉(cāng)庫(kù)。上述方案中,所述根據(jù)分布式存儲(chǔ)系統(tǒng)的編碼文件,確定執(zhí)行分布式存儲(chǔ)系統(tǒng)程序的內(nèi)部局域網(wǎng)的鏡像創(chuàng)建主機(jī),包括:創(chuàng)建所述分布式存儲(chǔ)系統(tǒng)的編碼文件,以及獲取云服務(wù)中各主機(jī)當(dāng)前的資源數(shù)據(jù);根據(jù)所述編碼文件中所述分布式存儲(chǔ)系統(tǒng)在所述Docker鏡像私有倉(cāng)庫(kù)中的鏡像路徑、節(jié)點(diǎn)的啟動(dòng)數(shù)目以及云服務(wù)中各主機(jī)當(dāng)前的資源數(shù)據(jù),確定執(zhí)行所述分布式存儲(chǔ)系統(tǒng)程序的主機(jī)。上述方案中,在所述按照所查找出的路徑將所述第二鏡像數(shù)據(jù)從所述源主機(jī)中的第一Flannel虛擬網(wǎng)卡向所述目標(biāo)主機(jī)中的第二Flannel虛擬網(wǎng)卡發(fā)送之后,所述方法還包括:對(duì)所述第二鏡像數(shù)據(jù)進(jìn)行解包封,得到第三鏡像數(shù)據(jù);將所述第三鏡像數(shù)據(jù)從所述第二Flannel虛擬網(wǎng)卡向所述目標(biāo)主機(jī)中的第二Docker虛擬網(wǎng)卡發(fā)送。上述方案中,在所述為所述源主機(jī)配置IP地址段,包括:通過(guò)鍵/值存儲(chǔ)服務(wù)etcd為所述源主機(jī)配置IP地址段。根據(jù)本發(fā)明實(shí)施例的另一方面,提供一種實(shí)現(xiàn)分布式存儲(chǔ)系統(tǒng)的部署裝置,所述裝置包括:容器集群管理節(jié)點(diǎn)Kubernetes,用于根據(jù)分布式存儲(chǔ)系統(tǒng)的編碼文件,在主機(jī)集群中確定執(zhí)行分布式存儲(chǔ)系統(tǒng)的程序的主機(jī),并向所述主機(jī)發(fā)送鏡像拉取命令;其中,所述主機(jī)包括源主機(jī)和目標(biāo)主機(jī),所述源主機(jī)和所述目標(biāo)主機(jī)中均包含有Flannel和Docker;主機(jī)集群,用于接收所述Kubernetes發(fā)送的鏡像拉取命令,并根據(jù)所述鏡像拉取命令從內(nèi)部局域網(wǎng)中的Docker鏡像私有倉(cāng)庫(kù)獲取所述分布式存儲(chǔ)系統(tǒng)的第一鏡像數(shù)據(jù);Flannel,用于為所述源主機(jī)配置IP地址段,并從所述IP地址段中獲取所述源主機(jī)的第一IP地址,根據(jù)所述第一IP地址以及所述目標(biāo)主機(jī)的第二IP地址信息對(duì)所述第一鏡像數(shù)據(jù)進(jìn)行路由封裝,得到第二鏡像數(shù)據(jù),并根據(jù)所述第二IP地址信息查找路由表,按照所查找出的路徑將所述第二鏡像數(shù)據(jù)從所述源主機(jī)中的第一Flannel虛擬網(wǎng)卡向所述目標(biāo)主機(jī)中的第二Flannel虛擬網(wǎng)卡發(fā)送。上述方案中,所述裝置還包括:鏡像創(chuàng)建主機(jī),用于通過(guò)互聯(lián)網(wǎng)獲取所述分布存儲(chǔ)系統(tǒng)的原始鏡像數(shù)據(jù),并將所述原始鏡像數(shù)據(jù)發(fā)送到所述Docker鏡像私有倉(cāng)庫(kù)。上述方案中,所述Kubernetes,具體用于創(chuàng)建所述分布式存儲(chǔ)系統(tǒng)的編碼文件,以及獲取云服務(wù)中各主機(jī)當(dāng)前的資源數(shù)據(jù);并根據(jù)所述編碼文件中所述分布式存儲(chǔ)系統(tǒng)在所述Docker鏡像私有倉(cāng)庫(kù)中的鏡像路徑、節(jié)點(diǎn)的啟動(dòng)數(shù)目以及云服務(wù)中各主機(jī)當(dāng)前的資源數(shù)據(jù),在云服務(wù)中確定執(zhí)行所述分布式存儲(chǔ)系統(tǒng)程序的主機(jī)。上述方案中,所述Flannel,還用于對(duì)所述第二鏡像數(shù)據(jù)進(jìn)行解包封,得到第三鏡像數(shù)據(jù);并將所述第三鏡像數(shù)據(jù)從所述第二Flannel虛擬網(wǎng)卡向所述目標(biāo)主機(jī)中的第二Docker虛擬網(wǎng)卡發(fā)送。上述方案中,所述Flannel,具體用于通過(guò)etcd為所述源主機(jī)配置IP地址段。本發(fā)明實(shí)施例提供一種實(shí)現(xiàn)分布式存儲(chǔ)系統(tǒng)的部署方法及裝置,根據(jù)分布式存儲(chǔ)系統(tǒng)的編碼文件,確定執(zhí)行所述分布式存儲(chǔ)系統(tǒng)的程序的主機(jī),并向所述主機(jī)發(fā)送鏡像拉取命令;其中,所述主機(jī)包括源主機(jī)和目標(biāo)主機(jī),所述源主機(jī)和所述目標(biāo)主機(jī)中均包含覆蓋網(wǎng)絡(luò)ON的工具Flannel和容器引擎Docker;接收所述鏡像拉取命令,并根據(jù)所述鏡像拉取命令,從內(nèi)部局域網(wǎng)中的Docker鏡像私有倉(cāng)庫(kù)獲取所述分布式存儲(chǔ)系統(tǒng)的第一鏡像數(shù)據(jù);為所述源主機(jī)配置IP地址段,并從所述IP地址段中獲取所述源主機(jī)的第一IP地址,根據(jù)所述第一IP地址以及所述目標(biāo)主機(jī)的第二IP地址信息對(duì)所述第一鏡像數(shù)據(jù)進(jìn)行路由封裝,得到第二鏡像數(shù)據(jù),并根據(jù)所述第二IP地址信息查找路由表,按照所查找出的路徑將所述第二鏡像數(shù)據(jù)從所述源主機(jī)中的第一Flannel虛擬網(wǎng)卡向所述目標(biāo)主機(jī)中的第二Flannel虛擬網(wǎng)卡發(fā)送。如此,通過(guò)將所有分布式存儲(chǔ)系統(tǒng)的原始鏡像數(shù)據(jù)傳到Docker鏡像私有倉(cāng)庫(kù)中,隨后由k8s管理節(jié)點(diǎn),即Kubernetes動(dòng)態(tài)地從云服務(wù)中獲取鏡像部署的主機(jī),并由所述主機(jī)從所述Docker鏡像私有倉(cāng)庫(kù)中獲取鏡像數(shù)據(jù),所有程序不需要自身啟動(dòng),最后,通過(guò)Flannel為所述主機(jī)中的所有子主機(jī)重新規(guī)劃IP地址的使用規(guī)則,從而使得不同子主機(jī)上的容器能夠獲得同屬一個(gè)內(nèi)網(wǎng)且不重復(fù)的IP地址,并讓屬于不同子主機(jī)上的容器能夠直接通過(guò)內(nèi)網(wǎng)IP通信,從而降低系統(tǒng)的風(fēng)險(xiǎn)。附圖說(shuō)明圖1為本發(fā)明實(shí)施例一種實(shí)現(xiàn)分布式存儲(chǔ)系統(tǒng)的部署方法流程示意圖;圖2為本發(fā)明實(shí)施例中K8S管理節(jié)點(diǎn)在云服務(wù)中確定啟動(dòng)的主機(jī)的流程示意圖;圖3為本發(fā)明實(shí)施例中Flannel的工作原理示意圖;圖4為本發(fā)明實(shí)施例一種實(shí)現(xiàn)分布式存儲(chǔ)系統(tǒng)的部署裝置組成示意圖。具體實(shí)施方式下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行詳細(xì)說(shuō)明。應(yīng)當(dāng)理解的是,此處所描述的具體實(shí)施方式僅用于說(shuō)明和解釋本發(fā)明,并不用于限制本發(fā)明。圖1為本發(fā)明實(shí)施例一種實(shí)現(xiàn)分布式存儲(chǔ)系統(tǒng)的部署方法流程示意圖;如圖1所示,所述方法包括:步驟101,根據(jù)分布式存儲(chǔ)系統(tǒng)的編碼文件,確定執(zhí)行所述分布式存儲(chǔ)系統(tǒng)的程序的主機(jī),并向所述主機(jī)發(fā)送鏡像拉取命令;所述主機(jī)包括源主機(jī)和目標(biāo)主機(jī),所述源主機(jī)和所述目標(biāo)主機(jī)中均包含有Flannel和Docker;這里,所述方法主要應(yīng)用于分布式存儲(chǔ)系統(tǒng)的部署系統(tǒng)中。所述Flannel是針對(duì)容器集群管理節(jié)點(diǎn)Kubernetes設(shè)計(jì)的一個(gè)覆蓋網(wǎng)絡(luò)(ON,OverlayNetwork)工具,是將傳輸控制協(xié)議(TCP,TransmissionControlProtocol)數(shù)據(jù)包封裝成另一種網(wǎng)絡(luò)包后,再進(jìn)行路由轉(zhuǎn)發(fā)和通信,具體支持用戶數(shù)據(jù)報(bào)協(xié)議(UDP,UserDatagramProtocol)、虛擬擴(kuò)展局域網(wǎng)(VxLAN,VirtualeXtensibleLocalAreaNetwork,)協(xié)議、亞馬遜網(wǎng)絡(luò)服務(wù)(AWS,AmazonWebServices)虛擬私有云(VPC,virtualprivatecloud)協(xié)議和谷歌應(yīng)用引擎(GCE,GoogleAppEngine)路由等數(shù)據(jù)轉(zhuǎn)發(fā)方式。具體地,首先由所述系統(tǒng)中的Kubernetes,又名K8S管理節(jié)點(diǎn)創(chuàng)建所述分布式存儲(chǔ)系統(tǒng)的編碼文件,以及獲取云服務(wù)中各主機(jī)當(dāng)前的資源數(shù)據(jù);其中,所述編碼文件中包含有要獲取的鏡像路徑及啟動(dòng)的節(jié)點(diǎn)數(shù)目,然后,由所述K8S管理節(jié)點(diǎn)中的K8S調(diào)度器根據(jù)編碼文件中有關(guān)所述分布式存儲(chǔ)系統(tǒng)在所述Docker鏡像私有倉(cāng)庫(kù)中的鏡像路徑、節(jié)點(diǎn)的啟動(dòng)數(shù)目以及云服務(wù)中各主機(jī)當(dāng)前的資源數(shù)據(jù)的這些配置信息,在云服務(wù)的主機(jī)集群中確定執(zhí)行所述分布式存儲(chǔ)系統(tǒng)程序的主機(jī),并由所述K8S調(diào)度器向所述主機(jī)發(fā)送鏡像拉取命令。其中,所述主機(jī)包括源主機(jī)和目標(biāo)主機(jī),所述源主機(jī)和所述目標(biāo)主機(jī)中均包含有Flannel和Docker;在本發(fā)明實(shí)施例中,所述Kubernetes是基于Docker構(gòu)建一個(gè)容器的調(diào)度服務(wù),提供資源調(diào)度、均衡容災(zāi)、服務(wù)注冊(cè)、動(dòng)態(tài)擴(kuò)縮容等功能套件,在Kubernetes中,調(diào)度的最小顆粒不是單純的容器,而是Pod,Pod是一個(gè)可以被創(chuàng)建、銷毀、調(diào)度、管理的最小的部署單元。比如一個(gè)或一組容器;復(fù)制控制器(RC,ReplicationController)是Kubernetes系統(tǒng)中最有用的功能,實(shí)現(xiàn)復(fù)制多個(gè)Pod副本,往往一個(gè)應(yīng)用需要多個(gè)Pod來(lái)支撐,并且可以保證其復(fù)制的副本數(shù),即使副本所調(diào)度分配的主宿機(jī)出現(xiàn)異常,通過(guò)RC可以保證在其它主宿機(jī)啟用同等數(shù)量的Pod。RC可以通過(guò)repcon模板來(lái)創(chuàng)建多個(gè)Pod副本,同樣也可以直接復(fù)制已存在Pod,需要通過(guò)標(biāo)簽選擇器(Labelselector)來(lái)關(guān)聯(lián);Services是Kubernetes最外圍的單元,通過(guò)虛擬一個(gè)訪問(wèn)IP及服務(wù)端口,可以訪問(wèn)定義好的Pod資源,例如通過(guò)iptables的nat轉(zhuǎn)發(fā)來(lái)實(shí)現(xiàn),轉(zhuǎn)發(fā)的目標(biāo)端口為Kube_proxy生成的隨機(jī)端口。步驟102,接收所述鏡像拉取命令,并根據(jù)所述鏡像拉取命令,從內(nèi)部局域網(wǎng)中的Docker鏡像私有倉(cāng)庫(kù)獲取所述分布式存儲(chǔ)系統(tǒng)的第一鏡像數(shù)據(jù);這里,所述主機(jī)接收所述鏡像拉取命令,并由所述源主機(jī)根據(jù)所述鏡像拉取命令在所述Docker鏡像私有倉(cāng)庫(kù)中獲取所述分存式存儲(chǔ)系統(tǒng)的第一鏡像數(shù)據(jù),其中,由所述源主機(jī)負(fù)責(zé)程序的啟動(dòng)及程序異常down掉后的重啟操作。在本發(fā)明實(shí)施例中,由于分布式存儲(chǔ)系統(tǒng)的鏡像數(shù)據(jù)只能從互聯(lián)網(wǎng)上獲取,而為了內(nèi)部局域網(wǎng)中所述Docker鏡像私有倉(cāng)庫(kù)的安全,云服務(wù)中的主機(jī)集群無(wú)法直接通過(guò)互聯(lián)網(wǎng)獲取所述分布式存儲(chǔ)系統(tǒng)的鏡像數(shù)據(jù),需要通過(guò)外網(wǎng)主機(jī)從互聯(lián)網(wǎng)獲取所述分布式存儲(chǔ)系統(tǒng)的原始鏡像數(shù)據(jù),所以,當(dāng)所述外網(wǎng)主機(jī)從互聯(lián)網(wǎng)上獲取到所述分布式存儲(chǔ)系統(tǒng)的原始鏡像數(shù)據(jù)后,將所述原始鏡像數(shù)據(jù)存儲(chǔ)到內(nèi)部局域網(wǎng)中的鏡像創(chuàng)建主機(jī)上,并由所述鏡像創(chuàng)建主機(jī)再將所述原始鏡像數(shù)據(jù)向內(nèi)部局域網(wǎng)中的Docker鏡像私有倉(cāng)庫(kù)發(fā)送。如此,云服務(wù)中的主機(jī)集群就可以從Docker鏡像私有倉(cāng)庫(kù)獲取所述分布式存儲(chǔ)系統(tǒng)的鏡像數(shù)據(jù)。具體利用K8S管理節(jié)點(diǎn)在云服務(wù)中確定啟動(dòng)的主機(jī)的流程如圖2所示。圖2為本發(fā)明實(shí)施例中K8S管理節(jié)點(diǎn)在云服務(wù)中確定啟動(dòng)的主機(jī)的流程示意圖;如圖2所示:開(kāi)發(fā)人員在內(nèi)網(wǎng)中的K8S管理節(jié)點(diǎn)201創(chuàng)建分布式存儲(chǔ)系統(tǒng)的編碼文件,其中,所述編碼文件中包含要獲取的鏡像路徑和啟動(dòng)節(jié)點(diǎn)的數(shù)目。待所述編碼文件創(chuàng)創(chuàng)建完畢后,由所述K8S管理節(jié)點(diǎn)201中的K8S調(diào)度器根據(jù)所述編碼文件中的配置信息和云服務(wù)中的主機(jī)集群202當(dāng)前的資源占用情況,在所述主機(jī)集群202中選取執(zhí)行分布式存儲(chǔ)系統(tǒng)的程序的主機(jī),并向所述主機(jī)下發(fā)鏡像拉取命令,所述主機(jī)根據(jù)所述命令,從內(nèi)部局域網(wǎng)的Docker鏡像私有倉(cāng)庫(kù)203中獲取所述分存式存儲(chǔ)系統(tǒng)的第一鏡像數(shù)據(jù)。其中,所述Docker鏡像私有倉(cāng)庫(kù)203中的鏡像數(shù)據(jù)均是通過(guò)外網(wǎng)主機(jī)205從互聯(lián)網(wǎng)206中獲取到的分布式存儲(chǔ)系統(tǒng)的原始鏡像數(shù)據(jù),并由開(kāi)發(fā)人員將外網(wǎng)主機(jī)205獲取到的原始鏡像數(shù)據(jù)存儲(chǔ)到內(nèi)部局域網(wǎng)的鏡像創(chuàng)建主機(jī)204中,所述鏡像創(chuàng)建主機(jī)204再將所述原始鏡像數(shù)據(jù)上傳到所述Docker鏡像私有倉(cāng)庫(kù)203。如此,完成鏡像創(chuàng)建和主機(jī)的選取。步驟103,為所述源主機(jī)配置IP地址段,并從所述IP地址段中獲取所述源主機(jī)的第一IP地址,根據(jù)所述第一IP地址以及所述目標(biāo)主機(jī)的第二IP地址信息對(duì)所述第一鏡像數(shù)據(jù)進(jìn)行路由封裝,得到第二鏡像數(shù)據(jù),并根據(jù)所述第二IP地址信息查找路由表,按照所查找出的路徑將所述第二鏡像數(shù)據(jù)從所述源主機(jī)中的第一Flannel虛擬網(wǎng)卡向所述目標(biāo)主機(jī)中的第二Flannel虛擬網(wǎng)卡發(fā)送;這里,具體由所述Flannel通過(guò)鍵/值存儲(chǔ)服務(wù)etcd為所述源主機(jī)配置IP地址段。由于在默認(rèn)的Docker配置中,每個(gè)節(jié)點(diǎn)上的Docker服務(wù)會(huì)分別負(fù)責(zé)所在節(jié)點(diǎn)容器的IP分配。這樣導(dǎo)致的一個(gè)問(wèn)題是,不同節(jié)點(diǎn)上容器可能獲得相同的內(nèi)外IP地址,并使這些容器之間能夠之間通過(guò)IP地址相互找到,也就是相互ping通。而在Kubernetes的網(wǎng)絡(luò)模型中,每個(gè)物理節(jié)點(diǎn)具備一段屬于同一個(gè)內(nèi)網(wǎng)IP段內(nèi)的專用的子網(wǎng)IP。例如:節(jié)點(diǎn)A:10.0.1.0/24;節(jié)點(diǎn)B:10.0.2.0/24;節(jié)點(diǎn)C:10.0.3.0/24;所以,在所述主機(jī)中配置Flannel,并啟動(dòng)所述Flannel后,所述Flannel就能為集群中的所有節(jié)點(diǎn)重新規(guī)劃IP地址的使用規(guī)則,從而使得不同節(jié)點(diǎn)上的容器能夠獲得同屬一個(gè)內(nèi)網(wǎng)且不重復(fù)的IP地址,并讓屬于不同節(jié)點(diǎn)上的容器能夠直接通過(guò)內(nèi)網(wǎng)IP通信。具體地,首先在所述源主機(jī)上啟動(dòng)etcd,之后進(jìn)行Flannel的配置。其中,所述etcd是應(yīng)用在分布式環(huán)境下的鍵/值(key/value)存儲(chǔ)服務(wù)。利用etcd,應(yīng)用程序可以在集群中共享信息、配置或作服務(wù)發(fā)現(xiàn),etcd能在集群的各個(gè)節(jié)點(diǎn)中復(fù)制這些數(shù)據(jù)并保證這些數(shù)據(jù)始終正確。在本發(fā)明實(shí)施例中,所述源主機(jī)啟動(dòng)Flannel服務(wù)后,在所述源主機(jī)上的Flannel就能查看所述源主機(jī)中Docker服務(wù)進(jìn)程的運(yùn)行參數(shù),并通過(guò)Etcd為所述源主機(jī)分配可用的IP地址段。當(dāng)所述源主機(jī)要發(fā)送所述第一鏡像數(shù)據(jù)時(shí),由所述源主機(jī)中的第一Docker虛擬網(wǎng)卡將所述第一鏡像數(shù)據(jù)向所述源主機(jī)中的第一Flannel虛擬網(wǎng)卡發(fā)送;所述第一Flannel虛擬網(wǎng)卡接收到所述第一鏡像數(shù)據(jù)后,根據(jù)Flannel為所述源主機(jī)配置的IP地址段,從所述IP地址段中獲取所述源主機(jī)的第一IP地址,并根據(jù)所述第一IP地址以及所述目標(biāo)主機(jī)的第二IP地址信息對(duì)所述第一鏡像數(shù)據(jù)進(jìn)行路由封裝,例如進(jìn)行UDP封裝,得到第二鏡像數(shù)據(jù),并根據(jù)所述第二IP地址信息查找路由表,按照所查找出的路徑將所述第二鏡像數(shù)據(jù)從所述源主機(jī)中的第一Flannel虛擬網(wǎng)卡向所述目標(biāo)主機(jī)中的第二Flannel虛擬網(wǎng)卡發(fā)送。所述目標(biāo)主機(jī)接收到所述第二鏡像數(shù)據(jù)后,由所述目標(biāo)主機(jī)中的flanneld服務(wù)對(duì)所述第二鏡像數(shù)據(jù)進(jìn)行解包封,得到第三鏡像數(shù)據(jù),即原始數(shù)據(jù),并由所述目標(biāo)主機(jī)中的第二Flannel虛擬網(wǎng)卡向所述目標(biāo)主機(jī)中的第二Docker虛擬網(wǎng)卡發(fā)送所述第三鏡像數(shù)據(jù),如此完成數(shù)據(jù)路由。具體Flannel的工作原理具體如圖3所示。圖3為本發(fā)明實(shí)施例中Flannel的工作原理示意圖,如圖3所示:數(shù)據(jù)從源容器中發(fā)出后,經(jīng)由所在主機(jī)的docker0虛擬網(wǎng)卡轉(zhuǎn)發(fā)到flannel0虛擬網(wǎng)卡,這是個(gè)P2P的虛擬網(wǎng)卡,flanneld服務(wù)監(jiān)聽(tīng)在網(wǎng)卡的另外一端。然后Flannel通過(guò)維護(hù)了一張節(jié)點(diǎn)間的路由表。源主機(jī)的flanneld服務(wù)將原本的數(shù)據(jù)內(nèi)容UDP封裝后根據(jù)Etcd服務(wù)中與自身匹配的路由表,投遞給目的主機(jī)的flanneld服務(wù),目的主機(jī)的flanneld服務(wù)收到所述數(shù)據(jù)后,對(duì)所述數(shù)據(jù)進(jìn)行解包操作,然后將解包后的數(shù)據(jù)由目的主機(jī)中的flannel0虛擬網(wǎng)卡,轉(zhuǎn)發(fā)到目的主機(jī)的docker0虛擬網(wǎng)卡,完成數(shù)據(jù)路由。圖4為本發(fā)明實(shí)施例一種實(shí)現(xiàn)分布式存儲(chǔ)系統(tǒng)的部署裝置組成示意圖;如圖4所示,所述裝置包括:容器集群管理節(jié)點(diǎn)Kubernetes401,用于根據(jù)分布式存儲(chǔ)系統(tǒng)的編碼文件,在主機(jī)集群402中確定執(zhí)行分布式存儲(chǔ)系統(tǒng)的程序的主機(jī),并向所述主機(jī)發(fā)送鏡像拉取命令;其中,所述主機(jī)包括源主機(jī)和目標(biāo)主機(jī),所述源主機(jī)和所述目標(biāo)主機(jī)中均包含有Flannel和Docker;主機(jī)集群402,用于接收所述Kubernetes401發(fā)送的鏡像拉取命令,并根據(jù)所述鏡像拉取命令從內(nèi)部局域網(wǎng)中的Docker鏡像私有倉(cāng)庫(kù)獲取所述分布式存儲(chǔ)系統(tǒng)的第一鏡像數(shù)據(jù);Flannel403,用于為所述源主機(jī)配置IP地址段,并從所述IP地址段中獲取所述源主機(jī)的第一IP地址,根據(jù)所述第一IP地址以及所述目標(biāo)主機(jī)的第二IP地址信息對(duì)所述第一鏡像數(shù)據(jù)進(jìn)行路由封裝,得到第二鏡像數(shù)據(jù),并根據(jù)所述第二IP地址信息查找路由表,按照所查找出的路徑將所述第二鏡像數(shù)據(jù)從所述源主機(jī)中的第一Flannel虛擬網(wǎng)卡向所述目標(biāo)主機(jī)中的第二Flannel虛擬網(wǎng)卡發(fā)送。這里,所述Flannel403是針對(duì)Kubernetes401設(shè)計(jì)的一個(gè)ON工具,是將TCP數(shù)據(jù)包封裝成另一種網(wǎng)絡(luò)包后,再進(jìn)行路由轉(zhuǎn)發(fā)和通信,具體支持UDP、VxLAN、AWSVPC和GCE路由等數(shù)據(jù)轉(zhuǎn)發(fā)方式。具體地,首先由所述Kubernetes401創(chuàng)建所述分布式存儲(chǔ)系統(tǒng)的編碼文件,以及獲取云服務(wù)中各主機(jī)當(dāng)前的資源數(shù)據(jù);其中,所述編碼文件中包含有要獲取的鏡像路徑及啟動(dòng)的節(jié)點(diǎn)數(shù)目,然后,由所述Kubernetes401中的K8S調(diào)度器根據(jù)編碼文件中有關(guān)所述分布式存儲(chǔ)系統(tǒng)在所述Docker鏡像私有倉(cāng)庫(kù)中的鏡像路徑、節(jié)點(diǎn)的啟動(dòng)數(shù)目以及云服務(wù)中各主機(jī)當(dāng)前的資源數(shù)據(jù)的這些配置信息,在云服務(wù)的主機(jī)集群402中確定執(zhí)行所述分布式存儲(chǔ)系統(tǒng)程序的主機(jī),并由所述K8S調(diào)度器向所述主機(jī)發(fā)送鏡像拉取命令。其中,所述主機(jī)包括源主機(jī)和目標(biāo)主機(jī),所述源主機(jī)和所述目標(biāo)主機(jī)中均包含有Flannel和Docker。在本發(fā)明實(shí)施例中,所述Kubernetes401是基于Docker構(gòu)建一個(gè)容器的調(diào)度服務(wù),提供資源調(diào)度、均衡容災(zāi)、服務(wù)注冊(cè)、動(dòng)態(tài)擴(kuò)縮容等功能套件,在Kubernetes401中,調(diào)度的最小顆粒不是單純的容器,而是Pod,Pod是一個(gè)可以被創(chuàng)建、銷毀、調(diào)度、管理的最小的部署單元。比如一個(gè)或一組容器;RC是Kubernetes401中最有用的功能,實(shí)現(xiàn)復(fù)制多個(gè)Pod副本,往往一個(gè)應(yīng)用需要多個(gè)Pod來(lái)支撐,并且可以保證其復(fù)制的副本數(shù),即使副本所調(diào)度分配的主宿機(jī)出現(xiàn)異常,通過(guò)RC可以保證在其它主宿機(jī)啟用同等數(shù)量的Pod。RC可以通過(guò)repcon模板來(lái)創(chuàng)建多個(gè)Pod副本,同樣也可以直接復(fù)制已存在Pod,需要通過(guò)Labelselector來(lái)關(guān)聯(lián);Services是Kubernetes401最外圍的單元,通過(guò)虛擬一個(gè)訪問(wèn)IP及服務(wù)端口,可以訪問(wèn)定義好的Pod資源,例如通過(guò)iptables的nat轉(zhuǎn)發(fā)來(lái)實(shí)現(xiàn),轉(zhuǎn)發(fā)的目標(biāo)端口為Kube_proxy生成的隨機(jī)端口。在本發(fā)明實(shí)施例中,所述主機(jī)集群402接收所述鏡像拉取命令,并由所述主機(jī)集群402中的所述源主機(jī)根據(jù)所述鏡像拉取命令在所述Docker鏡像私有倉(cāng)庫(kù)中獲取所述分存式存儲(chǔ)系統(tǒng)的第一鏡像數(shù)據(jù),其中,由所述源主機(jī)負(fù)責(zé)程序的啟動(dòng)及程序異常down掉后的重啟操作。在本發(fā)明實(shí)施例中,所述裝置還包括鏡像創(chuàng)建主機(jī)404,由于分布式存儲(chǔ)系統(tǒng)的鏡像數(shù)據(jù)只能從互聯(lián)網(wǎng)上獲取,而為了內(nèi)部局域網(wǎng)中所述Docker鏡像私有倉(cāng)庫(kù)的安全,所述主機(jī)集群402無(wú)法直接通過(guò)互聯(lián)網(wǎng)獲取所述分布式存儲(chǔ)系統(tǒng)的鏡像數(shù)據(jù),需要通過(guò)外網(wǎng)主機(jī)從互聯(lián)網(wǎng)獲取所述分布式存儲(chǔ)系統(tǒng)的原始鏡像數(shù)據(jù),然后,將所述原始鏡像數(shù)據(jù)存儲(chǔ)在所述內(nèi)部局域網(wǎng)中的鏡像創(chuàng)建主機(jī)404上,最后,再由所述內(nèi)部局域網(wǎng)中的鏡像創(chuàng)建主機(jī)404將所述原始鏡像數(shù)據(jù)發(fā)送到內(nèi)部局域網(wǎng)中的Docker鏡像私有倉(cāng)庫(kù),如此,云服務(wù)中的主機(jī)集群402就可以從Docker鏡像私有倉(cāng)庫(kù)獲取所述分布式存儲(chǔ)系統(tǒng)的鏡像數(shù)據(jù)。具體利用K8S管理節(jié)點(diǎn)在云服務(wù)中確定啟動(dòng)的主機(jī)的流程如圖2所示。在本發(fā)明實(shí)施例中,所述Flannel403具體通過(guò)etcd為所述源主機(jī)配置IP地址段。由于在默認(rèn)的Docker配置中,每個(gè)節(jié)點(diǎn)上的Docker服務(wù)會(huì)分別負(fù)責(zé)所在節(jié)點(diǎn)容器的IP分配。這樣導(dǎo)致的一個(gè)問(wèn)題是,不同節(jié)點(diǎn)上容器可能獲得相同的內(nèi)外IP地址,并使這些容器之間能夠之間通過(guò)IP地址相互找到,也就是相互ping通。而在Kubernetes401的網(wǎng)絡(luò)模型中,每個(gè)物理節(jié)點(diǎn)具備一段屬于同一個(gè)內(nèi)網(wǎng)IP段內(nèi)的專用的子網(wǎng)IP。例如:節(jié)點(diǎn)A:10.0.1.0/24;節(jié)點(diǎn)B:10.0.2.0/24;節(jié)點(diǎn)C:10.0.3.0/24;所以,在所述主機(jī)集群402中配置所述Flannel403,并啟動(dòng)所述Flannel403后,所述Flannel403就能為集群中的所有節(jié)點(diǎn)重新規(guī)劃IP地址的使用規(guī)則,從而使得不同節(jié)點(diǎn)上的容器能夠獲得同屬一個(gè)內(nèi)網(wǎng)且不重復(fù)的IP地址,并使屬于不同節(jié)點(diǎn)上的容器能夠直接通過(guò)內(nèi)網(wǎng)IP通信。具體地,首先在所述源主機(jī)上啟動(dòng)etcd,然后進(jìn)行Flannel403的配置。其中,所述etcd是一個(gè)應(yīng)用在分布式環(huán)境下的鍵值存儲(chǔ)服務(wù)。利用etcd,應(yīng)用程序可以在集群中共享信息、配置或作服務(wù)發(fā)現(xiàn),etcd會(huì)在集群的各個(gè)節(jié)點(diǎn)中復(fù)制這些數(shù)據(jù)并保證這些數(shù)據(jù)始終正確。并在所述源主機(jī)運(yùn)行了Flannel403的服務(wù)后,在所述源主機(jī)上的Flannel403就能查看所述源主機(jī)中Docker服務(wù)進(jìn)程的運(yùn)行參數(shù),并通過(guò)Etcd為所述源主機(jī)分配可用的IP地址段。當(dāng)所述源主機(jī)要發(fā)送所述第一鏡像數(shù)據(jù)時(shí),所述源主機(jī)中的第一Docker虛擬網(wǎng)卡將所述第一鏡像數(shù)據(jù)向所述源主機(jī)中的第一Flannel虛擬網(wǎng)卡發(fā)送;所述第一Flannel虛擬網(wǎng)卡接收到所述第一鏡像數(shù)據(jù)后,根據(jù)Flannel403為所述源主機(jī)配置的IP地址段,從所述IP地址段中獲取第一IP地址,根據(jù)所述第一IP地址以及所述目標(biāo)主機(jī)的第二IP地址信息對(duì)所述第一鏡像數(shù)據(jù)進(jìn)行路由封裝,例如進(jìn)行UDP封裝,得到第二鏡像數(shù)據(jù),并根據(jù)查找到的路由表投遞給目標(biāo)主機(jī)中的flanneld服務(wù)。所述目標(biāo)主機(jī)中的flanneld服務(wù)接收到所述第二鏡像數(shù)據(jù)后,由所述目標(biāo)主機(jī)中的flanneld服務(wù)對(duì)所述第二鏡像數(shù)據(jù)進(jìn)行解包封,得到第三鏡像數(shù)據(jù),即原始數(shù)據(jù),并由所述目標(biāo)主機(jī)中的第二Flannel虛擬網(wǎng)卡向所述目標(biāo)主機(jī)中的第二Docker虛擬網(wǎng)卡發(fā)送所述第三鏡像數(shù)據(jù),如此完成數(shù)據(jù)路由。具體Flannel的工作原理具體如圖3所示。通過(guò)本發(fā)明實(shí)施例,不僅可以為云服務(wù)中的各主機(jī)提供統(tǒng)一的端口,實(shí)現(xiàn)主機(jī)的網(wǎng)絡(luò)云化,而且還能夠自動(dòng)負(fù)載均衡到同一服務(wù)的各個(gè)節(jié)點(diǎn)上,從而在不需要第三方nginx進(jìn)行負(fù)載均衡,即可實(shí)現(xiàn)局域網(wǎng)內(nèi)的數(shù)據(jù)路由負(fù)載均衡。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用硬件實(shí)施例、軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器和光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝所設(shè)置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。當(dāng)前第1頁(yè)1 2 3 當(dāng)前第1頁(yè)1 2 3 
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
白水县| 海口市| 库伦旗| 友谊县| 石首市| 江阴市| 阿克陶县| 安仁县| 宜良县| 泉州市| 垦利县| 崇义县| 大城县| 麻阳| 临海市| 灵山县| 榆社县| 浮山县| 宿迁市| 武宁县| 电白县| 新竹县| 三河市| 珠海市| 永修县| 潼南县| 东明县| 米泉市| 禹城市| 吉木乃县| 台前县| 九龙县| 遵化市| 茶陵县| 东宁县| 左权县| 庆城县| 开化县| 东源县| 武冈市| 基隆市|