Nginx是最流行的Web服務(wù)器之一,具有非常強(qiáng)大的負(fù)載均衡器選項(xiàng),旨在提高服務(wù)器資源的可用性和效率。在本文中,小編將給大家解釋Nginx如何配置負(fù)載均衡?
一、NGINX安裝
作為第一步,部署這3個(gè)服務(wù)器以針對(duì)應(yīng)用程序進(jìn)行平衡。在所有這 3臺(tái)服務(wù)器上安裝NGINX。
在所有這3臺(tái)服務(wù)器上安裝NGINX。
# apt-get 安裝 nginx
在這個(gè)階段我們不會(huì)部署額外的應(yīng)用程序;我們只會(huì)編輯主要的 index.nginx-debian.html文件。在此文件中,使用指定名稱(chēng)SERVER 1、SERVER 2、SERVER 3保存每個(gè)服務(wù)器。
# echo '你好!我的名字服務(wù)器 1' > /var/www/html/index.nginx-debian.html
完畢。安裝了NGINX并派生了服務(wù)器名稱(chēng)?,F(xiàn)在,當(dāng)在瀏覽器中單擊此鏈接時(shí),我們將能夠看到已為每個(gè)服務(wù)器備份NGINX Web服務(wù)器的消息。
讓我們?yōu)槊總€(gè)服務(wù)器建立一個(gè)IP:10.10.10.1、10.10.10.2和 10.10.10.3。平衡服務(wù)器IP將為10.10.10.99
當(dāng)嘗試對(duì)第一臺(tái)服務(wù)器進(jìn)行查詢(xún)時(shí),我們將得到以下響應(yīng):
#curl http :// 10 . 10 。10 。1 /
我的名字服務(wù)器 1
對(duì)其余兩臺(tái)服務(wù)器重復(fù)安裝和文本寫(xiě)入過(guò)程。
二、NGINX配置負(fù)載均衡
使用NGINX默認(rèn)設(shè)置安裝所有三臺(tái)服務(wù)器后,我們將部署平衡器服務(wù)器。我們還將繼續(xù)安裝 NGINX 服務(wù)器:
# apt-get 安裝 nginx
現(xiàn)在讓我們?yōu)樾碌呐渲梅?wù)器配置服務(wù)器平衡。為了顯示3個(gè)以前的服務(wù)器進(jìn)行平衡,讓我們將以下值部署到NGINX配置中:
在此配置中,我們可以看到這三臺(tái)先前部署的服務(wù)器處于“上游”服務(wù)器組的配置中。平衡機(jī)制的類(lèi)型也在“上游”指令中指明。如果不指定,則默認(rèn)采用`round-robin` 。要指定這2個(gè)其他機(jī)制,請(qǐng)指定`least_conn`或`ip_hash` 。下面的`balanced`值將被指定為用于平衡的組的標(biāo)題。任何隨機(jī)名稱(chēng)都足以在以后的配置中用作指向該特定服務(wù)器組的鏈接。
然后,如果我們過(guò)渡到,我們將看到 `server` 配置組。在此階段,我們通過(guò)端口80的HTTP協(xié)議進(jìn)行操作。為此,必須指定一個(gè)將監(jiān)聽(tīng)`listen 80`網(wǎng)絡(luò)服務(wù)器的端口。然后,必須根據(jù)目錄編寫(xiě)位置算法。如果指定了location / ,則所有查詢(xún)都將由該塊提供服務(wù)。然后,我們可以看到里面的proxy_pass負(fù)責(zé)將查詢(xún)代理到第三方服務(wù)器。在此階段,我們指定一個(gè)“平衡”服務(wù)器組以及傳輸控制協(xié)議,并將http保留在端口80上。為此,我們將http://放在開(kāi)頭。
至此,負(fù)載均衡安裝以最簡(jiǎn)單的配置完成。讓我們繼續(xù)進(jìn)行測(cè)試。
重新啟動(dòng)我們的Web服務(wù)器以應(yīng)用新配置:
#服務(wù)nginx重啟
為了測(cè)試,我們可以向平衡服務(wù)器啟動(dòng)CURL查詢(xún):
因此,我們可以觀察到10個(gè)查詢(xún)正在由不同的服務(wù)器處理。每個(gè)新請(qǐng)求都已發(fā)送到新服務(wù)器。
例如,如果其中一臺(tái)服務(wù)器出現(xiàn)故障怎么辦。例如,讓我們轉(zhuǎn)到服務(wù)器2,然后將其關(guān)閉:#服務(wù)nginx停止
重新查詢(xún)時(shí),我們會(huì)看到第二臺(tái)服務(wù)器被自動(dòng)忽略了。因此,項(xiàng)目的容錯(cuò)能力增加了。
顯然,響應(yīng)以循環(huán)模式出現(xiàn),該機(jī)制稱(chēng)為“round-robin”。對(duì)于不同的平衡機(jī)制,一個(gè)新的指令將被添加到“upstream”配置組。新指令可以是`ip_hash`或`least_conn`。如果我們?cè)O(shè)置`ip_hash`方法,這就是 NGINX配置文件的樣子。
三、額外的負(fù)載均衡配置
我們只會(huì)考慮一些通常在負(fù)載平衡設(shè)置中選擇使用的額外配置。這些是可選參數(shù),例如:`weight`、`max_fails`、`fail_timeout`。
上述所有參數(shù)都要在服務(wù)器的上游目錄組中指定。
`weight` 參數(shù)指定服務(wù)器之間的所有查詢(xún)平衡。讓我們考慮具有以下配置的服務(wù)器的情況:
每10個(gè)查詢(xún)將平衡如下:3個(gè)查詢(xún)將轉(zhuǎn)到10.10.10.1服務(wù)器,接下來(lái)的5個(gè)查詢(xún)將轉(zhuǎn)到10.10.10.2服務(wù)器,1個(gè)查詢(xún)將轉(zhuǎn)到10.10.10.3和 10.10.10.4。
`max_fails`和`fail_timeout`參數(shù)是相互關(guān)聯(lián)的。它們確定與斷開(kāi)連接的服務(wù)器重新建立連接的嘗試次數(shù)。例如,如果`max_fails`參數(shù)設(shè)置為3,并且`fail_timeout` = 60 ,那么如果在60秒內(nèi)服務(wù)器上有3次不成功的處理嘗試,那么在接下來(lái)的60秒內(nèi)將不會(huì)嘗試發(fā)送查詢(xún)到這個(gè)服務(wù)器。`fail_timeout`設(shè)置為10 秒,`max_fails`默認(rèn)設(shè)置為1。
以下是使用這些參數(shù)的配置示例:
四、正確的負(fù)載平衡日志記錄配置
如果我們有一個(gè)不方便的應(yīng)用程序在多個(gè)服務(wù)器上運(yùn)行并配置為平衡。有時(shí)需要跟蹤查詢(xún)直到接收服務(wù)器。為此,需要準(zhǔn)確記錄平衡。
將NGINX主配置文件/etc/nginx/nginx.conf添加到 `http` 組,并使用新的日志格式:
然后打開(kāi)文件/etc/nginx/sites-available/default并添加以下日志記錄值:
然后,保存文件,檢查配置并重新啟動(dòng)Web服務(wù)器。
# nginx -t && 服務(wù)nginx重啟
如果我們對(duì)負(fù)載平衡進(jìn)行4次查詢(xún),在負(fù)載平衡/var/log/nginx/default-access.log日志中,我們將找到以下日志片段:
五、UTP協(xié)議下DNS服務(wù)器的均衡
如前所述,nginx還可以在傳輸級(jí)別執(zhí)行負(fù)載平衡。在此示例中,我們將考慮DNS服務(wù)器的平衡。
我們?cè)谶@里指定了幾個(gè)DNS后端服務(wù)器,然后將nginx配置為通過(guò)端口53監(jiān)聽(tīng)UDP數(shù)據(jù)包。`proxy_pass` 指令將后端發(fā)送到服務(wù)器。Nginx 默認(rèn)期望后端發(fā)送一個(gè)或多個(gè)響應(yīng)。由于對(duì)一個(gè)請(qǐng)求會(huì)有一個(gè)響應(yīng),因此我們配置了proxy_responses 1。
TCP的負(fù)載均衡比較相似:
以上是Nginx配置負(fù)載均衡相關(guān)步驟,希望能幫助到大家。
Copyright ? 2013-2020. All Rights Reserved. 恒訊科技 深圳市恒訊科技有限公司 粵ICP備20052954號(hào) IDC證:B1-20230800.移動(dòng)站