全局配置前端
"global"配置中的參數爲進程級別的參數,且一般與其運行的OS相關。node
* 進程管理以及安全相關的參數linux
-chroot<jail dir>:修改haproxy的工做目錄至指定的目錄並在放棄權限以前執行chroot()操做,能夠提高haproxy的安全級別,不過須要注意的是要確保指定的目錄爲空目錄且任何用戶均不能有寫權限;後端
-daemon:讓haproxy以守護進程的方式工做於後臺,其等於「-D」選項的功能,固然,也能夠在命令行中以「-db」選項將其禁用;安全
-gid<number>:以指定的GID運行haproxy,建議使用專用於運行haproxy的GID,以避免因權限問題帶來風險;服務器
-group<group name>:同gid,不過指定的組名;cookie
-log <address> <facility> [max level [min level]]:定義全局syslog服務器,最多能夠定義兩個;網絡
-log-send-hostname [<string>]:在syslog信息的首部添加當前主機名,能夠爲「string」指定的名稱,也能夠缺省使用當前主機名;併發
-nbproc <number>:指定啓動的haproxy進程的個數,只能用於守護進程模式的haproxy;默認只啓動一個進程,鑑於調試困難等多方面的緣由,通常只在單進程僅能打開少數文件描述符的場景中才使用多進程模式;frontend
-pidfile:haproxy運行的進程pid文件位置目錄
-ulimit -n:設定每進程所可以打開的最大文件描述符數目,默認狀況下其會自動進行計算,所以不推薦修改此選項;
-user:同uid,但使用的是用戶名;
-stats:
-node:定義當前節點的名稱,用於HA場景中多haproxy進程共享同一個IP地址時;
-description:當前實例的描述信息;
*性能調整相關的參數
- maxconn <number>:設定每一個haproxy進程所接受的最大併發鏈接數,其等同於命令行選項「-n」;「ulimit -n」自動計算的結果正是參照此參數設定的;
- maxpipes<number>:
:haproxy使用pipe完成基於內核的tcp報文重組,此選項則用於設定每進程所容許使用的最大pipe個數;每一個pipe會打開兩個文件描述符,所以,」ulimit -n「自動計算時會根據須要調大此值:默認爲maxconn/4,其一般會顯得過大;
- noepoll:在linux系統上禁用epoll機制;
- nokqueue:在BSE系統上禁用kqueue機制;
- nopoll:禁用poll機制;
- nosepoll:在linux禁用啓發式epoll機制;
- nosplice:禁止在linux套接字上使用內核tcp重組,這會致使更多的recv/send系統調用;不過,在linux2.6.25-28系列的內核上,tcp重組功能有bug存在;- spread-checks <0..50, in percent>: 在haproxy後端有這衆多服務器的場景中,在精確的時間間隔後統一對衆服務器進行健康狀態檢查可能會帶來意外問題;此選項用於將其檢查的時間間隔長度上增長或減少必定的隨機時長;
- tune.bufsize <number>: 設定buffer的大小,一樣的內存條件小,較小的值可讓haproxy有能力接受更多的併發鏈接,較大的值可能讓某些應用程序使用較大的cookie信息;默認爲16384,其能夠在編譯時修改,不過強烈建議使用默認值;
- tune.chksize(number);設定檢查緩衝區的大小,單位爲字節;更大的值有助於在較大的頁面中完成基於字符串或模式的文本查找,但也會佔用更多的系統資源;不建議修改;
tune.maxaccept<number>:設定haproxy進程內核調度運行時一次性能夠接受的鏈接的個數,較大的值能夠帶來較大的吞吐率,默認在單進程模式下爲100,多進程模式爲8,設定爲-1能夠禁止此限制,通常不建議修改;
- tune.maxpollevents <number>:設定一次系統調用能夠處理的事件最大數,默認值取決於OS;其值小於200時可節約帶寬,但會略微增大網絡延遲,而大於200時會下降延遲,但會稍稍增長網絡帶寬的佔用量;
tune.maxrewrite <number>:設定爲首部重寫或追加而預留的緩衝空間,建議使用1024左右的大小;在須要使用更大的空間時,haproxy會自動增長其值;
- tune.rcvbuf.client <number>:
- tune.rcvbuf.server <number>:設定內核套接字中服務端或客戶端接受緩衝的大小,單位爲字節,強烈推薦
使用默認值;
代理配置
代理相關的配置能夠以下配置段中。
- defaults <name>
- frontend <name>
- backend <name>
- listen <name>
"defaults"段用於爲全部其它配置段提供默認參數,這配置默認配置參數可由下一個"defaults"所從新設定。
"frontend"段用於定義一系列監聽的套接字,這些套接字可接受客戶端請求並與之創建鏈接。
"backend"段用於定義一系列"後端"服務器,代理將會將對應客戶端的請求轉發至這些服務器。
"listen"段經過關聯"前端"和"後端"定義了一個完整的代理,一般只對TCP流量有用。
全部代理的名稱只能使用大小寫字母、數字、-(中線)、_(下劃線)、.(點號)和:(冒號)。此外,ACL 名稱會區分字母大小寫。