本申請(qǐng)涉及大數(shù)據(jù),尤其涉及一種跨集群的報(bào)文轉(zhuǎn)發(fā)方法、裝置及系統(tǒng)。
背景技術(shù):
1、kubernetes是當(dāng)前業(yè)界主流的容器管理平臺(tái),業(yè)界通常用k8s來對(duì)kubernetes進(jìn)行縮寫,容器化技術(shù)已經(jīng)發(fā)展了很多年,k8s已經(jīng)成為了容器編排事實(shí)上的標(biāo)準(zhǔn)。在虛擬化領(lǐng)域,容器已經(jīng)成功替代虛擬機(jī)。容器相比虛擬機(jī),具備更好的彈性和速度?,F(xiàn)在很多公司將現(xiàn)有應(yīng)用程序從虛擬化遷移到容器。因此越來越多的應(yīng)用設(shè)計(jì)之初就基于kubernetes進(jìn)行設(shè)計(jì)和開發(fā)。
2、當(dāng)前k8s集群之間轉(zhuǎn)發(fā)報(bào)文,只能通過nodeport機(jī)制,對(duì)外開放一個(gè)端口用于轉(zhuǎn)發(fā)報(bào)文,而每一個(gè)需要跨集群訪問的服務(wù)都需要開通一個(gè)新的端口,k8s默認(rèn)端口號(hào)范圍是30000-32767,如果要跨集群訪問的服務(wù)比較多,很容易就把端口給耗光。同時(shí),開放端口也需要開通相應(yīng)的安全策略,存在一定的安全風(fēng)險(xiǎn)。
技術(shù)實(shí)現(xiàn)思路
1、本申請(qǐng)?zhí)峁┮环N跨集群的報(bào)文轉(zhuǎn)發(fā)方法,所述集群包括服務(wù)代理節(jié)點(diǎn);所述服務(wù)代理節(jié)點(diǎn)用于攔截集群內(nèi)任一節(jié)點(diǎn)發(fā)送的報(bào)文,并針對(duì)所述報(bào)文添加擴(kuò)展信息;所述集群包括用于與其他集群進(jìn)行通信的通信組件,所述方法包括:
2、第一集群中的第一服務(wù)代理節(jié)點(diǎn)攔截所述第一集群內(nèi)任一節(jié)點(diǎn)發(fā)送的服務(wù)請(qǐng)求報(bào)文;
3、所述第一服務(wù)代理節(jié)點(diǎn)確定所述服務(wù)請(qǐng)求報(bào)文中的目的ip地址對(duì)應(yīng)的域名是否為第二集群中的域名;
4、如果是,所述第一服務(wù)代理節(jié)點(diǎn)在所述服務(wù)請(qǐng)求報(bào)文中添加擴(kuò)展信息;所述擴(kuò)展信息至少包括所述目的ip地址對(duì)應(yīng)的域名;
5、所述第一服務(wù)代理節(jié)點(diǎn)將所述報(bào)文發(fā)送至所述第一通信組件,以使所述第一通信組件將所述服務(wù)請(qǐng)求報(bào)文發(fā)送至所述第二集群的第二通信組件;
6、所述第二通信組件基于所述擴(kuò)展信息中的所述目的ip地址對(duì)應(yīng)的域名,將所述服務(wù)請(qǐng)求報(bào)文轉(zhuǎn)發(fā)至所述第二集群內(nèi)與所述域名對(duì)應(yīng)的目標(biāo)節(jié)點(diǎn)并返回服務(wù)應(yīng)答報(bào)文。
7、可選的,所述第一集群中的第一服務(wù)代理節(jié)點(diǎn)攔截所述第一集群內(nèi)任一節(jié)點(diǎn)發(fā)送的服務(wù)請(qǐng)求報(bào)文之前,所述方法還包括:
8、所述第一服務(wù)代理節(jié)點(diǎn)攔截第一集群內(nèi)任一節(jié)點(diǎn)發(fā)送的dns請(qǐng)求報(bào)文;
9、所述第一服務(wù)代理節(jié)點(diǎn)確定所述dns解析報(bào)文請(qǐng)求的域名是否在所述第二集群;
10、如果所述dns解析報(bào)文請(qǐng)求的域名在所述第二集群,構(gòu)造隨機(jī)的ip地址并記錄所述ip地址與所述域名之間的對(duì)應(yīng)關(guān)系,并將所述ip地址返回至所述節(jié)點(diǎn),以由所述節(jié)點(diǎn)基于所述ip地址發(fā)送服務(wù)請(qǐng)求報(bào)文。
11、可選的,所述第一服務(wù)代理節(jié)點(diǎn)確定所述dns解析報(bào)文請(qǐng)求的域名是否在所述第二集群,包括:所述第一服務(wù)代理節(jié)點(diǎn)向dns服務(wù)器發(fā)送所述dns解析報(bào)文,以使所述dns服務(wù)器查詢預(yù)設(shè)的域名表,確定所述dns解析報(bào)文請(qǐng)求的域名在所述第二集群;其中,域名表包括第二集群中的全部域名。
12、可選的,所述第一服務(wù)代理節(jié)點(diǎn)確定所述服務(wù)請(qǐng)求報(bào)文中的目的ip地址對(duì)應(yīng)的域名是否為第二集群中的域名,包括:
13、確定所述服務(wù)請(qǐng)求報(bào)文中的目的ip地址是否為所述第一服務(wù)代理節(jié)點(diǎn)構(gòu)造的ip地址;
14、如果是,確定所述服務(wù)請(qǐng)求報(bào)文中的目的ip地址對(duì)應(yīng)的域名為第二集群中的域名。
15、可選的,所述第一服務(wù)代理節(jié)點(diǎn)在所述服務(wù)請(qǐng)求報(bào)文中添加擴(kuò)展信息;所述擴(kuò)展信息至少包括所述目的ip地址對(duì)應(yīng)的域名,包括:
16、所述第一服務(wù)代理節(jié)點(diǎn)查詢ip地址與所述域名之間的對(duì)應(yīng)關(guān)系,確定與所述目的ip地址對(duì)應(yīng)的域名;
17、所述第一服務(wù)代理節(jié)點(diǎn)在所述請(qǐng)求報(bào)文中添加擴(kuò)展信息;所述擴(kuò)展信息包括所述目的ip地址對(duì)應(yīng)的域名。
18、可選的,方法還包括:
19、如果所述服務(wù)請(qǐng)求報(bào)文中的目的ip地址不為所述第一服務(wù)代理節(jié)點(diǎn)構(gòu)造的ip地址,所述第一服務(wù)代理節(jié)點(diǎn)基于所述目的ip地址將所述服務(wù)請(qǐng)求報(bào)文轉(zhuǎn)發(fā)至所述第一集群內(nèi)的目標(biāo)節(jié)點(diǎn)。
20、可選的,所述第二通信組件將所述服務(wù)請(qǐng)求報(bào)文發(fā)送至所述第二集群中的第二服務(wù)代理節(jié)點(diǎn),包括:
21、所述第二通信組件刪除所述擴(kuò)展信息,并基于所述擴(kuò)展信息中的域名進(jìn)行dns解析,確定所述域名對(duì)應(yīng)的目標(biāo)ip地址;
22、所述第二通信組件將所述服務(wù)請(qǐng)求報(bào)文中的目的ip地址修改為所述目標(biāo)ip地址,并基于修改后的所述目的ip地址將所述服務(wù)請(qǐng)求報(bào)文轉(zhuǎn)發(fā)至所述第二集群內(nèi)的目標(biāo)節(jié)點(diǎn),以使所述第二集群內(nèi)的目標(biāo)節(jié)點(diǎn)返回服務(wù)應(yīng)答報(bào)文。
23、可選的,所述第一通信組件與第二通信組件之間預(yù)先開通了用于通信的nodeport端口。
24、本申請(qǐng)還提供一種電子設(shè)備,包括通信接口、處理器、存儲(chǔ)器和總線,所述通信接口、所述處理器和所述存儲(chǔ)器之間通過總線相互連接;
25、所述存儲(chǔ)器中存儲(chǔ)機(jī)器可讀指令,所述處理器通過調(diào)用所述機(jī)器可讀指令,執(zhí)行上述方法。
26、本申請(qǐng)還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有機(jī)器可讀指令,所述機(jī)器可讀指令在被處理器調(diào)用和執(zhí)行時(shí),實(shí)現(xiàn)上述方法。
27、在以上實(shí)施例記載的方案中,由服務(wù)代理節(jié)點(diǎn)攔截并修改報(bào)文轉(zhuǎn)發(fā)至通信組件,由通信組件完成跨集群報(bào)文的轉(zhuǎn)發(fā),由此只需要針對(duì)跨集群的通信組件之間開放用于報(bào)文轉(zhuǎn)發(fā)的端口,從而節(jié)省端口資源。由于減少了端口數(shù)量,不需要開通多余的安全策略,可以降低跨集群的報(bào)文轉(zhuǎn)發(fā)之間的安全風(fēng)險(xiǎn)。
1.一種跨集群的報(bào)文轉(zhuǎn)發(fā)方法,所述集群包括服務(wù)代理節(jié)點(diǎn);所述服務(wù)代理節(jié)點(diǎn)用于攔截集群內(nèi)任一節(jié)點(diǎn)發(fā)送的報(bào)文,并針對(duì)所述報(bào)文添加擴(kuò)展信息;所述集群包括用于與其他集群進(jìn)行通信的通信組件,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,所述第一集群中的第一服務(wù)代理節(jié)點(diǎn)攔截所述第一集群內(nèi)任一節(jié)點(diǎn)發(fā)送的服務(wù)請(qǐng)求報(bào)文之前,所述方法還包括:
3.根據(jù)權(quán)利要求2所述的方法,所述第一服務(wù)代理節(jié)點(diǎn)確定所述dns解析報(bào)文請(qǐng)求的域名是否在所述第二集群,包括:所述第一服務(wù)代理節(jié)點(diǎn)向dns服務(wù)器發(fā)送所述dns解析報(bào)文,以使所述dns服務(wù)器查詢預(yù)設(shè)的域名表,確定所述dns解析報(bào)文請(qǐng)求的域名在所述第二集群;其中,域名表包括第二集群中的全部域名。
4.根據(jù)權(quán)利要求2所述的方法,所述第一服務(wù)代理節(jié)點(diǎn)確定所述服務(wù)請(qǐng)求報(bào)文中的目的ip地址對(duì)應(yīng)的域名是否為第二集群中的域名,包括:
5.根據(jù)權(quán)利要求4所述的方法,所述第一服務(wù)代理節(jié)點(diǎn)在所述服務(wù)請(qǐng)求報(bào)文中添加擴(kuò)展信息;所述擴(kuò)展信息至少包括所述目的ip地址對(duì)應(yīng)的域名,包括:
6.根據(jù)權(quán)利要求4所述的方法,方法還包括:
7.根據(jù)權(quán)利要求1所述的方法,所述第二通信組件將所述服務(wù)請(qǐng)求報(bào)文發(fā)送至所述第二集群中的第二服務(wù)代理節(jié)點(diǎn),包括:
8.一種跨集群的報(bào)文轉(zhuǎn)發(fā)裝置,所述集群包括服務(wù)代理節(jié)點(diǎn);所述服務(wù)代理節(jié)點(diǎn)用于攔截集群內(nèi)任一節(jié)點(diǎn)發(fā)送的報(bào)文,并針對(duì)所述報(bào)文添加擴(kuò)展信息;所述集群包括用于與其他集群進(jìn)行通信的通信組件,所述裝置包括:
9.一種電子設(shè)備,包括通信接口、處理器、存儲(chǔ)器和總線,所述通信接口、所述處理器和所述存儲(chǔ)器之間通過總線相互連接;
10.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有機(jī)器可讀指令,所述機(jī)器可讀指令在被處理器調(diào)用和執(zhí)行時(shí),實(shí)現(xiàn)權(quán)利要求1-7任一項(xiàng)所述的方法。