在以往我們創(chuàng)建高可用Web應(yīng)用程序時(shí),負(fù)載均衡器是必不可少的組件。我們都使用傳統(tǒng)內(nèi)部服務(wù)器的負(fù)載均衡器,其中我們的應(yīng)用程序在N個(gè)實(shí)例上運(yùn)行,負(fù)載均衡器位于這些服務(wù)器的前面,并根據(jù)某些預(yù)定義的算法和設(shè)置向后端服務(wù)器分配負(fù)載。
鎮(zhèn)寧網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),鎮(zhèn)寧網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為鎮(zhèn)寧上千多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的鎮(zhèn)寧做網(wǎng)站的公司定做!
遷移到云中,我們需要了解如何使用Azure組件實(shí)現(xiàn)相同的負(fù)載平衡。云應(yīng)用程序中的負(fù)載平衡需要更多的考慮,即在一些服務(wù)器前面有一個(gè)簡(jiǎn)單的負(fù)載平衡器,就像我們可以在PaaS上托管服務(wù)一樣,我們可以為不同的租戶(hù)在不同的實(shí)例上運(yùn)行服務(wù),也可以讓?xiě)?yīng)用程序在分布在世界各地的多個(gè)服務(wù)器上運(yùn)行。
出于這個(gè)原因,Azure中有多個(gè)可用于負(fù)載平衡的組件。這些組件中的每一個(gè)都有不同的目的,我們需要為方案選擇正確的組件才能實(shí)現(xiàn)最佳的應(yīng)用程序架構(gòu)。
Azure負(fù)載平衡解決方案
Azure中主要有3個(gè)負(fù)載平衡組件。
l Azure負(fù)載均衡器
l Azure應(yīng)用程序網(wǎng)關(guān)
l Azure流量管理器
讓我們逐一了解每個(gè)組件,并嘗試了解何時(shí)有效地使用每個(gè)組件。
Azure負(fù)載均衡器
Azure負(fù)載均衡器是一種比較經(jīng)典的負(fù)載均衡器,因?yàn)樗梢杂糜谄胶釼M的負(fù)載,就像我們使用傳統(tǒng)負(fù)載均衡器與我們的內(nèi)部部署服務(wù)器一樣?,F(xiàn)在,由于Azure負(fù)載均衡器是專(zhuān)為云應(yīng)用程序而設(shè)計(jì),因此它還可用于平衡負(fù)載與容器和PaaS應(yīng)用程序以及VM。
但是這種與傳統(tǒng)負(fù)載均衡器的相似之處在于,Azure負(fù)載均衡器的工作原理是傳輸層(OSI模型的第4層)。這意味著它將在同一個(gè)Azure數(shù)據(jù)中心分發(fā)網(wǎng)絡(luò)流量,但不能使用會(huì)話(huà)和應(yīng)用層提供的傳統(tǒng)負(fù)載平衡器的特性,因?yàn)檫@些是OSI模型的第7層構(gòu)造。
負(fù)載均衡器配置有負(fù)載平衡規(guī)則,這些規(guī)則在端口級(jí)別工作。它接受源端口和目標(biāo)端口將它們映射在一起,這樣每當(dāng)它接收到對(duì)源端口的請(qǐng)求時(shí),該請(qǐng)求就會(huì)從連接到目標(biāo)端口上的負(fù)載均衡器的一組虛擬機(jī)(或VNET中的應(yīng)用程序)轉(zhuǎn)發(fā)到虛擬機(jī)。
Azure負(fù)載均衡器可用于兩種配置模式:
l 外部 - 公共負(fù)載平衡
l 內(nèi)部 - 內(nèi)部負(fù)載平衡
外部 - 公共負(fù)載平衡
在此模式下,為負(fù)載均衡器分配一個(gè)公共IP地址,以確保負(fù)載均衡器可以接受來(lái)自Internet的請(qǐng)求??蛻?hù)端應(yīng)用程序和服務(wù)將從Internet調(diào)用負(fù)載均衡器,然后根據(jù)配置的規(guī)則,它將通過(guò)VM,容器或應(yīng)用程序分發(fā)傳入流量。
內(nèi)部 - 內(nèi)部負(fù)載平衡
內(nèi)部負(fù)載均衡器與外部負(fù)載均衡器基本相同,但它使用專(zhuān)用IP地址,因此只能從與其連接的虛擬網(wǎng)絡(luò)中的應(yīng)用程序進(jìn)行調(diào)用。
Azure負(fù)載均衡器幫助我們?cè)诨A(chǔ)架構(gòu)級(jí)別設(shè)計(jì)高可用性,但是由于有些情況需要我們的負(fù)載平衡組件提供更高級(jí)的功能和服務(wù),如連接關(guān)聯(lián)性,安全性,SSL終止等,我們無(wú)法使用Azure負(fù)載均衡器來(lái)實(shí)現(xiàn)這些高級(jí)功能我們需要一個(gè)可以處理OSI模型的第7層結(jié)構(gòu)的解決方案,即應(yīng)用程序,會(huì)話(huà)等。讓我們看看我們?nèi)绾卧谙乱还?jié)中實(shí)現(xiàn)這一點(diǎn)。
Azure應(yīng)用程序網(wǎng)關(guān)
Azure應(yīng)用程序網(wǎng)關(guān)是一個(gè)7層負(fù)載均衡器,因此它可以對(duì)訪問(wèn)應(yīng)用程序的會(huì)話(huà)進(jìn)行有效負(fù)載,使應(yīng)用程序網(wǎng)關(guān)除了提供負(fù)載均衡功能外還能提供更多的功能。如粘性會(huì)話(huà)、連接親和力等。由于與Azure負(fù)載均衡器相比,應(yīng)用程序網(wǎng)關(guān)具有更多的功能,因此可以配置更復(fù)雜的路由和負(fù)載平衡。應(yīng)用程序網(wǎng)關(guān)充當(dāng)反向代理服務(wù)。它終止客戶(hù)端連接,并將請(qǐng)求轉(zhuǎn)發(fā)到后端端點(diǎn)。。
我個(gè)人認(rèn)為,如果我們?cè)趹?yīng)該使用公共負(fù)載平衡器的應(yīng)用程序級(jí)別上運(yùn)行工作負(fù)載,那么在更多的用例中,應(yīng)用程序網(wǎng)關(guān)的使用比使用負(fù)載平衡器更有意義。
應(yīng)用程序網(wǎng)關(guān)可以被認(rèn)為是在第7層上運(yùn)行的,并提供了比負(fù)載均衡器更多的功能。應(yīng)用程序網(wǎng)關(guān)還可用于基于URL路由流量,這對(duì)于開(kāi)發(fā)多租戶(hù)應(yīng)用程序非常有用,其中每個(gè)租戶(hù)都有獨(dú)立的VM運(yùn)行實(shí)例和URL中的租戶(hù)標(biāo)識(shí)符。
Azure流量管理器
到目前為止,我們已經(jīng)看到了滿(mǎn)足數(shù)據(jù)中心內(nèi)負(fù)載平衡的負(fù)載平衡解決方案。負(fù)載平衡器和應(yīng)用程序網(wǎng)關(guān)是用于在數(shù)據(jù)中心內(nèi)實(shí)現(xiàn)高可用性的組件。但是通過(guò)云,我們還可以以地理上分布的方式構(gòu)建我們的應(yīng)用程序。那么我們?nèi)绾纹胶獾乩砦恢弥g的負(fù)載。
Azure流量管理器僅用于此目的。Azure流量管理器使用DNS將請(qǐng)求重定向到適當(dāng)?shù)牡乩砦恢枚它c(diǎn)。流量管理器不會(huì)看到客戶(hù)端和服務(wù)之間傳遞的流量。它只是根據(jù)最合適的端點(diǎn)重定向請(qǐng)求。地理位置端點(diǎn)是面向互聯(lián)網(wǎng)的可訪問(wèn)公共URL。
Azure流量管理器在DNS級(jí)別工作,即它使用DNS級(jí)別配置的規(guī)則在多個(gè)區(qū)域和數(shù)據(jù)中心分配負(fù)載??蛻?hù)端發(fā)出DNS請(qǐng)求,并根據(jù)DNS的位置,Azure Traffic Manager將找到最近的區(qū)域,并通過(guò)DNS響應(yīng)將其發(fā)送回客戶(hù)端。