溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

HAProxy如何配置

發(fā)布時間:2021-11-20 11:28:01 來源:億速云 閱讀:151 作者:小新 欄目:系統(tǒng)運維

小編給大家分享一下HAProxy如何配置,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

HAProxy的配置

HAProxy配置中分成五部分內(nèi)容,當然這些組件不是必選的,可以根據(jù)需要選擇部分作為配置。
global:參數(shù)是進程級的,通常和操作系統(tǒng)(OS)相關(guān)。這些參數(shù)一般只設(shè)置一次,如果配置無誤,就不需要再次配置進行修改
defaults:配置默認參數(shù)的,這些參數(shù)可以被利用配置到frontend,backend,listen組件
frontend:接收請求的前端虛擬節(jié)點,F(xiàn)rontend可以根據(jù)規(guī)則直接指定具體使用后端的 backend(可動態(tài)選擇)。
backend:后端服務(wù)集群的配置,是真實的服務(wù)器,一個Backend對應(yīng)一個或者多個實體服務(wù)器。
listen:Frontend和Backend的組合體。

下面是HAProxy的一些常用的配置,這個配置是用來說明HAProxy的一些常用功能的配置,具體詳細配置請查看安裝目錄下的doc目錄下的文檔文件,或者到http://cn.haproxy.org/下載中文配置說明文檔

配置具體實例,后附說明:

global

#全局的日志配置 其中日志級別是[err warning info debug]

#local0 是日志設(shè)備,必須為如下24種標準syslog設(shè)備的一種: 

#kern user mail daemon auth syslog lpr news 

#uucp cron auth3 ftp ntp audit alert cron2 

#local0 local1 local2 local3 local4 local5 local6 local7 

#但是之前在/etc/syslog.conf文件中定義的是local0所以

#這里也是用local0

log 127.0.0.1 local0 info #[err warning info debug]

#***連接數(shù)

maxconn 4096

#用戶

user admin

#組

group admin

#使HAProxy進程進入后臺運行。這是推薦的運行模式

daemon

#創(chuàng)建4個進程進入deamon模式運行。此參數(shù)要求將運行模式設(shè)置為"daemon"

nbproc 4

#將所有進程的pid寫入文件 啟動進程的用戶必須有權(quán)限訪問此文件。

pidfile /home/admin/haproxy/logs/haproxy.pid

defaults 

#默認的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OK

mode http

#采用http日志格式

option httplog

#三次連接失敗就認為是服務(wù)器不可用,也可以通過后面設(shè)置

retries 3

如果cookie寫入了serverId而客戶端不會刷新cookie,

#當serverId對應(yīng)的服務(wù)器掛掉后,強制定向到其他健康的服務(wù)器

option redispatch

#當服務(wù)器負載很高的時候,自動結(jié)束掉當前隊列處理比較久的鏈接

option abortonclose

#默認的***連接數(shù)

maxconn 4096

#連接超時

contimeout 5000

#客戶端超時

clitimeout 30000

#服務(wù)器超時

srvtimeout 30000

#=心跳檢測超時

timeout check 2000

#注:一些參數(shù)值為時間,比如說timeout。時間值通常單位為毫秒(ms),但是也可以通過加#后綴,來使用其他的單位。

#- us : microseconds. 1 microsecond = 1/1000000 second

#- ms : milliseconds. 1 millisecond = 1/1000 second. This is the default.

#- s : seconds. 1s = 1000ms

#- m : minutes. 1m = 60s = 60000ms

#- h : hours. 1h = 60m = 3600s = 3600000ms

#- d : days. 1d = 24h = 1440m = 86400s = 86400000ms

########統(tǒng)計頁面配置############

listen admin_stats

#監(jiān)聽端口

bind 0.0.0.0:1080

#http的7層模式

mode http

#日志設(shè)置

log 127.0.0.1 local0 err #[err warning info debug]

#統(tǒng)計頁面自動刷新時間

