基于Nginx的軟件負(fù)載均衡實(shí)現(xiàn)解讀
2.5 TCP/UDP流量的負(fù)載均衡
通常,HTTP和HTTPS的負(fù)載均衡叫做七層負(fù)載均衡,而TCP和UDP協(xié)議的負(fù)載均衡叫做四層負(fù)載均衡。因?yàn)槠邔迂?fù)載均衡通常都是HTTP和HTTPS協(xié)議,所以這種負(fù)載均衡相當(dāng)于是四層負(fù)載均衡的特例化,均衡器可以根據(jù)HTTP/HTTPS協(xié)議的頭部(User-Agent、Language等)、響應(yīng)碼甚至是響應(yīng)內(nèi)容做額外的規(guī)則,達(dá)到特定條件特定目的的backend轉(zhuǎn)發(fā)的需求。
除了Nginx所專長的HTTP負(fù)載均衡,Nginx還支持TCP和UDP流量的負(fù)載均衡,適用于LDAP/MySQL/RTMP和DNS/syslog/RADIUS各種應(yīng)用場景。這類情況的負(fù)載均衡使用stream來配置,Nginx編譯的時候需要支持–with-stream選項(xiàng)。查看手冊,其配置原理和參數(shù)和HTTP負(fù)載均衡差不多。
因?yàn)門CP、UDP的負(fù)載均衡都是針對通用程序的,所以之前HTTP協(xié)議支持的match條件(status、header、body)是沒法使用的。TCP和UDP的程序可以根據(jù)特定的程序,采用send、expect的方式來進(jìn)行動態(tài)健康檢測。
2.6 其他特性
slow_start=30s:防止新添加/恢復(fù)的主機(jī)被突然增加的請求所壓垮,通過這個參數(shù)可以讓該主機(jī)的weight從0開始慢慢增加到設(shè)定值,讓其負(fù)載有一個緩慢增加的過程。
max_conns=30:可以設(shè)置backend的最大連接數(shù)目,當(dāng)超過這個數(shù)目的時候會被放到queue隊(duì)列中,同時隊(duì)列的大小和超時參數(shù)也可以設(shè)置,當(dāng)隊(duì)列中的請求數(shù)大于設(shè)定值,或者超過了timeout但是backend還不能處理請求,則客戶端將會收到一個錯誤返回。通常來說這還是一個比較重要的參數(shù),因?yàn)镹ginx作為反向代理的時候,通常就是用于抗住并發(fā)量的,如果給backend過多的并發(fā)請求,很可能會占用后端過多的資源(比如線程、進(jìn)程非事件驅(qū)動),最終反而會影響backend的處理能力。