跨多個應用程式例項的負載均衡是一種常用的技術,用於優化資源利用率、最大化吞吐量、減少延遲和容錯配置。nginx
可以作為一種非常有效的http負載均衡器在不同的部署場景中使用。
要使用nginx
平衡一組伺服器的http請求,首先需要使用upstream
指令來定義這個組。這個指令放在http
上下文中。組中的伺服器使用server
指令配置(與http
上下文中的server
不同,這是乙個簡單指令)。我們在/etc/nginx/conf.d
目錄下,建立乙個test.conf
檔案,具體配置如下:
server
}upstream backend
server
}server
}
上面配置中,定義了乙個名為backend
的伺服器組,當有請求進來時,將會傳遞到伺服器組。這個伺服器組由兩個伺服器組成,因為沒有指定負載均衡演算法,所以將採用輪詢演算法。所以,http請求將會在這兩條機器交替執行。又因為這兩台伺服器分別**著5000與5001埠的服務,所以請求最終會在5000和5001埠的服務交替執行!
nginx支援4中負載均衡演算法,如下:
upstream backend
為伺服器設定權重,如下:
upstream backend
如此,如果有4次http請求,將會有3次localhost:8080
處理,1次localhost:8081
處理
upstream backend
為伺服器設定權重,如下:
upstream backend
upstream backend
upstream backend
hash
指令中的可選引數consistent
啟用ketama
一致性雜湊負載均衡。根據使用者定義的雜湊鍵值,請求均勻的分布在所有上游伺服器上。如果從上游組新增或從上游組中刪除乙個上游伺服器,則只會重新對映幾個鍵,這在負載均衡中快取伺服器或其他積累狀態的應用程式中最小化了快取丟失。
}在這個例子當中,server
指令中的resolve
引數告訴nginx
定期將backend1.example.com
和backend2.example.com
網域名稱重新解析為ip位址。
resolver
指定定義了nginx
傳送請求的dns伺服器的ip位址(這裡是10.0.0.1)。預設情況下,nginx
會按照生存時間(ttl)在記錄中指定的頻率重新解析dns記錄,但是你可以使用有效引數覆蓋ttl值;在本例中是300秒,即5分鐘。可選引數ipv6=off
表示僅ipv4位址用於負載均衡,儘管預設情況下支援同時解析ipv4和ipv6位址。
如果網域名稱解析為多個ip位址,則這些位址將儲存到上游配置並進行負載均衡。在我們的示例當中,伺服器使用least_conn
的負載均衡演算法進行負載均衡。如果伺服器的ip位址發生了改變,nginx
將立即開始在新的位址集之間進行負載均衡。
upstream backend
upstream backend
這個時間值設定了伺服器恢復權重的時間。
upstream backend
值得注意的是,如果伺服器組中只有乙個伺服器,那麼server
指令中的max_fails
、fail_timeout
和slow_start
引數將被忽略,伺服器永遠不會被認為不可用! 安裝Nginx(負載均衡器)
一 安裝nginx 1.安裝 nginx發音為 engine x 是由俄羅斯人igor sysoev建立的專案,基於bsd許可。據說他當初是f5的成員之一,英文主頁 http nginx.net。俄羅斯的一些大 已經使用它超過兩年多了,一直表現不凡。nginx 一 安裝nginx 1.安裝 ngin...
安裝Nginx(負載均衡器)
一 安裝nginx 1.安裝 nginx發音為 engine x 是由俄羅斯人igor sysoev建立的專案,基於bsd許可。據說他當初是f5的成員之一,英文主頁 http nginx.net root localhost configure prefix usr local server ngi...
Nginx 集群負載均衡器
實驗環境 1.file storage 伺服器安裝 yum y install nfs utils2.配置nfs並建立共享目錄 vim etc exports 3.開啟自啟動 systemctl enable rpcbind systemctl enable nfs server systemctl...