Nginx因其高性能和可擴展性而廣受歡迎。它是排名第一的開源Web 服務(wù)器。在本教程中,我們將學(xué)習(xí)如何使用Nginx作為應(yīng)用程序的負(fù)載均衡器?
要將nginx負(fù)載平衡配置為先決條件,我們需要至少有兩臺主機安裝并配置了Web服務(wù)器軟件,才能看到使用nginx進行負(fù)載平衡的優(yōu)勢。如果我們已經(jīng)設(shè)置了一個正在運行的Web主機,則通過創(chuàng)建自定義圖像復(fù)制它并將其部署到新的Web服務(wù)器上。下面是使用Nginx作為應(yīng)用程序的負(fù)載均衡器分步指南:
一、Nginx網(wǎng)絡(luò)服務(wù)器
Nginx是一種高性能的開源Web服務(wù)器。除了HTTP服務(wù)器功能外,NGINX 還可以充當(dāng)電子郵件(IMAP、POP3 和 SMTP)的代理服務(wù)器和反向代理,并為 HTTP、TCP 和 UDP 服務(wù)器負(fù)載均衡nginx。它提高了應(yīng)用程序的性能、可靠性和安全性。它以其豐富的功能集、簡單的配置和低資源消耗而廣受歡迎。
Nginx是如何工作的?Nginx通常用作nginx反向代理負(fù)載平衡器,作為在多個獨立服務(wù)器上工作的分布式Web應(yīng)用程序的單一入口點。它使用異步、事件驅(qū)動的方法來提供低內(nèi)存使用率和高并發(fā)性。
二、負(fù)載均衡器
負(fù)載平衡是在多個服務(wù)器之間分配網(wǎng)絡(luò)流量的過程。執(zhí)行此分發(fā)過程的“軟件”或“硬件”稱為負(fù)載均衡器。負(fù)載均衡器就像站在服務(wù)器前面的“交通警察”,并在所有服務(wù)器之間路由客戶端請求。它確保即使其中一臺服務(wù)器出現(xiàn)故障,我們的應(yīng)用程序仍能正常運行。
負(fù)載均衡器的主要功能如下:
1、跨多個服務(wù)器有效地分配客戶端請求或網(wǎng)絡(luò)負(fù)載;
2、通過僅向在線服務(wù)器發(fā)送請求來確保高可用性和可靠性;
3、提供根據(jù)需求添加或減少服務(wù)器的靈活性。
三、將Nginx設(shè)置為負(fù)載均衡器
在設(shè)置Nginx輪詢負(fù)載平衡之前,我們應(yīng)該在服務(wù)器上安裝Nginx。我們可以使用apt-get快速安裝它:sudo apt-get install nginx
為了設(shè)置循環(huán)負(fù)載均衡器,我們需要使用Nginx上游模塊。我們會將 nginx負(fù)載均衡器配置更新到Nginx設(shè)置中。讓我們打開我們網(wǎng)站的配置。為了這個例子,使用默認(rèn)的配置文件
sudo vi /etc/nginx/sites-available/default
我們需要將負(fù)載均衡配置添加到文件中,以使用nginx配置負(fù)載均衡器。
首先,我們需要包含用于nginx上游負(fù)載平衡的上游模塊,如下所示:
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
使用此后端上游作為服務(wù)器塊中的代理端點:
server {
location / {
proxy_pass http://backend;
}
}
重啟Nginx
sudo service nginx restart
只要所有服務(wù)器就位,我們現(xiàn)在應(yīng)該會發(fā)現(xiàn)nginx開源負(fù)載均衡器將開始將訪問者平均分配到服務(wù)器,這種平均分配稱為循環(huán)負(fù)載平衡。
四、上游指令
在我們的最后一個例子中,我們使用了一個簡單的上游模塊來進行循環(huán)負(fù)載平衡,以在服務(wù)器之間平均分配流量。然而,這可能不是處理流量的最有效方式的原因有很多。我們可以使用多種指令來更有效地引導(dǎo)網(wǎng)站訪問者。
1、重量
開始更精確地將用戶分配給服務(wù)器的一種方法是為某些機器分配特定的權(quán)重。Nginx允許我們分配一個數(shù)字,指定應(yīng)定向到每個服務(wù)器的流量比例。包含服務(wù)器權(quán)重的負(fù)載平衡設(shè)置可能如下所示:
upstream backend {
server backend1.example.com weight=1;
server backend2.example.com weight=2;
server backend3.example.com weight=4;
}
默認(rèn)權(quán)重為1。權(quán)重為2時,backend2.example將發(fā)送兩倍于backend1 的流量,而權(quán)重為4的backend3將處理兩倍于backend2和四倍于 backend的流量1.
2、散列
IP哈希允許服務(wù)器根據(jù)他們的IP地址響應(yīng)客戶端,每次訪問時將訪問者發(fā)送回同一個VPS(除非該服務(wù)器已關(guān)閉)。如果已知服務(wù)器處于非活動狀態(tài),則應(yīng)將其標(biāo)記為關(guān)閉。所有應(yīng)該路由到故障服務(wù)器的 IP都被定向到備用服務(wù)器。下面的配置提供了一個示例:
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com down;
}
3、最大失敗
根據(jù)默認(rèn)的循環(huán)設(shè)置,Nginx應(yīng)用程序負(fù)載均衡器將繼續(xù)向虛擬專用服務(wù)器發(fā)送數(shù)據(jù),即使服務(wù)器沒有響應(yīng)。Max failure可以通過使無響應(yīng)的服務(wù)器在一定時間內(nèi)無法運行來自動防止這種情況發(fā)生。
有兩個因素與最大失敗有關(guān):max_fails和fall_timeout。最大失敗次數(shù)是指在服務(wù)器被視為不活動之前應(yīng)該發(fā)生的連接到服務(wù)器的最大失敗嘗試次數(shù)。Fall_timeout指定服務(wù)器被視為不工作的時間長度。一旦時間到期,新的到達(dá)服務(wù)器的嘗試將再次啟動,默認(rèn)超時值為10秒。示例配置可能如下所示:
upstream backend {
server backend1.example.com max_fails=3 fail_timeout=15s;
server backend2.example.com weight=2;
server backend3.example.com weight=4;
}
以上是使用Nginx作為應(yīng)用程序的負(fù)載均衡器四個步驟,希望能幫助到大家!
-
nginx
+關(guān)注
關(guān)注
0文章
149瀏覽量
12170 -
負(fù)載均衡器
+關(guān)注
關(guān)注
0文章
18瀏覽量
2583
發(fā)布評論請先 登錄
相關(guān)推薦
評論