nginx4種負載均衡演算法速記及詳解
nginx簡介:nginx是一個高效能的HTTP和反向代理服務,它是由一個俄羅斯的牛逼的大牛開發的,既可以用作中介軟體,又可用做負載均衡。Nginx是一款輕量級的Web 伺服器/反向代理伺服器,其特點是佔有記憶體少,併發能力強。
nginx簡介到此結束。
這講我們來講解下面試一個常問的問題:nginx4種負載均衡演算法(策略)。
出去面試,常會遇到這個問題:請描述一下nginx4種負載均衡演算法,你們公司使用的是那種?
答:nginx常用的支援4種負載均衡排程演算法(策略)有:輪訓、ip_hash、最少連線、權重演算法。
另外有2種是第三方的(不做詳解):fair(第三方) 響應時間方式 ,url_hash(第三方) 依據URL分配方式
速記方法:最少連拳輪二哈!!!
想象法:拳有點重,輪著打的二哈又挨批,又打哈氣(西)的!
好速記完畢。我們來按實際舉例!!!
<一>輪詢(round-robin預設):每個請求按時間順序逐一分配到不同的後端伺服器,也是最簡單的配置演算法;如果後端伺服器down掉,能自動剔除。
開啟 nginx 配置檔案(請以你的安裝路徑為主)
vi /usr/local/nginx/conf/nginx.conf
編寫輪訓配置,設定負載均衡伺服器列表:
upstream testround.com {
server 192.168.1.1:8080 ;
server 192.168.1.2:8081 ;
server 192.168.1.3:8082 ;
}
當訪問 http://192.168.188 的時候,會把這個請求負載到 192.168.1.1 的 8080 埠、192.168.1.2 的 8080 埠、192.168.1.3 的 8080 埠。每個請求按時間順序逐一分配到不同的後端伺服器。
<二>ip_hash:每個請求按訪問IP的hash值結果進行分配,同一個IP客戶端固定訪問一個後端伺服器。可以保證來自同一ip的請求被打到固定的機器上,可以解決session問題。如果後端伺服器down掉,要手工down掉。
upstream testiphash.com {
#後端伺服器訪問規則
ip_hash;
server 192.168.1.1:8080 ;
server 192.168.1.2:8081 ;
server 192.168.1.3:8082 ;
}
<三>權重演算法:
指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。weight的值越大分配到的訪問概率越高,主要用於後端每臺伺服器效能不均衡的情況下,或者僅僅為在主從(2臺伺服器)的情況下設定不同的權值,達到合理有效的地利用主機資源。
upstream testweight.com {
#後端伺服器訪問規則
server 192.168.1.1:8080 weight=2;
server 192.168.1.2:8081 weight=2;
}
<四>最少連線(least_conn):把請求轉發給連線數較少的後端伺服器進行處理。例如Nginx負載中配置了兩臺伺服器,sky和fans,當Nginx接收到一個請求時,sky正在處理的請求數是100,fans正在處理的請求數是200,則Nginx會把當前請求交給sky來處理。
upstream testleastconn.com {
least_conn;
server 192.168.1.1:8080;
server 192.168.1.2:8081;
}
以上便是4種負載均衡策略的實現方式的講解,在實際環境運用中,需要根據不同的場景選擇性運用,大都是多種策略結合使用並且根據專案實際需求來確認。