首頁 > nginx > 如何使用nginx配置負載均衡

如何使用nginx配置負載均衡

2019年6月14日 發表評論 閱讀評論

負載均衡是擴展應用程序并提高其性能和冗余的絕佳方法。Nginx是一種流行的Web服務器軟件,可以配置為簡單但功能強大的負載均衡器,以提高服務器資源的可用性和效率。在負載平衡配置中,nginx充當在多個單獨服務器上工作的分布式Web應用程序的單個入口點。

在Web場上進行負載平衡

本文介紹如何使用nginx為云服務器配置負載均衡。作為先決條件,您需要至少安裝兩臺主機并安裝Web服務器軟件,以便了解負載均衡器的優勢。

安裝nginx

目前,最新版本的CentOS,Debian和Ubuntu都提供nginx軟件包,可以使用命令快速安裝nginx。

安裝完成后,進入nginx主配置文件夾。

根據您的操作系統不同,Web服務器配置文件將位于兩個位置之一。

Ubuntu和Debian遵循在 /etc/nginx/sites-available/, 中存儲虛擬主機文件的規則,這些規則 通過符號鏈接啟用到 /etc/nginx/sites-enabled/。您可以使用以下命令啟用任何新的虛擬主機文件。

CentOS用戶可以在/etc/nginx/conf.d/下找到其主機配置文件,加載了任何.conf類型的虛擬主機文件。

檢查您是否可以找到至少默認配置,然后重新啟動nginx。

通過在Web瀏覽器中打開負載均衡器服務器的IP地址來測試服務器是否回復HTTP請求。當您看到nginx的默認歡迎頁面時,安裝成功。

Nginx默認歡迎頁面。

如果您在加載頁面時遇到問題,請檢查防火墻是否阻止了您的連接。例如,在CentOS 7上,默認防火墻規則不允許HTTP流量,請使用以下命令啟用它。

然后嘗試重新加載瀏覽器。

將nginx配置為負載均衡器

安裝并測試nginx后,您可以開始配置它以實現負載平衡。從本質上講,您需要做的就是設置nginx,其中包含要監聽的連接類型以及重定向位置的說明。要實現此目的,請使用您喜歡的任何文本編輯器創建新的配置文件,例如使用vi

load-balancer.conf中,您需要定義以下兩個段:上游服務器,請參閱下面的示例。

然后保存文件并退出編輯器。

接下來,您需要禁用先前在安裝后測試的默認服務器配置。同樣取決于您的操作系統,這部分略有不同。

在Debian和Ubuntu系統上,您需要從啟用站點的文件夾中刪除默認符號鏈接。

CentOS的主機不使用相同的鏈接,而是簡單地將重命名default.confconf.d /目錄下的東西,不是結束的.conf,例如:

然后使用以下命令重新啟動nginx。

檢查nginx是否成功啟動。如果重新啟動失敗,請查看剛剛創建的  /etc/nginx/conf.d/load-balancer.conf,以確保沒有錯誤類型或缺少分號。

在Web瀏覽器中輸入負載均衡器的公共IP地址時,您現在應該被傳遞到其中一個后端服務器。

負載均衡方法

如果沒有定義其他方法,默認情況下使用nginx進行負載均衡會使用循環算法,如上面的第一個示例所示。使用循環方案,將根據您在load-balancer.conf  文件中設置的順序輪流選擇每個服務器。這平衡了短期操作的請求數量。

基于最少連接的負載平衡是另一種簡單的方法。顧名思義,此方法將請求定向到當時具有最少活動連接的服務器。對于請求有時可能需要更長時間才能完成的應用程序,它比循環法更有效。

要啟用最少連接平衡方法,請將參數least_conn添加到上游  部分,如下例所示。

雖然循環和最少連接平衡方案是公平的并且有其用途,但是它們不能提供會話持久性。如果您的Web應用程序要求用戶隨后被定向到與之前連接相同的后端服務器,則應使用IP哈希方法。IP哈希使用訪問者IP地址作為密鑰來確定應選擇哪個主機來為請求提供服務。這允許訪問者每次被定向到同一服務器,被授予服務器可用且訪問者的IP地址未被更改。

