對于做軟負載,我們都知道主流的方案有lvs、haproxy、nginx!那么對于haproxy和nginx,我們如何選擇呢?回答這個問題之前,我根據個人使用經驗來講下它們的特點!
Haproxy特點
支持TCP與Http協議,工作在網絡4層和7層?
支持Session共享、Cookies引導?
支持通過URL健康檢測?
支持8種負載均衡策略?
支持心跳檢測
Nginx特點
支持Http協議,工作在網絡7層?
支持通過端口健康檢測?
支持強大的正則匹配規則?
支持WebSocket協議?
支持Http Cache
說明:
對于Http協議,Haproxy處理效率比Nginx高。所以,沒有特殊要求的時候或者一般場景,建議使用Haproxy來做Http協議負載!但如果是Web,那么建議使用Nginx!總之,大家可以結合各自使用場景的特點來進行合理地選擇!
上次有人問我:Nginx或Haproxy的連接數能否突破“65535”這個“魔咒”?其實大家有這樣的疑問,是因為對Nginx或Haproxy工作原理不了解導致的!
下面以Linux服務器為例,講解下二者理論上最大連接數:
Linux上Nginx理論上最大連接數
正向代理:最大連接數 = work_processes * worker_connections?
反向代理:最大連接數 = work_processes * worker_connections / 4?
備注:worker_connections指單個進程能夠處理的最大連接數,假設你的服務器是8核,worker_connections =?
65535(可以自定義的,但最大不能超過最大文件描述符數,因為1個連接相當于使用了1個文件描述符)
在上述2種情況下最大連接數(理論值)分別是: 8 * 65535 和 8 * 65535 /4
Linux上Haproxy理論上最大連接數
最大連接數 = maxconn( global | defaults | listen )
更多Nginx相關技術文章,請訪問Nginx使用教程欄目進行學習!