< 返回新聞公共列表

Nginx如何配置負載均衡?

發(fā)布時間:2023-03-21 14:50:49

Nginx是最流行的Web服務器之一,具有非常強大的負載均衡器選項,旨在提高服務器資源的可用性和效率。在本文中,小編將給大家解釋Nginx如何配置負載均衡?


一、NGINX安裝

作為第一步,部署這3個服務器以針對應用程序進行平衡。在所有這 3臺服務器上安裝NGINX。

在所有這3臺服務器上安裝NGINX。

# apt-get 安裝 nginx

在這個階段我們不會部署額外的應用程序;我們只會編輯主要的 index.nginx-debian.html文件。在此文件中,使用指定名稱SERVER 1、SERVER 2、SERVER 3保存每個服務器。

# echo '你好!我的名字服務器 1' > /var/www/html/index.nginx-debian.html

完畢。安裝了NGINX并派生了服務器名稱?,F(xiàn)在,當在瀏覽器中單擊此鏈接時,我們將能夠看到已為每個服務器備份NGINX Web服務器的消息。

讓我們?yōu)槊總€服務器建立一個IP:10.10.10.1、10.10.10.2和 10.10.10.3。平衡服務器IP將為10.10.10.99

當嘗試對第一臺服務器進行查詢時,我們將得到以下響應:

#curl http :// 10 . 10 。10 。1 /

我的名字服務器 1

對其余兩臺服務器重復安裝和文本寫入過程。


二、NGINX配置負載均衡

使用NGINX默認設置安裝所有三臺服務器后,我們將部署平衡器服務器。我們還將繼續(xù)安裝 NGINX 服務器:

# apt-get 安裝 nginx

現(xiàn)在讓我們?yōu)樾碌呐渲梅掌髋渲梅掌髌胶?。為了顯示3個以前的服務器進行平衡,讓我們將以下值部署到NGINX配置中:


Nginx如何配置負載均衡?.png


在此配置中,我們可以看到這三臺先前部署的服務器處于“上游”服務器組的配置中。平衡機制的類型也在“上游”指令中指明。如果不指定,則默認采用`round-robin` 。要指定這2個其他機制,請指定`least_conn`或`ip_hash` 。下面的`balanced`值將被指定為用于平衡的組的標題。任何隨機名稱都足以在以后的配置中用作指向該特定服務器組的鏈接。

然后,如果我們過渡到,我們將看到 `server` 配置組。在此階段,我們通過端口80的HTTP協(xié)議進行操作。為此,必須指定一個將監(jiān)聽`listen 80`網(wǎng)絡服務器的端口。然后,必須根據(jù)目錄編寫位置算法。如果指定了location / ,則所有查詢都將由該塊提供服務。然后,我們可以看到里面的proxy_pass負責將查詢代理到第三方服務器。在此階段,我們指定一個“平衡”服務器組以及傳輸控制協(xié)議,并將http保留在端口80上。為此,我們將http://放在開頭。

至此,負載均衡安裝以最簡單的配置完成。讓我們繼續(xù)進行測試。

重新啟動我們的Web服務器以應用新配置:

#服務nginx重啟

為了測試,我們可以向平衡服務器啟動CURL查詢:


Nginx如何配置負載均衡?..png


因此,我們可以觀察到10個查詢正在由不同的服務器處理。每個新請求都已發(fā)送到新服務器。

例如,如果其中一臺服務器出現(xiàn)故障怎么辦。例如,讓我們轉到服務器2,然后將其關閉:#服務nginx停止

重新查詢時,我們會看到第二臺服務器被自動忽略了。因此,項目的容錯能力增加了。


Nginx如何配置負載均衡?...png


顯然,響應以循環(huán)模式出現(xiàn),該機制稱為“round-robin”。對于不同的平衡機制,一個新的指令將被添加到“upstream”配置組。新指令可以是`ip_hash`或`least_conn`。如果我們設置`ip_hash`方法,這就是 NGINX配置文件的樣子。


Nginx如何配置負載均衡?....png


三、額外的負載均衡配置

我們只會考慮一些通常在負載平衡設置中選擇使用的額外配置。這些是可選參數(shù),例如:`weight`、`max_fails`、`fail_timeout`。

上述所有參數(shù)都要在服務器的上游目錄組中指定。

`weight` 參數(shù)指定服務器之間的所有查詢平衡。讓我們考慮具有以下配置的服務器的情況:


Nginx如何配置負載均衡?.....png


每10個查詢將平衡如下:3個查詢將轉到10.10.10.1服務器,接下來的5個查詢將轉到10.10.10.2服務器,1個查詢將轉到10.10.10.3和 10.10.10.4。

`max_fails`和`fail_timeout`參數(shù)是相互關聯(lián)的。它們確定與斷開連接的服務器重新建立連接的嘗試次數(shù)。例如,如果`max_fails`參數(shù)設置為3,并且`fail_timeout` = 60 ,那么如果在60秒內服務器上有3次不成功的處理嘗試,那么在接下來的60秒內將不會嘗試發(fā)送查詢到這個服務器。`fail_timeout`設置為10 秒,`max_fails`默認設置為1。

以下是使用這些參數(shù)的配置示例:


Nginx如何配置負載均衡?......png


四、正確的負載平衡日志記錄配置

如果我們有一個不方便的應用程序在多個服務器上運行并配置為平衡。有時需要跟蹤查詢直到接收服務器。為此,需要準確記錄平衡。

將NGINX主配置文件/etc/nginx/nginx.conf添加到 `http` 組,并使用新的日志格式:


Nginx如何配置負載均衡?.......png


然后打開文件/etc/nginx/sites-available/default并添加以下日志記錄值:


Nginx如何配置負載均衡?........png


然后,保存文件,檢查配置并重新啟動Web服務器。

# nginx -t && 服務nginx重啟

如果我們對負載平衡進行4次查詢,在負載平衡/var/log/nginx/default-access.log日志中,我們將找到以下日志片段:


Nginx如何配置負載均衡?.........png


五、UTP協(xié)議下DNS服務器的均衡

如前所述,nginx還可以在傳輸級別執(zhí)行負載平衡。在此示例中,我們將考慮DNS服務器的平衡。

我們在這里指定了幾個DNS后端服務器,然后將nginx配置為通過端口53監(jiān)聽UDP數(shù)據(jù)包。`proxy_pass` 指令將后端發(fā)送到服務器。Nginx 默認期望后端發(fā)送一個或多個響應。由于對一個請求會有一個響應,因此我們配置了proxy_responses 1。

TCP的負載均衡比較相似:


Nginx如何配置負載均衡?..........png


以上是Nginx配置負載均衡相關步驟,希望能幫助到大家。


/template/Home/Zkeys724/PC/Static