要使用此方法,請將ip_hash 添加到上游  段,如下面的示例所示。

在不同主機之間的可用資源不相等的服務器設置中,可能希望某些服務器優先于其他服務器。定義服務器權重允許您使用nginx進一步微調負載平衡。負載均衡器中權重最高的服務器最常選擇。

例如,在上面顯示的配置中,第一個服務器的選擇頻率是第二個服務器的兩倍,與第三個服務器相比,它再次獲得兩倍的請求。

啟用HTTPS的負載均衡

為您的網站啟用HTTPS是保護訪問者及其數據的好方法。如果您尚未在網絡主機上實施加密,我們強烈建議您查看我們的指南,了解如何在nginx上安裝Let's Encrypt

在負載均衡器中使用加密比您想象的要容易。您需要做的就是在負載均衡器配置文件中添加另一個服務器部分,該文件使用SSL偵聽端口443上的HTTPS流量,并為上游段設置proxy_pass,就像上一個示例中的HTTP一樣。

再次打開配置文件進行編輯。

然后將以下服務器段添加到文件末尾。

然后保存文件,退出編輯器并再次重新啟動nginx。

健康檢查

為了知道哪些服務器可用,nginx的反向代理實現包括被動服務器健康檢查。如果服務器無法響應請求或回復錯誤,nginx將注意服務器已失敗,并將嘗試避免一段時間轉發到該服務器的連接。

通過將參數max_fails設置為服務器行,可以在負載均衡器配置文件中定義特定時間段內連續不成功的連接嘗試次數。默認情況下,如果未指定max_fails,則將此值設置為1.(可選)將max_fails設置為0將禁用對該服務器的運行狀況檢查。

如果將max_fails設置為大于1的值,則后續失敗必須在特定時間范圍內發生,以便無法計數。此時間范圍由參數fail_timeout指定,該參數還定義服務器應被視為失敗的時間。默認情況下,fail_timeout設置為10秒。

在服務器標記失敗并且fail_timeout設置的時間已過后,nginx將開始使用客戶端請求正常探測服務器。如果探測返回成功,則服務器再次標記為實時并且正常包含在負載平衡中。

使用運行狀況檢查可以根據需要通過啟動或關閉主機來使服務器后端適應當前需求。在高流量期間啟動其他服務器可以在新資源自動供負載均衡器使用時輕松提高應用程序性能。

結論

如果您希望提高Web應用程序的性能和可用性,那么設置負載均衡器絕對值得考慮。使用nginx進行負載均衡功能強大且設置相對簡單,并且與簡單的加密解決方案(例如Let's Encrypt客戶端)一起使用,它為您的Web場提供了一個很好的前端。

雖然使用多個主機可以保護您的Web服務具有冗余,但負載均衡器本身仍然可以留下單點故障。您可以通過在多個負載平衡器之間設置浮動IP來進一步提高高可用性。

掃碼聯系我

加我微信

除非注明,本站文章均為: nginx.cn原創,轉載請注明本文地址: http://www.oeatvy.tw/4996.html

--完--

分類: nginx 標簽:
  1. 愛哭鬼
    2019年8月14日15:12 | #1

    博主你好!我的配置如下:
    events{
    }

    http{
    upstream my_server {
    server 10.190.32.33:8079;
    keepalive 2000;
    }
    server {
    listen 10008;
    server_name 10.190.32.30;
    client_max_body_size 1024M;

    location / {
    proxy_pass http://my_server/;
    }

    }
    }

    我在瀏覽器訪問10.190.32.30:10008后并沒有打開10.190.32.33:8079這個站點,而是打開了nginx的主頁,請問如何解決?謝謝!

  1. 本文目前尚無任何 trackbacks 和 pingbacks.

网球冠军