天天看點

高可用高性能負載均衡軟體HAproxy詳解指南-第一章(簡介、安裝)

HAproxy簡介

為什麼要使用HAproxy

haproxy 性能特點

負載均衡器的性能評估因素

安裝HAproxy

haproxy案例4:實作web負載

由于字型過多分開寫的,全系列文章連結

第三章:HAproxy執行個體

<a href="http://zhang789.blog.51cto.com/11045979/1873436" target="_blank">http://zhang789.blog.51cto.com/11045979/1873436</a>

<code>1、</code>HAProxy提供高可用性、負載均衡以及基于TCP和HTTP應用的代理,支援虛拟主機,它是免費、快速并且可靠的一種解決方案。HAProxy特别适用于那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。HAProxy運作在目前的硬體上,完全可以支援數以萬計的并發連接配接。并且它的運作模式使得它可以很簡單安全的整合進您目前的架構中, 同時可以保護你的web伺服器不被暴露到網絡上。  <code>2、</code>HAProxy實作了一種事件驅動, 單一程序模型,此模型支援非常大的并發連接配接數。多程序或多線程模型受記憶體限制 、系統排程器限制以及無處不在的鎖限制,很少能處理數千并發連接配接。事件驅動模型因為在有更好的資源和時間管理的使用者空間(User-Space) 實作所有這些任務,是以沒有這些問題。此模型的弊端是,在多核系統上,這些程式通常擴充性較差。這就是為什麼他們必須進行優化以 使每個CPU時間片(Cycle)做更多的工作。(為了解決上下文切換,可以像nginx一樣綁定cpu上面)
<code>1.</code>免費開源,穩定性也是非常好,這個可通過一些項目可以看出來,單Haproxy也跑得不錯,穩定性可以與硬體級的F5相媲美;  <code>2.</code> 根據官方文檔,HAProxy可以跑滿10Gbps-New benchmark of HAProxy at 10 Gbps usingMyricom’s 10GbE NICs (Myri-10G PCI-Express),這個數值作為軟體級負載均衡器是相當驚人的。  <code>3.</code> HAProxy 支援連接配接拒絕 : 因為維護一個連接配接的打開的開銷是很低的,有時我們很需要限制攻擊蠕蟲(attack bots),也就是說限制它們的連接配接打開進而限制它們的危害。 這個已經為一個陷于小型DDoS攻擊的網站開發了而且已經拯救了很多站點,這個優點也是其它負載均衡器沒有的。  <code>4.</code>HAProxy 支援全透明代理(已具備硬體防火牆的典型特點): 可以用用戶端IP位址或者任何其他位址來連接配接後端伺服器. 這個特性僅在Linux 2.4/2.6核心打了cttproxy更新檔後才可以使用,這個特性也使得為某特殊伺服器處理部分流量同時又不修改伺服器的位址成為可能。  <code>5.</code> HAProxy現多于線上的Mysql叢集環境,我們常用于它作為MySQL(讀)負載均衡。  <code>6.</code> 自帶強大的監控伺服器狀态的頁面,實際環境中我們結合Nagios進行郵件或短信報警。  <code>7.</code> HAProxy支援虛拟主機。  <code>8.</code> HAProxy特别适用于那些負載特大的web站點, 這些站點通常又需要會話保持或七層處理。HAProxy運作在目前的硬體上,完全可以支援數以萬計的并發連接配接。并且它的運作模式使得它可以很簡單安全的整合進您目前的架構中, 同時可以保護你的web伺服器不被暴露到網絡上。

<code>注,在功能上,能以proxy反向代理方式實作Web均衡負載,這樣的産品有很多。包括lvs,Nginx,ApacheProxy,lighttpd等。國内生産環境上使用Haproxy的公司很多,例如淘寶的CDN系統,</code>

<a href="http://s4.51cto.com/wyfs02/M02/8A/3D/wKioL1gr7YXimtzJAAELFSnCFJI712.png" target="_blank"></a>

HAProxy借助于OS上幾種常見的技術來實作性能的最大化。

<code>1、</code>單程序、事件驅動模型顯著降低了上下文切換的開銷及記憶體占用。  <code>2、</code>O(1)事件檢查器(event checker)允許其在高并發連接配接中對任何連接配接的任何事件實作即時探測。  <code>3、</code>在任何可用的情況下,單緩沖(single buffering)機制能以不複制任何資料的方式完成讀寫操作,這會節約大量的CPU時鐘周期及記憶體帶寬;  <code>4、</code>借助于Linux 2.6 (&gt;= 2.6.27.19)上的splice()系統調用,HAProxy可以實作零複制轉發(Zero-copy forwarding),在Linux 3.5及以上的OS中還可以實作零複制啟動(zero-starting);  <code>5、</code>MRU記憶體配置設定器在固定大小的記憶體池中可實作即時記憶體配置設定,這能夠顯著減少建立一個會話的時長;  <code>6、</code>樹型存儲:側重于使用作者多年前開發的彈性二叉樹,實作了以O(log(N))的低開銷來保持計時器指令、保持運作隊列指令及管理輪詢及最少連接配接隊列;  <code>7、</code>優化的HTTP首部分析:優化的首部分析功能避免了在HTTP首部分析過程中重讀任何記憶體區域;  <code>8、</code>精心地降低了昂貴的系統調用,大部分工作都在使用者空間完成,如時間讀取、緩沖聚合及檔案描述符的啟用和禁用等;
所有的這些細微之處的優化實作了在中等規模負載之上依然有着相當低的CPU負載,甚至于在非常高的負載場景中,5%的使用者空間占用率和95%的系統空間占用率也是非常普遍的現象,這意味着HAProxy程序消耗比系統空間消耗低20倍以上。是以,對OS進行性能調優是非常重要的。即使使用者空間的占用率提高一倍,其CPU占用率也僅為10%,這也解釋了為何7層處理對性能影響有限這一現象。由此,在高端系統上HAProxy的7層性能可輕易超過硬體負載均衡裝置。
在生産環境中,在7層處理上使用HAProxy作為昂貴的高端硬體負載均衡裝置故障故障時的緊急解決方案也時長可見。硬體負載均衡裝置在“封包”級别處理請求,這在支援跨封包請求(request across multiple packets)有着較高的難度,并且它們不緩沖任何資料,是以有着較長的響應時間。對應地,軟體負載均衡裝置使用TCP緩沖,可建立極長的請求,且有着較大的響應時間。

三個重要因素:

經過官方測試統計,haproxy 機關時間處理的最大請求數為20000個,可以同時維護40000-50000個并發連接配接,最大資料處理能力為10Gbps。綜合上述,haproxy是性能優越的負載均衡、反向代理伺服器。

1、安裝haproxy

2、配置檔案

3、預設配置檔案

2、node2安裝http和測試頁面

3、haproxy安裝配置

4、配置檔案

5、檢視監控頁面

<a href="http://s1.51cto.com/wyfs02/M00/8A/41/wKiom1gr7d7SoNaBAAAdk_xrmq4713.png" target="_blank"></a>

<a href="http://s1.51cto.com/wyfs02/M00/8A/3D/wKioL1gr7d6gHzl5AAAiunWEwnk609.png" target="_blank"></a>

本文轉自 好筆記運維 51CTO部落格,原文連結:http://blog.51cto.com/zhang789/1873432,如需轉載請自行聯系原作者

繼續閱讀