本發(fā)明涉及應用實例的彈性伸縮技術領域,更具體地說,涉及一種基于容器的應用實例彈性伸縮的實現(xiàn)方法、裝置及系統(tǒng)。
背景技術:
dockerswarm集群組件是docker容器的集群管理組件,dockerswarm可以管理多個dockerdeamon。容器為應用程序提供的互相隔離的運行空間,每個容器內(nèi)都包含一個獨享的完整用戶環(huán)境空間,并且一個容器內(nèi)的變動不會影響其他容器的運行環(huán)境。目前,dockerswarm集群組件能夠實現(xiàn)對主機的集群管理,但是dockerswarm集群組件在最初創(chuàng)建完預定數(shù)量的應用實例后,該應用實例的數(shù)量便是固定的。而對于應用出現(xiàn)負載過大或者負載過小等情況時,swarm無法自動的根據(jù)應用的負載情況進行應用實例的擴容和伸縮,靈活性較差。
因此,如何實現(xiàn)在容器中運行的應用實例的彈性伸縮,是本領域技術人員需要解決的問題。
技術實現(xiàn)要素:
本發(fā)明的目的在于提供一種基于容器的應用實例彈性伸縮的實現(xiàn)方法、裝置及系統(tǒng),以實現(xiàn)在容器中運行的應用實例的彈性伸縮,提升基于容器應用的高可靠性。
為實現(xiàn)上述目的,本發(fā)明實施例提供了如下技術方案:
一種基于容器的應用實例彈性伸縮的實現(xiàn)方法,包括:
確定與目標應用對應的目標主機節(jié)點及目標容器;
確定與所述目標應用對應的彈性伸縮策略的指標;
從所述目標主機節(jié)點中,獲取與所述目標容器對應的指標實際值;
若根據(jù)所述指標實際值和所述彈性伸縮策略,判定需要對所述目標應用的容器數(shù)量進行調(diào)整,則向dockerswarm組件發(fā)送容器數(shù)量調(diào)整指令,以使所述dockerswarm組件對容器數(shù)量進行調(diào)整。
其中,從所述目標主機節(jié)點中,獲取與所述目標容器對應的指標實際值,包括:
通過定時任務從所述目標主機節(jié)點的dockerbeat中,獲取與所述目標容器對應的指標實際值。
其中,所述若根據(jù)所述指標實際值和所述彈性伸縮策略,判定需要對所述目標應用的容器數(shù)量進行調(diào)整,則向dockerswarm組件發(fā)送容器數(shù)量調(diào)整指令,包括:
判斷所述指標實際值是否大于所述彈性伸縮策略中對應的第一指標閾值;若是,則向dockerswarm組件發(fā)送擴容指令。
其中,所述若根據(jù)所述指標實際值和所述彈性伸縮策略,判定需要對所述目標應用的容器數(shù)量進行調(diào)整,則向dockerswarm組件發(fā)送容器數(shù)量調(diào)整指令,包括:
判斷所述指標實際值是否小于所述彈性伸縮策略中對應的第二指標閾值;若是,則向dockerswarm組件發(fā)送縮容指令;其中,所述第一指標閾值大于所述第二指標閾值。
一種基于容器的應用實例彈性伸縮的實現(xiàn)裝置,包括:
第一確定模塊,用于確定與目標應用對應的目標主機節(jié)點;
第二確定模塊,用于確定與目標應用對應的及目標容器;
第三確定模塊,用于確定與所述目標應用對應的彈性伸縮策略的指標;
獲取模塊,用于從所述目標主機節(jié)點中,獲取與所述目標容器對應的指標實際值;
容器數(shù)量調(diào)整模塊,用于根據(jù)所述指標實際值和所述彈性伸縮策略,判定需要對所述目標應用的容器數(shù)量進行調(diào)整時,向dockerswarm組件發(fā)送容器數(shù)量調(diào)整指令,以使所述dockerswarm組件對容器數(shù)量進行調(diào)整。
其中,所述獲取模塊通過定時任務從所述目標主機節(jié)點的dockerbeat中,獲取與所述目標容器對應的指標實際值。
其中,所述容器數(shù)量調(diào)整模塊包括:
第一判斷單元,用于判斷所述指標實際值是否大于所述彈性伸縮策略中對應的第一指標閾值;若是,則向dockerswarm組件發(fā)送擴容指令。
其中,所述容器數(shù)量調(diào)整模塊包括:
第二判斷單元,用于判斷所述指標實際值是否小于所述彈性伸縮策略中對應的第二指標閾值;若是,則向dockerswarm組件發(fā)送縮容指令;其中,所述第一指標閾值大于所述第二指標閾值。
一種基于容器的應用實例彈性伸縮的實現(xiàn)系統(tǒng),包括:
容器云平臺、swarm集群管理組件和主機集群節(jié)點;
所述容器云平臺,用于確定與目標應用對應的目標主機節(jié)點、目標容器,以及與所述目標應用對應的彈性伸縮策略的指標;從所述目標主機節(jié)點中,獲取與所述目標容器對應的指標實際值;并在根據(jù)所述指標實際值和所述彈性伸縮策略,判定需要對所述目標應用的容器數(shù)量進行調(diào)整時,向dockerswarm組件發(fā)送容器數(shù)量調(diào)整指令;
所述swarm集群管理組件,用于利用所述容器數(shù)量調(diào)整指令,在所述主機集群節(jié)點中的目標主機節(jié)點上創(chuàng)建新容器或者刪除容器,以便對容器數(shù)量進行調(diào)整。
其中,所述容器云平臺通過定時任務從所述目標主機節(jié)點的dockerbeat中,獲取與所述目標容器對應的指標實際值。
通過以上方案可知,本發(fā)明實施例提供的一種基于容器的應用實例彈性伸縮的實現(xiàn)方法,包括:確定與目標應用對應的目標主機節(jié)點及目標容器;確定與所述目標應用對應的彈性伸縮策略的指標;從所述目標主機節(jié)點中,獲取與所述目標容器對應的指標實際值;若根據(jù)所述指標實際值和所述彈性伸縮策略,判定需要對所述目標應用的容器數(shù)量進行調(diào)整,則向dockerswarm組件發(fā)送容器數(shù)量調(diào)整指令,以使所述dockerswarm組件對容器數(shù)量進行調(diào)整;
可見,在本實施例中,通過獲取的指標實際值與預定的彈性伸縮策略進行匹配,可自動觸發(fā)swarm集群組件進行調(diào)度創(chuàng)建或刪除容器,實現(xiàn)應用實例在某一條件下的自動擴容或伸縮,提升基于容器應用的高可靠性;本發(fā)明還公開了一種基于容器的應用實例彈性伸縮的實現(xiàn)裝置及系統(tǒng),同樣能實現(xiàn)上述技術效果。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例公開的一種基于容器的應用實例彈性伸縮的實現(xiàn)方法流程示意圖;
圖2為本發(fā)明實施例公開的一種具體的基于容器的應用實例彈性伸縮的實現(xiàn)方法流程示意圖;
圖3為本發(fā)明實施例公開的一種基于容器的應用實例彈性伸縮的實現(xiàn)裝置結構示意圖。
具體實施方式
下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明實施例公開了一種基于容器的應用實例彈性伸縮的實現(xiàn)方法、裝置及系統(tǒng),以實現(xiàn)在容器中運行的應用實例的彈性伸縮,提升基于容器應用的高可靠性。
參見圖1,本發(fā)明實施例提供的一種基于容器的應用實例彈性伸縮的實現(xiàn)方法,包括:
s101、確定與目標應用對應的目標主機節(jié)點及目標容器;
s102、確定與所述目標應用對應的彈性伸縮策略的指標;
具體的,參見圖2,為本實施例公開的一具體的實現(xiàn)流程示意圖,在對容器數(shù)量進行調(diào)整之前,首先需要通過容器云平臺進行目標應用app的部署,上傳應用war包,選擇基礎鏡像,選擇部署的主機集群的目標主機節(jié)點;并設置此目標應用的原始實例數(shù)和彈性伸縮策略;在本實施例中設置原始實例數(shù)即目標容器的數(shù)量為2個,通過dockerswarm創(chuàng)建2個容器并啟動應用,可以注冊到ngnix中,此時在容器云平臺中能看到應用實例app-ins1和app-ins2。
具體的,本實施例中的彈性伸縮策略的指標具體可以為主機上的容器消耗的cpu、內(nèi)存等信息,因此本方案中的彈性伸縮策略為根據(jù)上述指標設定的判定條件,例如:彈性伸縮策略中包括第一彈性伸縮策略和第二彈性伸縮策略;第一彈性伸縮策略為:當cpu負載>80%時,擴容1個容器實例;那么檢測到cpu負載>80%時,便發(fā)送創(chuàng)建一個新容器實例的指令;第二彈性伸縮策略為:當cpu負載<20%時減少1個容器實例;那么檢測到cpu負載<20%時,便發(fā)送刪除一個容器實例的指令,從而實現(xiàn)了應用實例在某一條件下的自動擴容或伸縮,提升基于容器應用的高可靠性。
s103、從所述目標主機節(jié)點中,獲取與所述目標容器對應的指標實際值;
其中,從所述目標主機節(jié)點中,獲取與所述目標容器對應的指標實際值,包括:通過定時任務從所述目標主機節(jié)點的dockerbeat中,獲取與所述目標容器對應的指標實際值。
具體的,本實施例中的dockerbeat為一種代理程序,安裝在主機上,能對運行在此主機上的容器消耗的cpu、內(nèi)存等信息的自動搜集。因此,定時任務獲取了更新的目標應用app彈性伸縮策略的指標信息后,并可通過定時任務定時從目標主機節(jié)點的dockerbeat中獲取正在運行的應用實例配置的指標實際值,以便對容器的數(shù)量進行調(diào)整。
s104、若根據(jù)所述指標實際值和所述彈性伸縮策略,判定需要對所述目標應用的容器數(shù)量進行調(diào)整,則向dockerswarm組件發(fā)送容器數(shù)量調(diào)整指令,以使所述dockerswarm組件對容器數(shù)量進行調(diào)整。
其中,所述若根據(jù)所述指標實際值和所述彈性伸縮策略,判定需要對所述目標應用的容器數(shù)量進行調(diào)整,則向dockerswarm組件發(fā)送容器數(shù)量調(diào)整指令,包括:
判斷所述指標實際值是否大于所述彈性伸縮策略中對應的第一指標閾值;若是,則向dockerswarm組件發(fā)送擴容指令;
判斷所述指標實際值是否小于所述彈性伸縮策略中對應的第二指標閾值;若是,則向dockerswarm組件發(fā)送縮容指令;其中,所述第一指標閾值大于所述第二指標閾值。
具體的,本實施例中的指標為cpu、內(nèi)存等,則每個指標都有對應的指標閾值,該閾值是判斷是否擴容和縮容的依據(jù);在本實施例中,為每個指標設置兩個指標閾值:第一指標閾值和第二指標閾值,第一指標閾值是判斷是否需要擴容的標準,例如:當cpu負載>80%時,擴容1個容器實例,這里的80%便是第一指標閾值;第二指標閾值是判斷是否需要縮容的標準,例如:當cpu負載<20%時減少1個容器實例,這里的<20%便是第二指標閾值。
需要說明的是,由于對是否需要縮容和擴容進行判定時,可能依據(jù)的是多個指標閾值,這時在確定最終的容器數(shù)量調(diào)整指令時,可根據(jù)彈性伸縮策略的具體要求而確定,例如:若該策略中,設定cpu的優(yōu)先級為最高,那么,不管其他的指標是否超出閾值,只要檢測到cpu超出對應的閾值后,便執(zhí)行擴容指令。
具體的,dockerswarm組件接收到創(chuàng)建新容器實例指令后,便從鏡像倉庫下載目標應用app的鏡像,在目標主機節(jié)點上創(chuàng)建一個新的容器應用實例,并將新實例注冊到ngnix上,供用戶訪問;同理,若dockerswarm組件接收到刪除容器實例指令,則刪除已創(chuàng)建的容器應用實例。
下面對本發(fā)明實施例提供的應用實例彈性伸縮的實現(xiàn)裝置進行介紹,下文描述的應用實例彈性伸縮的實現(xiàn)裝置與上文描述的應用實例彈性伸縮的實現(xiàn)方法可以相互參照。
參見圖3,本發(fā)明實施例提供的一種基于容器的應用實例彈性伸縮的實現(xiàn)裝置,包括:
第一確定模塊100,用于確定與目標應用對應的目標主機節(jié)點;
第二確定模塊200,用于確定與目標應用對應的及目標容器;
第三確定模塊300,用于確定與所述目標應用對應的彈性伸縮策略的指標;
獲取模塊400,用于從所述目標主機節(jié)點中,獲取與所述目標容器對應的指標實際值;
容器數(shù)量調(diào)整模塊500,用于根據(jù)所述指標實際值和所述彈性伸縮策略,判定需要對所述目標應用的容器數(shù)量進行調(diào)整時,向dockerswarm組件發(fā)送容器數(shù)量調(diào)整指令,以使所述dockerswarm組件對容器數(shù)量進行調(diào)整。
基于上述實施例,所述獲取模塊400通過定時任務從所述目標主機節(jié)點的dockerbeat中,獲取與所述目標容器對應的指標實際值。
基于上述實施例,所述容器數(shù)量調(diào)整模塊500包括:
第一判斷單元,用于判斷所述指標實際值是否大于所述彈性伸縮策略中對應的第一指標閾值;若是,則向dockerswarm組件發(fā)送擴容指令。
基于上述實施例,所述容器數(shù)量調(diào)整模塊500包括:
第二判斷單元,用于判斷所述指標實際值是否小于所述彈性伸縮策略中對應的第二指標閾值;若是,則向dockerswarm組件發(fā)送縮容指令;其中,所述第一指標閾值大于所述第二指標閾值。
參見圖2,本發(fā)明實施例提供的一種基于容器的應用實例彈性伸縮的實現(xiàn)系統(tǒng),包括:
容器云平臺600、swarm集群管理組件700和主機集群節(jié)點800;
所述容器云平臺,用于確定與目標應用對應的目標主機節(jié)點、目標容器,以及與所述目標應用對應的彈性伸縮策略的指標;從所述目標主機節(jié)點中,獲取與所述目標容器對應的指標實際值;并在根據(jù)所述指標實際值和所述彈性伸縮策略,判定需要對所述目標應用的容器數(shù)量進行調(diào)整時,向dockerswarm組件發(fā)送容器數(shù)量調(diào)整指令;
所述swarm集群管理組件,用于利用所述容器數(shù)量調(diào)整指令,在所述主機集群節(jié)點中的目標主機節(jié)點上創(chuàng)建新容器或者刪除容器,以便對容器數(shù)量進行調(diào)整。
其中,所述容器云平臺通過定時任務從所述目標主機節(jié)點的dockerbeat中,獲取與所述目標容器對應的指標實際值。
綜上可見,本發(fā)明實施例提供的一種基于容器的應用實例彈性伸縮的實現(xiàn)方法、裝置及系統(tǒng),可通過獲取的指標實際值與預定的彈性伸縮策略進行匹配,可自動觸發(fā)swarm集群組件進行調(diào)度創(chuàng)建或刪除容器,實現(xiàn)應用實例在某一條件下的自動擴容或伸縮,提升基于容器應用的高可靠性;本發(fā)明還公開了一種基于容器的應用實例彈性伸縮的實現(xiàn)裝置,同樣能實現(xiàn)上述技術效果。
本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。
對所公開的實施例的上述說明,使本領域專業(yè)技術人員能夠實現(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領域的專業(yè)技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。