在傳統(tǒng)的數(shù)據(jù)中心內(nèi),企業(yè)需要使用四層或七層的負(fù)載均衡器來對(duì)其內(nèi)部運(yùn)行的LOB場(chǎng)景的應(yīng)用程序進(jìn)負(fù)載均衡,以確保其業(yè)務(wù)系統(tǒng)的連續(xù)性和可用性。那么當(dāng)企業(yè)遷移到Azure云以后是否可以像其在內(nèi)部一樣使用四層或七層的負(fù)載均衡器來對(duì)業(yè)務(wù)的流量進(jìn)行負(fù)載呢?答案是可以的。當(dāng)我們本地的應(yīng)用系統(tǒng)遷移到Azure以后可以使用Azure LoadBalancer或Application Gateway來對(duì)關(guān)鍵性的業(yè)務(wù)系統(tǒng)進(jìn)行負(fù)載均衡,其中Azure LoadBalancer可以實(shí)現(xiàn)四層的負(fù)載均衡,Application Gateway可以實(shí)現(xiàn)7層的負(fù)載均衡。那么今天我們主要來聊聊Azure LoadBalancer。在后續(xù)的文章中會(huì)和大家聊Application Gateway。
Azure負(fù)載均衡器可提高應(yīng)用程序的高可用性和網(wǎng)絡(luò)性能。Azure負(fù)載均衡器是基于TCP/UDP的四層負(fù)載均衡器,,可在負(fù)載均衡集中定義的運(yùn)行狀況良好的服務(wù)實(shí)例之間分配傳入流量。Azure負(fù)載均衡器支持兩種不同的類型,分別為基本和標(biāo)準(zhǔn)。本文主要介紹基本負(fù)載均衡器。如果應(yīng)用程序需要使用7層負(fù)載均衡,那就需要使用Azure應(yīng)用程序網(wǎng)關(guān)。
Azure負(fù)載均衡器主要適用于以下場(chǎng)景:
1、 對(duì)傳入到虛擬機(jī)的Internet流量進(jìn)行負(fù)載均衡(公共負(fù)載均衡器)。
2、 對(duì)虛擬網(wǎng)絡(luò)中虛擬機(jī)之間的流量、云服務(wù)中虛擬機(jī)之間的流量或本地計(jì)算機(jī)和跨界虛擬網(wǎng)絡(luò)中虛擬機(jī)之間的流量進(jìn)行負(fù)載均衡(內(nèi)部負(fù)載均衡器)。
3、 將外部流量轉(zhuǎn)發(fā)到虛擬機(jī)(NAT)。
4、 使用公共負(fù)載均衡器為虛擬網(wǎng)絡(luò)中的VM提供出站連接。
根據(jù)之前所說我們今天主要介紹基本負(fù)載均衡器,那么基本負(fù)載均衡器主要支持那些功能呢?下面我們就一起來看一下基本負(fù)載均衡器的主要功能:
1. 負(fù)載均衡:負(fù)載均衡這個(gè)功能可以說是最核心的功能了,我們可以使用Azure負(fù)載平衡器創(chuàng)建負(fù)載平衡規(guī)則,從而將到達(dá)負(fù)載均衡器前端的流量分發(fā)到后端池實(shí)例。默認(rèn)情況下,Load Balancer使用由源IP地址,源端口,目標(biāo)IP地址,目標(biāo)端口和IP協(xié)議編號(hào)組成的5元組哈希,以將流映射到可用服務(wù)器。您可以選擇通過選擇給定規(guī)則的2或3元組哈希來創(chuàng)建與特定源IP地址的親緣關(guān)系。
2. 端口轉(zhuǎn)發(fā):我們可以使用負(fù)載均衡器創(chuàng)建入站的NAT規(guī)則,從而將來自特定前端IP地址的特定端口的流量轉(zhuǎn)發(fā)到特定后端實(shí)例的特定端口。這個(gè)功能的一個(gè)常見使用場(chǎng)景是使用負(fù)載均衡器的NAT規(guī)則來建立到Azure虛擬網(wǎng)絡(luò)內(nèi)部的各個(gè)VM實(shí)例的遠(yuǎn)程桌面協(xié)議RDP/SSH會(huì)話。
3. 自動(dòng)重新配置:當(dāng)我們對(duì)實(shí)例進(jìn)行橫向或縱向擴(kuò)展時(shí),負(fù)載均衡器會(huì)立即重新配置。也就是說當(dāng)我們?cè)诤蠖顺刂刑砑踊騽h除VM,負(fù)載均衡器會(huì)自動(dòng)重新配置。而不會(huì)影響其他負(fù)載均衡器資源。
4. 健康探測(cè)器:負(fù)載均衡器根據(jù)健康探測(cè)器來判斷后端池中VM的運(yùn)行狀況。當(dāng)VM無法響應(yīng)健康探測(cè)器時(shí),負(fù)載均衡器會(huì)將無響應(yīng)的VM標(biāo)記為不健康的狀態(tài)并停止向其發(fā)送流量。
負(fù)載均衡器支持三種探測(cè)模式
1) HTTP自定義探測(cè):可以使用HTTP自定義探測(cè)來確定后端實(shí)例的運(yùn)行狀況。負(fù)載平衡器定期探測(cè)您的端點(diǎn)(默認(rèn)情況下每15秒)。如果在超時(shí)期限內(nèi)(默認(rèn)為31秒)響應(yīng)HTTP 200,則認(rèn)為該實(shí)例是健康的。HTTP 200以外的任何狀態(tài)都會(huì)導(dǎo)致此探測(cè)失敗。此探針還可用于實(shí)現(xiàn)您自己的邏輯,以從負(fù)載均衡器的輪換中刪除實(shí)例。例如,如果實(shí)例的CPU大于90%,則可以將實(shí)例配置為返回非200狀態(tài)。
2) TCP自定義探測(cè):可以使用TCP自定義探測(cè)來探測(cè)是否在特定端口上成功建立TCP會(huì)話,此種探測(cè)只要VM上的指定偵聽器存在就會(huì)探測(cè)成功。
3) 來賓代理探測(cè):除了上述的兩種探測(cè)方式以外負(fù)載均衡器還可以利用VM內(nèi)的來賓代理。僅當(dāng)實(shí)例處于就緒狀態(tài)時(shí),guest虛擬機(jī)代理才會(huì)偵聽并響應(yīng)HTTP 200 OK響應(yīng)。如果代理無法使用HTTP 200 OK響應(yīng),則負(fù)載均衡器會(huì)將實(shí)例標(biāo)記為無響應(yīng),并停止向該實(shí)例發(fā)送流量。
除此以外,Azure負(fù)載均衡器還分為內(nèi)部負(fù)載均衡器和公共負(fù)載均衡器,其主要區(qū)別如下:
公共負(fù)載均衡器:公共負(fù)載均衡器將傳入流量的公共IP和端口號(hào)映射到后端VM的專用IP和端口號(hào)來響應(yīng)來自Internet的流量。通過應(yīng)用負(fù)載平衡規(guī)則我們可以跨多個(gè)VM或服務(wù)分發(fā)特定類型的流量。默認(rèn)情況下,Azure負(fù)載均衡器在多個(gè)VM實(shí)例之間平均分配網(wǎng)絡(luò)流量。您還可以配置會(huì)話關(guān)聯(lián).
內(nèi)部負(fù)載均衡器:內(nèi)部負(fù)載平衡器僅將流量定向到虛擬網(wǎng)絡(luò)內(nèi)的資源或使用×××訪問Azure基礎(chǔ)結(jié)構(gòu)的資源。在這方面,內(nèi)部負(fù)載平衡器不同于公共負(fù)載平衡器。Azure基礎(chǔ)結(jié)構(gòu)限制對(duì)虛擬網(wǎng)絡(luò)的負(fù)載平衡前端IP地址的訪問。前端IP地址和虛擬網(wǎng)絡(luò)永遠(yuǎn)不會(huì)直接暴露給Internet端點(diǎn)。內(nèi)部業(yè)務(wù)線應(yīng)用程序在Azure中運(yùn)行,可從Azure內(nèi)部或本地資源進(jìn)行訪問。
內(nèi)部負(fù)載平衡器支持如下類型的負(fù)載平衡:
1、 在虛擬網(wǎng)絡(luò)中:從虛擬網(wǎng)絡(luò)中的VM到駐留在同一虛擬網(wǎng)絡(luò)中的一組VM之間的負(fù)載平衡。
2、 對(duì)于跨界虛擬網(wǎng)絡(luò):從本地計(jì)算機(jī)到駐留在同一虛擬網(wǎng)絡(luò)中的一組VM之間的負(fù)載平衡。
3、 對(duì)于多層應(yīng)用程序:面向Internet 的多層應(yīng)用程序的負(fù)載平衡,其中后端層不是面向Internet的。后端層需要來自面向Internet的層的流量負(fù)載平衡。
4、 對(duì)于業(yè)務(wù)線應(yīng)用程序:在Azure中托管的業(yè)務(wù)線應(yīng)用程序的負(fù)載平衡,無需額外的負(fù)載平衡器硬件或軟件。