HAproxy設定檔詳解

來源:互聯網
上載者:User

標籤:haproxy   設定檔   

global # 全域參數的設定


log 127.0.0.1 local0 info   # log文法:log <address_1>[max_level_1] # 全域的日誌配置,使用log關鍵字,指定使用127.0.0.1上的syslog服務中的local0日誌裝置,記錄日誌等級為info的日誌

 

user haproxy

group haproxy    # 設定運行haproxy的使用者和組,也可使用uid,gid關鍵字替代之

daemon     # 以守護進程的方式運行


nbproc 16      # 設定haproxy啟動時的進程數,一般單進程即可,不建議修改

 

maxconn 4096     # 定義每個haproxy進程的最大串連數 ,由於每個串連包括一個用戶端和一個伺服器端,所以單個進程的TCP會話最大數目將是該值的兩倍。

 

ulimit -n 65536       # 設定最大開啟的檔案描述符數,在1.4的官方文檔中提示,該值會自動計算,所以不建議進行設定 

pidfile /var/run/haproxy.pid      # 定義haproxy的pid

 

defaults  # 預設部分的定義


mode http     # mode文法:mode {http|tcp|health} 。http是七層模式,tcp是四層模式,health是健康檢測,返回OK

log 127.0.0.1 local3 err      # 使用127.0.0.1上的syslog服務的local3裝置記錄錯誤資訊,local3需要事先在/etc/rsyslog.conf中定義

retries 3    # 定義串連後端伺服器的失敗重連次數,串連失敗次數超過此值後將會將對應後端伺服器標記為不可用

 

option httplog   # 啟用日誌記錄HTTP請求,預設haproxy日誌記錄是不記錄HTTP請求的,只記錄“時間[Jan 5 13:23:46] Log Service器[127.0.0.1] 執行個體名已經pid[haproxy[25218]] 資訊[Proxy http_80_in stopped.]”,日誌格式很簡單。


option redispatch          # 當使用了cookie時,haproxy將會將其請求的後端伺服器的serverID插入到cookie中,以保證會話的SESSION持久性;而此時,如果後端的伺服器宕掉了,但是用戶端的cookie是不會重新整理的,如果設定此參數,將會將客戶的請求強制定向到另外一個後端server上,以保證服務的正常。


option abortonclose     # 當伺服器負載很高的時候,自動結束掉當前隊列處理比較久的連結


option dontlognull    # 啟用該項,日誌中將不會記錄空串連。所謂空串連就是在上遊的負載平衡器或者監控系統為了探測該服務是否存活可用時,需要週期性串連或者擷取某一固定的組件或頁面,或者探測掃描連接埠是否在監聽或開放等動作被稱為空白串連;官方文檔中標註,如果該服務上遊沒有其他的負載平衡器的話,建議不要使用該參數,因為互連網上的惡意掃描或其他動作就不會被記錄下來


option httpclose      # 使用該參數,每處理完一個request時,haproxy都會去檢查http頭中的Connection的值,如果該值不是close,haproxy將會將其刪除,如果該值為空白將會添加為:Connection: close。使每個用戶端和伺服器端在完成一次傳輸後都會主動關閉TCP串連。與該參數類似的另外一個參數是“option forceclose”,該參數的作用是強制關閉對外的服務通道,因為有的伺服器端收到Connection: close時,也不會自動關閉TCP串連,如果用戶端也不關閉,串連就會一直處於開啟,直到逾時。


contimeout 5000     # 設定成功串連到一台伺服器的最長等待時間,預設單位是毫秒,新版本的haproxy使用timeout connect替代,該參數向後相容

clitimeout 3000       # 設定串連用戶端發送資料時的成功串連最長等待時間,預設單位是毫秒,新版本haproxy使用timeout client替代。該參數向後相容

srvtimeout 3000      # 設定伺服器端回應客戶度資料發送的最長等待時間,預設單位是毫秒,新版本haproxy使用timeout server替代。該參數向後相容


listen status        # 定義一個名為status的listen


bind 0.0.0.0:1080       # 定義監聽的通訊端

mode http          # 定義為HTTP模式

log global           # 繼承global中log的定義

stats refresh 30s        # stats是haproxy的一個統計頁面的通訊端,該參數設定統計頁面的重新整理間隔為30s

stats uri /admin?stats       # 設定統計頁面的uri為/admin?stats

stats realm  Haproxy\ Statistics      # 設定統計頁面認證時的提示內容

stats auth admin:password            # 設定統計頁面認證的使用者和密碼,如果要設定多個,另起一行寫入即可

stats hide-version                           # 隱藏統計頁面上的haproxy版本資訊


frontend http_80_in # 定義一個名為http_80_in的frontend


bind 0.0.0.0:80                # http_80_in定義前端部分監聽的通訊端

mode http                      # 定義為HTTP模式

log global                       # 繼承global中log的定義

option forwardfor          # 啟用X-Forwarded-For,在requests頭部插入用戶端IP發送給後端的server,使後端server擷取到用戶端的真實IP


acl static_down nbsrv(static_server) lt 1        # 定義一個名叫static_down的acl,當backend static_sever中存活機器數小於1時會被匹配到

#acl php_web url_reg /*.php 

acl php_web path_end .php          # 定義一個名叫php_web的acl,當請求的url末尾是以.php結尾的,將會被匹配到,上面兩種寫法任選其一

#acl static_web url_reg /*.(css|jpg|png|jpeg|js|gif)$

acl static_web path_end .gif .png .jpg .css .js .jpeg        # 定義一個名叫static_web的acl,當請求的url末尾是以.css、.jpg、.png、.jpeg、.js、.gif結尾的,將會被匹配到,上面兩種寫法任選其一


use_backend php_server if static_down       # 如果滿足策略static_down時,就將請求交予backend php_server

use_backend php_server if php_web            # 如果滿足策略php_web時,就將請求交予backend php_server

use_backend static_server if static_web        # 如果滿足策略static_web時,就將請求交予backend static_server


backend php_server         #定義一個名為php_server的backend部分

mode http                    # 設定為http模式

balance source            # 設定haproxy的調度演算法為源地址hash

cookie SERVERID         # 允許向cookie插入SERVERID,每台伺服器的SERVERID可在下面使用cookie關鍵字定義

option httpchk GET /test/index.php        # 開啟對後端伺服器的健康檢測,通過GET /test/index.php來判斷後端伺服器的健康情況


server php_server_1 10.12.25.68:80 cookie 1 check inter 2000 rise 3 fall 1 weight 2

server php_server_2 10.12.25.72:80 cookie 2 check inter 2000 rise 3 fall 1 weight 1

server php_server_bak 10.12.25.79:80 cookie 3 check inter 1500 rise 3 fall 1 backup        # server文法:server [:port] [param*] # 使用server關鍵字來設定後端伺服器;為後端伺服器所設定的內部名稱[php_server_1],該名稱將會呈現在日誌或警報中、後端伺服器的IP地址,支援連接埠映射[10.12.25.68:80]、指定該伺服器的SERVERID為1[cookie 1]、接受健康監測[check]、監測的間隔時間長度,單位毫秒[inter 2000]、監測正常多少次後被認為後端伺服器是可用的[rise 3]、監測失敗多少次後被認為後端伺服器是停用[fall 3]、分發的權重[weight 2]、最後為備份用的後端伺服器,當正常的伺服器全部都宕機後,才會啟用備份伺服器[backup]


backend static_server

mode http

option httpchk GET /test/index.html

server static_server_1 10.12.25.83:80 cookie 3 check inter 2000 rise 3 fall 3


本文出自 “無名小卒” 部落格,請務必保留此出處http://breezey.blog.51cto.com/2400275/1560206

HAproxy設定檔詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.