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文件。在此文件中,,使用指定名稱SERVER 1,、SERVER 2、SERVER 3保存每個(gè)服務(wù)器,。
# echo '你好,!我的名字服務(wù)器 1' > /var/www/html/index.nginx-debian.html
完畢。安裝了NGINX并派生了服務(wù)器名稱?,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)行查詢時(shí),,我們將得到以下響應(yīng):
#curl http :// 10 . 10 ,。10 。1 /
我的名字服務(wù)器 1
對(duì)其余兩臺(tái)服務(wù)器重復(fù)安裝和文本寫入過(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ī)制的類型也在“上游”指令中指明,。如果不指定,,則默認(rèn)采用`round-robin` ,。要指定這2個(gè)其他機(jī)制,請(qǐng)指定`least_conn`或`ip_hash` ,。下面的`balanced`值將被指定為用于平衡的組的標(biāo)題。任何隨機(jī)名稱都足以在以后的配置中用作指向該特定服務(wù)器組的鏈接,。
然后,,如果我們過(guò)渡到,我們將看到 `server` 配置組,。在此階段,,我們通過(guò)端口80的HTTP協(xié)議進(jìn)行操作。為此,,必須指定一個(gè)將監(jiān)聽(tīng)`listen 80`網(wǎng)絡(luò)服務(wù)器的端口,。然后,必須根據(jù)目錄編寫位置算法,。如果指定了location / ,,則所有查詢都將由該塊提供服務(wù)。然后,,我們可以看到里面的proxy_pass負(fù)責(zé)將查詢代理到第三方服務(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查詢:
因此,,我們可以觀察到10個(gè)查詢正在由不同的服務(wù)器處理,。每個(gè)新請(qǐng)求都已發(fā)送到新服務(wù)器。
例如,,如果其中一臺(tái)服務(wù)器出現(xiàn)故障怎么辦,。例如,讓我們轉(zhuǎn)到服務(wù)器2,,然后將其關(guān)閉:#服務(wù)nginx停止
重新查詢時(shí),,我們會(huì)看到第二臺(tái)服務(wù)器被自動(dòng)忽略了。因此,,項(xiàng)目的容錯(cuò)能力增加了,。
顯然,響應(yīng)以循環(huán)模式出現(xiàn),,該機(jī)制稱為“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ù)器之間的所有查詢平衡,。讓我們考慮具有以下配置的服務(wù)器的情況:
每10個(gè)查詢將平衡如下:3個(gè)查詢將轉(zhuǎn)到10.10.10.1服務(wù)器,接下來(lái)的5個(gè)查詢將轉(zhuǎn)到10.10.10.2服務(wù)器,,1個(gè)查詢將轉(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ā)送查詢到這個(gè)服務(wù)器。`fail_timeout`設(shè)置為10 秒,,`max_fails`默認(rèn)設(shè)置為1,。
以下是使用這些參數(shù)的配置示例:
四,、正確的負(fù)載平衡日志記錄配置
如果我們有一個(gè)不方便的應(yīng)用程序在多個(gè)服務(wù)器上運(yùn)行并配置為平衡,。有時(shí)需要跟蹤查詢直到接收服務(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次查詢,,在負(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)站