stats refresh 30s

#統(tǒng)計頁面url

stats uri /admin?stats

#統(tǒng)計頁面密碼框上提示文本

stats realm Gemini\ Haproxy

#統(tǒng)計頁面用戶名和密碼設(shè)置

stats auth admin:admin

stats auth admin1:admin1

#隱藏統(tǒng)計頁面上HAProxy的版本信息

stats hide-version

#######網(wǎng)站檢測listen定義############

listen site_status

bind 0.0.0.0:1081

mode http

log 127.0.0.1 local0 err #[err warning info debug]

#網(wǎng)站健康檢測URL,用來檢測HAProxy管理的網(wǎng)站是否可以用,正常返回200,不正常返回500

monitor-uri /site_status

#定義網(wǎng)站down時的策略

#當掛在負載均衡上的指定backend的中有效機器數(shù)小于1臺時返回true

acl site_dead nbsrv(denali_server) lt 1

acl site_dead nbsrv(tm_server) lt 1 

acl site_dead nbsrv(mms_server) lt 1

#當滿足策略的時候返回500

monitor fail if site_dead

#如果192.168.0.252或者192.168.0.31這兩天機器掛了

#認為網(wǎng)站掛了,這時候返回500,判斷標準是如果mode是

#http返回200認為是正常的,如果mode是tcp認為端口暢通是好的

monitor-net 192.168.0.252/31

########frontend配置############

frontend http_80_in

#監(jiān)聽端口

bind 0.0.0.0:80

#http的7層模式

mode http

#應(yīng)用全局的日志配置

log global

#啟用http的log

option httplog

#每次請求完畢后主動關(guān)閉http通道,HA-Proxy不支持keep-alive模式

option httpclose

#如果后端服務(wù)器需要獲得客戶端的真實IP需要配置次參數(shù),將可以從Http Header中

#獲得客戶端IP

option forwardfor

###########HAProxy的日志記錄內(nèi)容配置##########

capture request header Host len 40

capture request header Content-Length len 10

capture request header Referer len 200

capture response header Server len 40

capture response header Content-Length len 10

capture response header Cache-Control len 8

####################acl策略定義#########################

#如果請求的域名滿足正則表達式返回true -i是忽略大小寫

acl denali_policy hdr_reg(host) -i ^(www.gemini.taobao.net|my.gemini.taobao.net|auction1.gemini.taobao.net)$

#如果請求域名滿足trade.gemini.taobao.net 返回 true -i是忽略大小寫

acl tm_policy hdr_dom(host) -i trade.gemini.taobao.net

##在請求url中包含sip_apiname=,則此控制策略返回true,否則為false

acl invalid_req url_sub -i sip_apiname=

##在請求url中存在timetask作為部分地址路徑,則此控制策略返回true,否則返回false

acl timetask_req url_dir -i timetask

#當請求的header中Content-length等于0時返回 true

acl missing_cl hdr_cnt(Content-length) eq 0

######################acl策略匹配相應(yīng)###################

##當請求中header中Content-length等于0 阻止請求返回403

block if missing_cl

##block表示阻止請求,返回403錯誤,當前表示如果不滿足策略invalid_req,或者滿足策略timetask_req,則阻止請求。 

block if !invalid_req || timetask_req 

#當滿足denali_policy的策略時使用denali_server的backend

use_backend denali_server if denali_policy

#當滿足tm_policy的策略時使用tm_server的backend

use_backend tm_server if tm_policy

#reqisetbe關(guān)鍵字定義,根據(jù)定義的關(guān)鍵字選擇backend

reqisetbe ^Host:\ img dynamic

reqisetbe ^[^\ ]*\ /(img|css)/ dynamic

reqisetbe ^[^\ ]*\ /admin/stats stats

#以上都不滿足的時候使用默認mms_server的backend

default_backend mms_server

#HAProxy錯誤頁面設(shè)置

errorfile 400 /home/admin/haproxy/errorfiles/400.http

