1. 程式人生 > >高併發負載均衡(二)——Nginx 和LVS

高併發負載均衡(二)——Nginx 和LVS



在上一篇部落格中介紹到實現負載均衡主要可以通過軟、硬體兩個方面進行,例如硬體上購買RadWare等硬體裝置,或者通過軟體策略實現負載均衡。軟體策略上使用廣泛有Nginx 和LVS

在介紹兩款工具之前,先聊聊負載均衡的應用場景

普通web應用部署到多臺應用伺服器上,客戶端通過訪問應用伺服器傳送請求,最簡單的就是n對1模式,n個客戶端訪問同一個應用伺服器,這種情況當併發量大了,就無法應對,而且,如果只有一臺伺服器時,這個伺服器掛了,那麼對於網站來說是個災難.;解決方案便可以橫向擴充n臺應用伺服器,並且客戶端訪問與應用伺服器中間加上負載均衡配置,負載均衡能實現的效果主要有三個:

1、轉發功能:按照一定的演算法【權重、輪詢】,將客戶端請求轉發到不同應用伺服器上,減輕單個伺服器壓力,提高系統併發量。

2、故障移除:通過心跳檢測的方式,判斷應用伺服器當前是否可以正常工作,如果伺服器期宕掉,自動將請求傳送到其他應用伺服器。

3、恢復新增:如檢測到發生故障的應用伺服器恢復工作,自動將其新增到處理使用者請求隊伍中。

下面接著介紹實現負載均衡的兩款常用方案

一、Nginx

什麼是Nginx?

Nginx是一款輕量級Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,由俄羅斯的程式設計師Igor Sysoev所開發,供俄國大型的入口網站及搜尋引擎Rambler使用。其特點是佔有記憶體少,併發能力強,中國大陸使用nginx網站使用者有:百度新浪網易騰訊等。

優點:

1、可執行linux,並有windows 移植版

2、在高併發情況下,Nginx 可支援高達50000個併發連線數的響應。

Nginx如何實現負載均衡?

1、Nginx反向代理

Nginx利用自身反向代理功能,在conf配置檔案中新增反向代理地址,以代理伺服器的身份接受客戶端傳送過來的請求,然後將請求轉發給內部網路上的應用伺服器,並將從伺服器上得到的結果返回給客戶端,此時代理伺服器對外就表現為一個伺服器,不過它只負責轉發請求,不負責處理

2、Nginx轉發策略

Nginx轉發請求可按照排程規則通過輪詢、ip雜湊、URL雜湊、權重等多種方式對應用伺服器做負載均衡,同時還支援後端伺服器的健康檢查,也就是上面講的故障移除和恢復新增功能。

nginx 的 upstream目前支援

分配演算法:1)、輪詢(預設)       每個請求按時間順序逐一分配到不同的應用伺服器,如果應用伺服器down掉,能自動剔除。 2)、權重通過配置權重,指定輪詢機率,權重和訪問比率成正比,用於應用伺服器效能不均的情況。 3)、ip_雜湊演算法      每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個應用伺服器,可以解決session共享的問題。

Ps.大家不要看這些東西挺蒙,其實就是在Nginx伺服器配置上指定的引數即可實現。例如配置反向代理地址:proxy_pass,配置轉發演算法以及session共享

二、LVS:

什麼是LVS

Linux Virtual Server,Linux虛擬伺服器,主要使用叢集技術實現和Linux作業系統實現一個高效能、高可用的伺服器虛擬的伺服器集群系統

LVS主要組成部分為:

  負載排程器(load balancer/ Director),它是整個叢集對外面的前端機,負責將客戶的請求傳送到一組伺服器上執行,而客戶認為服務是來自一個IP地址(我們可稱之為虛擬IP地址)上的。簡單理解這個排程器跟Nginx的反向代理服務、DNS的域名解析實現的是同樣功能。對外提供統一虛擬IP,實際使用者訪問的是LVS通過轉發請求到指定伺服器上的應用。

  伺服器池(server pool/ Realserver),是一組真正執行客戶請求的伺服器,執行的服務一般有WEB、MAIL、FTP和DNS等。

共享儲存(shared storage),它為伺服器池提供一個共享的儲存區,這樣很容易使得伺服器池擁有相同的內容,提供相同的服務。這也是LVS跟Nginx區別之處:LVS可通過共享儲存結構實現多個應用伺服器間的session共享。

LVS如何實現負載均衡?

LVS主要通過IP負載均衡技術VS/NAT、VS/TUN、VS/DR實現負載均衡。簡單介紹第一個VS/NAT,它是一種最簡單的方式,所有的RealServer只需要將自己的閘道器指向Director即可。客戶端可以是任意作業系統,但此方式下,一個Director能夠帶動的RealServer比較有限。在VS/NAT的方式下,Director也可以兼為一臺RealServer。

本篇部落格介紹了另外兩種負載均衡方案:Nginx和LVS以及兩種方式的原理內容。下一篇將針對這些原理給出實踐篇。敬請期待。