本發(fā)明涉及云計(jì)算,尤其涉及一種api負(fù)載均衡系統(tǒng)、方法、設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、k8s(kubernetes)集群中有api(application?programming?interface,應(yīng)用程序編程接口)服務(wù)和node兩種角色,其中node是負(fù)責(zé)容器運(yùn)行的主機(jī)服務(wù)器,api服務(wù)是負(fù)責(zé)管控node服務(wù)器的。node會(huì)時(shí)刻去主動(dòng)訪問(wèn)api服務(wù),一旦node與api服務(wù)失聯(lián)時(shí)間過(guò)長(zhǎng),集群就可能存在各種異常問(wèn)題,因此api服務(wù)的高可用性與擴(kuò)展性就顯得尤為重要。通常情況下,我們會(huì)給k8s集群部署多個(gè)api服務(wù)器,通常采樣第三方代理方式給這多個(gè)api服務(wù)器做負(fù)載均衡,但通常存在單點(diǎn)故障問(wèn)題,或是橫向擴(kuò)展導(dǎo)致的性能瓶頸問(wèn)題,達(dá)到的效果并不是太理想,且成本較高。
2、上述內(nèi)容僅用于輔助理解本發(fā)明的技術(shù)方案,并不代表承認(rèn)上述內(nèi)容是現(xiàn)有技術(shù)。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的主要目的在于提供一種api負(fù)載均衡系統(tǒng)、方法、設(shè)備及存儲(chǔ)介質(zhì),旨在解決現(xiàn)有技術(shù)中使用傳統(tǒng)的第三方代理方式為k8s集群中多api服務(wù)器做負(fù)載均衡,達(dá)到的效果不理想,且成本較高的技術(shù)問(wèn)題。
2、為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種api負(fù)載均衡系統(tǒng),所述api負(fù)載均衡系統(tǒng)包括主機(jī)與控制模塊,所述控制模塊包括數(shù)據(jù)庫(kù)與控制組件,所述主機(jī)包括ipvs模塊與agent模塊;
3、所述數(shù)據(jù)庫(kù),用于存儲(chǔ)api服務(wù)器的服務(wù)器信息;
4、所述控制組件,用于讀取所述數(shù)據(jù)庫(kù)中的服務(wù)器信息,在感知到所述服務(wù)器信息存在變動(dòng)時(shí),根據(jù)所述服務(wù)器信息,更新所述ipvs模塊中的轉(zhuǎn)發(fā)規(guī)則表;
5、所述ipvs模塊,用于在接收到所述agent模塊發(fā)起的訪問(wèn)api服務(wù)器的注冊(cè)請(qǐng)求時(shí),基于更新后的轉(zhuǎn)發(fā)規(guī)則表,確定目標(biāo)api服務(wù)器,并將所述注冊(cè)請(qǐng)求轉(zhuǎn)發(fā)至所述目標(biāo)api服務(wù)器。
6、可選地,所述控制模塊還包括可視化組件;
7、所述可視化組件,用于對(duì)所述服務(wù)器信息進(jìn)行可視化展示。
8、可選地,所述控制組件包括數(shù)據(jù)讀取單元、格式轉(zhuǎn)換單元、數(shù)據(jù)寫(xiě)入單元以及數(shù)據(jù)展示單元,所述數(shù)據(jù)讀取單元與所述數(shù)據(jù)寫(xiě)入單元通過(guò)所述格式轉(zhuǎn)換單元連接,所述數(shù)據(jù)讀取單元與所述數(shù)據(jù)庫(kù)連接,所述數(shù)據(jù)寫(xiě)入單元與所述ipvs模塊連接,所述數(shù)據(jù)展示單元分別與所述格式轉(zhuǎn)換單元和所述可視化組件連接;
9、所述數(shù)據(jù)讀取單元,用于讀取所述數(shù)據(jù)庫(kù)中存儲(chǔ)的服務(wù)器信息,在感知到所述服務(wù)器信息存在變動(dòng)時(shí),將所述服務(wù)器信息傳送至所述格式轉(zhuǎn)換單元;
10、所述格式轉(zhuǎn)換單元,用于根據(jù)預(yù)設(shè)轉(zhuǎn)換標(biāo)準(zhǔn),將所述服務(wù)器信息轉(zhuǎn)換為轉(zhuǎn)發(fā)規(guī)則表數(shù)據(jù);
11、所述數(shù)據(jù)寫(xiě)入單元,用于將所述轉(zhuǎn)發(fā)規(guī)則表數(shù)據(jù)寫(xiě)入所述ipvs模塊,對(duì)所述轉(zhuǎn)發(fā)規(guī)則表進(jìn)行更新;
12、所述數(shù)據(jù)展示單元,用于將轉(zhuǎn)換得到的轉(zhuǎn)發(fā)規(guī)則表數(shù)據(jù)傳送至所述可視化組件進(jìn)行可視化展示。
13、可選地,所述服務(wù)器信息至少包括服務(wù)器名稱、協(xié)議、ip地址、端口、服務(wù)器類型以及運(yùn)行狀態(tài),所述轉(zhuǎn)發(fā)規(guī)則表數(shù)據(jù)至少包括源ip地址、源端口、目的ip地址、目的端口、轉(zhuǎn)發(fā)協(xié)議、轉(zhuǎn)發(fā)策略以及會(huì)話狀態(tài);
14、所述格式轉(zhuǎn)換單元,還用于根據(jù)所述服務(wù)器類型為agent時(shí)對(duì)應(yīng)的ip地址和端口,確定所述源ip地址和所述源端口,根據(jù)所述服務(wù)器類型為apiserver時(shí)對(duì)應(yīng)的ip地址和端口,確定所述目標(biāo)ip地址和所述目標(biāo)端口;
15、所述格式轉(zhuǎn)換單元,還用于根據(jù)所述協(xié)議,確定所述轉(zhuǎn)發(fā)協(xié)議;
16、所述格式轉(zhuǎn)換單元,還用于根據(jù)策略填寫(xiě)信息或預(yù)設(shè)轉(zhuǎn)發(fā)策略,確定所述轉(zhuǎn)發(fā)策略,所述預(yù)設(shè)轉(zhuǎn)發(fā)策略為輪詢調(diào)度策略;
17、所述格式轉(zhuǎn)換單元,還用于根據(jù)會(huì)話填寫(xiě)信息或預(yù)設(shè)會(huì)話狀態(tài),確定所述會(huì)話狀態(tài),所述預(yù)設(shè)會(huì)話狀態(tài)為不保持會(huì)話。
18、可選地,所述主機(jī)還包括業(yè)務(wù)模塊;
19、所述業(yè)務(wù)模塊,用于向所述agent模塊提供業(yè)務(wù)應(yīng)用信息;
20、所述agent模塊,還用于在注冊(cè)成功后讀取所述業(yè)務(wù)應(yīng)用信息,并通過(guò)所述ipvs模塊將所述業(yè)務(wù)應(yīng)用信息與本地系統(tǒng)狀態(tài)上報(bào)至所述目標(biāo)api服務(wù)器。
21、可選地,所述agent模塊,還用于在注冊(cè)成功后接收并執(zhí)行所述目標(biāo)api服務(wù)器發(fā)送的管控指令。
22、此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種api負(fù)載均衡方法,所述api負(fù)載均衡方法的步驟包括:
23、讀取api服務(wù)器的服務(wù)器信息,在感知到所述服務(wù)器信息存在變動(dòng)時(shí),根據(jù)所述服務(wù)器信息,更新轉(zhuǎn)發(fā)規(guī)則表;
24、基于更新后的轉(zhuǎn)發(fā)規(guī)則表,確定目標(biāo)api服務(wù)器,并將訪問(wèn)api服務(wù)器的注冊(cè)請(qǐng)求轉(zhuǎn)發(fā)至所述目標(biāo)api服務(wù)器。
25、可選地,所述api負(fù)載均衡方法,還包括:
26、對(duì)所述服務(wù)器信息進(jìn)行可視化展示。
27、此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種api負(fù)載均衡設(shè)備,所述api負(fù)載均衡設(shè)備包括:存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的api負(fù)載均衡程序,所述api負(fù)載均衡程序配置為實(shí)現(xiàn)如上文所述的api負(fù)載均衡方法的步驟。
28、此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)上存儲(chǔ)有api負(fù)載均衡程序,所述api負(fù)載均衡程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上文所述的api負(fù)載均衡方法的步驟。
29、在本發(fā)明中,api負(fù)載均衡系統(tǒng)包括主機(jī)與控制模塊,控制模塊包括數(shù)據(jù)庫(kù)與控制組件,主機(jī)包括ipvs模塊與agent模塊,數(shù)據(jù)庫(kù),用于存儲(chǔ)api服務(wù)器的服務(wù)器信息,控制組件,用于讀取數(shù)據(jù)庫(kù)中的服務(wù)器信息,在感知到服務(wù)器信息存在變動(dòng)時(shí),根據(jù)服務(wù)器信息,更新ipvs模塊中的轉(zhuǎn)發(fā)規(guī)則表,ipvs模塊,用于在接收到agent模塊發(fā)起的訪問(wèn)api服務(wù)器的注冊(cè)請(qǐng)求時(shí),基于更新后的轉(zhuǎn)發(fā)規(guī)則表,確定目標(biāo)api服務(wù)器,并將注冊(cè)請(qǐng)求轉(zhuǎn)發(fā)至目標(biāo)api服務(wù)器。本發(fā)明基于主機(jī)本地操作系統(tǒng)內(nèi)核的ipvs模塊,通過(guò)agent模塊感知api服務(wù)器的信息變化,并將api服務(wù)器的變動(dòng)信息刷新到ipvs規(guī)則表,實(shí)現(xiàn)本地主動(dòng)轉(zhuǎn)發(fā),主機(jī)可以通過(guò)本地的ipvs代理訪問(wèn)到api服務(wù),由傳統(tǒng)的第三方代理方式進(jìn)行負(fù)載均衡到api服務(wù)器,改變?yōu)楸镜刂鲃?dòng)轉(zhuǎn)發(fā)到k8s集群中的api服務(wù)器,提高k8s集群中多api服務(wù)器的高可用性與擴(kuò)展靈活性,同時(shí)降低成本。
1.一種api負(fù)載均衡系統(tǒng),其特征在于,所述api負(fù)載均衡系統(tǒng)包括主機(jī)與控制模塊,所述控制模塊包括數(shù)據(jù)庫(kù)與控制組件,所述主機(jī)包括ipvs模塊與agent模塊;
2.如權(quán)利要求1所述的api負(fù)載均衡系統(tǒng),其特征在于,所述控制模塊還包括可視化組件;
3.如權(quán)利要求2所述的api負(fù)載均衡系統(tǒng),其特征在于,所述控制組件包括數(shù)據(jù)讀取單元、格式轉(zhuǎn)換單元、數(shù)據(jù)寫(xiě)入單元以及數(shù)據(jù)展示單元,所述數(shù)據(jù)讀取單元與所述數(shù)據(jù)寫(xiě)入單元通過(guò)所述格式轉(zhuǎn)換單元連接,所述數(shù)據(jù)讀取單元與所述數(shù)據(jù)庫(kù)連接,所述數(shù)據(jù)寫(xiě)入單元與所述ipvs模塊連接,所述數(shù)據(jù)展示單元分別與所述格式轉(zhuǎn)換單元和所述可視化組件連接;
4.如權(quán)利要求3所述的api負(fù)載均衡系統(tǒng),其特征在于,所述服務(wù)器信息至少包括服務(wù)器名稱、協(xié)議、ip地址、端口、服務(wù)器類型以及運(yùn)行狀態(tài),所述轉(zhuǎn)發(fā)規(guī)則表數(shù)據(jù)至少包括源ip地址、源端口、目的ip地址、目的端口、轉(zhuǎn)發(fā)協(xié)議、轉(zhuǎn)發(fā)策略以及會(huì)話狀態(tài);
5.如權(quán)利要求1所述的api負(fù)載均衡系統(tǒng),其特征在于,所述主機(jī)還包括業(yè)務(wù)模塊;
6.如權(quán)利要求1至3任一項(xiàng)所述的api負(fù)載均衡系統(tǒng),其特征在于,所述agent模塊,還用于在注冊(cè)成功后接收并執(zhí)行所述目標(biāo)api服務(wù)器發(fā)送的管控指令。
7.一種api負(fù)載均衡方法,其特征在于,所述api負(fù)載均衡方法,包括:
8.如權(quán)利要求7所述的方法,其特征在于,所述api負(fù)載均衡方法,還包括:
9.一種api負(fù)載均衡設(shè)備,其特征在于,所述設(shè)備包括:存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的api負(fù)載均衡程序,所述api負(fù)載均衡程序配置為實(shí)現(xiàn)如權(quán)利要求7或8中任一項(xiàng)所述的api負(fù)載均衡方法的步驟。
10.一種存儲(chǔ)介質(zhì),其特征在于,所述存儲(chǔ)介質(zhì)上存儲(chǔ)有api負(fù)載均衡程序,所述api負(fù)載均衡程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求7或8中任一項(xiàng)所述的api負(fù)載均衡方法的步驟。