nginx是一款輕量級的web伺服器/反向**伺服器以及電子郵件**伺服器,並在bsd協議下發行,可以在unit、gnu/linux、bsd、macos x、windows等作業系統中執行。其特點是占有記憶體少,高效能,併發能力強(10k併發),並且還能夠提供強大的反向**功能,它的併發能力在同型別的網路伺服器中表現很好。
基於反向**的功能,nginx作為負載均衡主要有以下幾點理由:
正向**
正向**類似乙個跳板機,**訪問外部資源。(客戶端->正向**伺服器->網際網路->正向**伺服器->客戶端)
反向**
實際執行方式是指**伺服器來接受internet網際網路上的連線請求,然後將請求**給內部網路上的伺服器(也就是說反向**伺服器與內網的伺服器在同乙個內網中,它是客戶端訪問內網的入口),並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時**伺服器對外就表現為乙個伺服器。(客戶端->反向**伺服器->內網伺服器->反向**伺服器->客戶端)
反向**的作用:
負載均衡,通過反向**伺服器來優化**的負載。
輪詢輪詢即round robin,這是nginx預設的配置策略。根據nginx配置檔案中的順序,依次把客戶端的web請求分發到不同的後端伺服器上。
它的配置檔案如下:
注意事項
最少連線least_conn
web請求會被**到連線數最少的伺服器上。它適合請求處理時間長短不一造成伺服器過載的情況。配置時需要在upstream中新增least_conn;
即開啟此策略。
ip位址雜湊
上邊的兩種負載均衡方案中,同一客戶端連線的web請求可能會被分發到不同的後端伺服器進行處理,因此會涉及到會話session,因為不同伺服器的會話session是不一樣的,所以要想識別當前請求是否與上次會話為同一使用者,那麼需要將session會話儲存在redis、memcached、mysql等快取伺服器上去。而另外一種解決session一致的方法就是使用ip位址雜湊的分發方案,使同一使用者的請求一直被分發到同一伺服器。
配置檔案中,在upstream中新增ip_hash的配置引數即開啟了此策略。
注意事項
基於權重的分發
對不同的伺服器設定不同的權重,權重越高接收到的請求數量越多。配置檔案中,在upstream的每個server後邊新增weight=權重值
即可。
注意事項
關於nginx具體的配置檔案的引數說明,請看下一節分布式系統系列--(三)nginx配置檔案的相關引數說明
分布式系統設計系列 概要
在現在的 大資料 雲平台 這些前沿技術的背景下,衍生了很多平台型技術點,nosql hadoop storm等層出不窮。這些華麗的技術後面其實處處都離不開 分布式 這個雖然提出了很久,但是大資料 雲計算帶火了的技術。以致於開個玩笑說,如果不懂一些 分布式 下的技術和原理的,會有點不好意思說自己是後端...
分布式限流面試專題系列之Nginx系列
nginx 是乙個 web 伺服器和反向 伺服器,用於 http https smtp pop3和 imap 協議 nginx 伺服器的特性包括 反向 l7 負載均衡器 嵌入式 perl 直譯器 動態二進位制公升級 可用於重新編寫 url,具有非常好的 pcre 支援 nginx 使用反應器模式。主...
分布式系統
分布式系統和計算機網路系統的共同點是 多數分布式系統是建立在計算機網路之上的,所以分布式系統與計算機網路在物理結構上是基本相同的。他們的區別在於 分布式作業系統的設計思想和網路作業系統是不同的,這決定了他們在結構 工作方式和功能上也不同。網路作業系統要求網路使用者在使用網路資源時首先必須了解網路資源...