defaults []
預設配置項,針對以下的frontend、backend和lsiten生效,可以多個name。
defaults常用的配置參數:
option redispatch
當server Id對應的伺服器挂掉後,強制定向到其他健康的伺服器,生産環境推薦添加該參數進行調優。
option abortonclose
當伺服器負載很高的時候,自動結束掉目前隊列處理比較久的連結,生産環境推薦添加該參數進行調優。
option http-keep-alive 開啟會話保持,如"option http-keep-alive 60"則表示會話保持時間為60s。
option forwardfor
開啟IP透傳,無法自定義"forwardfor"這個變量,而在nginx中式可以自定義的,生産環境中推薦添加該擦承諾書進行調優。
mode
指定預設工作類型,比如"mode http"表示預設基于http協定工作,"mode tcp"則表示預設基于tcp協定工作。
timeout connect
轉發用戶端請求到後端server的最長連接配接時間(TCP之前),如"timeout connect 60s"則表示用戶端請求到haproxy伺服器之後,由haproxy将請求轉發到後端伺服器,若超過60s(即1分鐘)後端伺服器依舊沒有響應用戶端則逾時(說白了就是用戶端和後端伺服器建立連接配接的逾時時間)。
timeout server
轉發用戶端請求到後端服務端的逾時逾時時長(TCP之後),如"timeout server 600s"則表示用戶端請求到haproxy伺服器之後,由haproxy将請求轉發到後端的伺服器,若後端伺服器(比如資料庫查詢操作)在600s(10分鐘)内依舊沒有響應則逾時(說白了就是用戶端已經和後端伺服器建立連接配接後,定義執行查詢或寫入操作的逾時時間)。
timeout client 600s
與用戶端的最長空閑時間,表示用戶端和伺服器端已經建立連接配接,若在指定的規定的時間内發起了新的請求則無需重建立立連接配接,直接使用上一次的連接配接即可。
timeout http-keep-alive 120s
session會話保持逾時時間,範圍内會轉發到相同的後端伺服器。
timeout check 5s
對後端伺服器的檢測逾時時間。
frontend前端servername,類似于Nginx的一個虛拟主機server。
bind:
指定HAProxy的監聽位址,可以是IPV4或IPV6,可以同時監聽多個IP或端口,可同時用于listen字段中
文法為:"bind [
]: [, ...] [param*]",如"bind 172.30.1.102:80,172.30.1.102:8080,172.30.1.102:8081"
mode http/tcp
指定負載協定類型
use_backend backend_name
調用的後端伺服器組名稱(即使用backend關鍵字定義的後端伺服器組)
backend後端伺服器組,等于nginx的upstream
mode http/tcp
指定負載協定類型
option
配置選項,option後面加httpchk,smtpchk, mysql-check, pgsql-check,ssl-hello-chk方法,可用于實作更多應用層檢測功能。
server
定義後端realserver
後端伺服器狀态監測及相關配置如下所示:
check
對指定real進行健康狀态檢查,預設不開啟
addr IP
可指定的健康狀态監測IP
port num
指定的健康狀态監測端口,比如LA/NMP架構中,咱們可以指定檢測PHP的9000端口。
inter num
健康狀态檢查間隔時間,預設2000 ms
fall num
後端伺服器失效檢查次數,預設為3
rise num
後端伺服器從下線恢複檢查次數,預設為2
weight
預設為1,最大值為256,0表示不參與負載均衡
backup
将後端伺服器标記為備份狀态,即當其它可用節點都挂掉後該節點才會被啟用。
disabled
将後端伺服器标記為不可用狀态,即手動将某個背景節點下線。
redirect prefix http://node101.yinzhengjie.org.cn
将請求臨時重定向至其它URL,隻适用于http模式
maxconn目前後端server的最大并發連接配接數,若并發數沒有超過規定的最大值時則目前節點響應使用者請求(說白了就是未達到最大并發連接配接數時所有使用者請求的連接配接數它一個節點來處理),若超過則需要其它節點來一起響應使用者請求(說白了就是達到最大并發連接配接數時它和别的節點一起來處理使用者請求的連接配接數)。
backlog當server的連接配接數達到上限後的後援隊列長度
listen将frontend和backend合并在一起配置。可參考案例:https://www.cnblogs.com/yinzhengjie/p/12114195.html