errorfile 403 /home/admin/haproxy/errorfiles/403.http

errorfile 408 /home/admin/haproxy/errorfiles/408.http

errorfile 500 /home/admin/haproxy/errorfiles/500.http

errorfile 502 /home/admin/haproxy/errorfiles/502.http

errorfile 503 /home/admin/haproxy/errorfiles/503.http

errorfile 504 /home/admin/haproxy/errorfiles/504.http

##########backend的設(shè)置##############

backend mms_server

#http的7層模式

mode http

#負載均衡的方式,roundrobin平均方式

balance roundrobin

#允許插入serverid到cookie中,serverid后面可以定義

cookie SERVERID

#心跳檢測的URL,HTTP/1.1¥r¥nHost:XXXX,指定了心跳檢測HTTP的版本,XXX為檢測時請求

#服務(wù)器的request中的域名是什么,這個在應(yīng)用的檢測URL對應(yīng)的功能有對域名依賴的話需要設(shè)置

option httpchk GET /member/login.jhtml HTTP/1.1\r\nHost:member1.gemini.taobao.net

#服務(wù)器定義,cookie 1表示serverid為1,check inter 1500 是檢測心跳頻率

#rise 3是3次正確認為服務(wù)器可用,fall 3是3次失敗認為服務(wù)器不可用,weight代表權(quán)重

server mms1 10.1.5.134:80 cookie 1 check inter 1500 rise 3 fall 3 weight 1

server mms2 10.1.6.118:80 cookie 2 check inter 1500 rise 3 fall 3 weight 2

backend denali_server

mode http

#負載均衡的方式,source根據(jù)客戶端IP進行哈希的方式

balance source

#但設(shè)置了backup的時候,默認***個backup會優(yōu)先,設(shè)置option allbackups后

#所有備份服務(wù)器權(quán)重一樣

option allbackups

#心跳檢測URL設(shè)置

option httpchk GET /mytaobao/home/my_taobao.jhtml HTTP/1.1\r\nHost:my.gemini.taobao.net

#可以根據(jù)機器的性能不同,不使用默認的連接數(shù)配置而使用自己的特殊的連接數(shù)配置

#如minconn 10 maxconn 20

server denlai1 10.1.5.114:80 minconn 4 maxconn 12 check inter 1500 rise 3 fall 3

server denlai2 10.1.6.104:80 minconn 10 maxconn 20 check inter 1500 rise 3 fall 3

#備份機器配置,正常情況下備機不會使用,當主機的全部服務(wù)器都down的時候備備機會啟用

server dnali-back1 10.1.7.114:80 check backup inter 1500 rise 3 fall 3

server dnali-back2 10.1.7.114:80 check backup inter 1500 rise 3 fall 3

backend tm_server

mode http

#負載均衡的方式,leastconn根據(jù)服務(wù)器當前的請求數(shù),取當前請求數(shù)最少的服務(wù)器

balance leastconn

option httpchk GET /trade/itemlist/prepayCard.htm HTTP/1.1\r\nHost:trade.gemini.taobao.ne

server tm1 10.1.5.115:80 check inter 1500 rise 3 fall 3

server tm2 10.1.6.105:80 check inter 1500 rise 3 fall 3

######reqisetbe自定義關(guān)鍵字匹配backend部分#######################

backend dynamic

mode http

balance source

option httpchk GET /welcome.html HTTP/1.1\r\nHost:www.taobao.net

server denlai1 10.3.5.114:80 check inter 1500 rise 3 fall 3

server denlai2 10.4.6.104:80 check inter 1500 rise 3 fall 3

backend stats

mode http

balance source

option httpchk GET /welcome.html HTTP/1.1\r\n Host:www.163.com

server denlai1 10.5.5.114:80 check inter 1500 rise 3 fall 3

server denlai2 10.6.6.104:80 check inter 1500 rise 3 fall 3

以上是“HAProxy如何配置”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI