SSL/TLS代理(termination proxy)

TLS termination proxy (or SSL termination proxy) is a proxy server that is used by an institution to handle incoming TLS connections, decrypting the TLS and passing on the unencrypted request to the institution's other servers (it is assumed that the institution's own network is secure so the user's session data does not need to be encrypted on that part of the link). TLS termination proxies are used to reduce the load on the main servers by offloading the cryptographic processing to another machine, and to support servers that do not support TLS, like Varnish.前端

因此在web應用中,通常適用nginx或者haproxy做爲前端的https代理,代理服務器和後臺的應用服務器好比tomcat的交互採用普通的HTTP鏈接,這樣能夠大幅度下降應用服務器處理SSL時加解密的資源消耗需求。以下:mysql

 

能夠充當TLS termination proxy的服務器包括:

通常來講,linux下如今大都適用nginx或者haproxy做爲http反向代理,他們各自的優缺點以下:linux

LVS:
一、抗負載能力強。抗負載能力強、性能高,能達到F5硬件的60%;對內存和cpu資源消耗比較低
二、工做在網絡4層,經過vrrp協議轉發(僅做分發之用),具體的流量由linux內核處理,所以沒有流量的產生。
二、穩定性、可靠性好,自身有完美的熱備方案;(如:LVS+Keepalived)
三、應用範圍比較廣,能夠對全部應用作負載均衡;
四、不支持正則處理,不能作動靜分離。
五、支持負載均衡算法:rr(輪循)、wrr(帶權輪循)、lc(最小鏈接)、wlc(權重最小鏈接)
六、配置 複雜,對網絡依賴比較大,穩定性很高。ios

通常咱們在mysql/rabbitmq等使用TCP協議的高可用場景時使用LVS,在不支持VIP且使用TCP協議的場景適用haproxy。nginx

Ngnix:
一、工做在網絡的7層之上,能夠針對http應用作一些分流的策略,好比針對域名、目錄結構;
二、Nginx對網絡的依賴比較小,理論上能ping通就就能進行負載功能;
三、Nginx安裝和配置比較簡單,測試起來比較方便;
四、也能夠承擔高的負載壓力且穩定,通常能支撐超過1萬次的併發;
五、對後端服務器的健康檢查,只支持經過端口來檢測,不支持經過url來檢測。
六、Nginx對請求的異步處理能夠幫助節點服務器減輕負載;
七、Nginx僅能支持http、https和Email協議,這樣就在適用範圍較小。
八、不支持Session的直接保持,但能經過ip_hash來解決。、對Big request header的支持不是很好,
九、支持負載均衡算法:Round-robin(輪循)、Weight-round-robin(帶權輪循)、Ip-hash(Ip哈希)
十、Nginx還能作Web服務器即Cache功能。git

HAProxy的特色是:
一、支持兩種代理模式:TCP(四層)和HTTP(七層),支持虛擬主機;
二、可以補充Nginx的一些缺點好比Session的保持,Cookie的引導等工做
三、支持url檢測後端的服務器出問題的檢測會有很好的幫助。
四、更多的負載均衡策略好比:動態加權輪循(Dynamic Round Robin),加權源地址哈希(Weighted Source Hash),加權URL哈希和加權參數哈希(Weighted Parameter Hash)已經實現
五、單純從效率上來說HAProxy更會比Nginx有更出色的負載均衡速度。
六、HAProxy能夠對Mysql進行負載均衡,對後端的DB節點進行檢測和負載均衡。
九、支持負載均衡算法:Round-robin(輪循)、Weight-round-robin(帶權輪循)、source(原地址保持)、RI(請求URL)、rdp-cookie(根據cookie)
十、不能作Web服務器即Cache。github

三大主流軟件負載均衡器適用業務場景:
一、初期,能夠選用Nigix/HAproxy做爲反向代理負載均衡(或者流量不大均可以不選用負載均衡),由於其配置簡單,性能也能知足通常的業務場景。若是考慮到負載均衡器是有單點問題,能夠採用Nginx+Keepalived/HAproxy+Keepalived避免負載均衡器自身的單點問題。
二、網站併發達到必定程度以後,爲了提升穩定性和轉發效率,可使用LVS、畢竟LVS比Nginx/HAproxy要更穩定,轉發效率也更高。不過維護LVS對維護人員的要求也會更高,投入成本也更大。web

注:Niginx與Haproxy比較:Niginx支持七層、用戶量最大,穩定性比較可靠。Haproxy支持四層和七層,支持更多的負載均衡算法,支持session保存等。具體選型看使用場景,目前來講Haproxy因爲彌補了一些Niginx的缺點用戶量也不斷在提高。算法


衡量負載均衡器好壞的幾個重要因素: 
一、會話率 :單位時間內的處理的請求數 
二、會話併發能力:併發處理能力 
三、數據率:處理數據能力 
通過官方測試統計,haproxy 單位時間處理的最大請求數爲20000個,能夠同時維護40000-50000個併發鏈接,最大數據處理能力爲10Gbps。綜合上述,haproxy是性能優越的負載均衡、反向代理服務器。sql

總結HAProxy主要優勢:
1、免費開源,穩定性也是很是好,這個可經過我作的一些小項目能夠看出來,單Haproxy也跑得不錯,穩定性能夠與LVS相媲美;
2、根據官方文檔,HAProxy能夠跑滿10Gbps-New benchmark of HAProxy at 10 Gbps using Myricom's 10GbE NICs (Myri-10G PCI-Express),這個做爲軟件級負載均衡,也是比較驚人的;
3、自帶強大的監控服務器狀態的頁面,實際環境中咱們結合Nagios進行郵件或短信報警,這個也是我很是喜歡它的緣由之一;
4、HAProxy支持虛擬主機。

haproxy和nginx做爲http反向代理的性能網上找了幾個,可參考以下:

https://www.oschina.net/question/17_4121

相關文章
相關標籤/搜索