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