haproxy配置

Haproxy配置php

     3.2 配置haproxy前端

       haproxy安裝後會在etc/haproxy目錄下生成haproxy.cfg的配置文件,大多數的配置選項都在這個文件中定義nginx

打開配置文件而後修改零添加下列選項:web

backend webserverredis

balance     roundrobin算法

cookie      serverid insert nocache indirecta後端

server      web1 192.168.137.131:80 check cookie webserver1服務器

server      web2 192.168.137.128:80 check cookie webserver2cookie

1.5 Haproxy 配置文件詳解
1.5.1 global 全局配置session

主要控制haproxy啓動前的進程及相關設置

global
log 127.0.0.1 local0 # 未定義日誌級別,記錄全部日誌
log 127.0.0.1:514 local1 notice #定義haproxy日誌級別[error warringinfo debug] 經過syslog服務處理
daemon # 之後臺形式運行harpoxy
nbproc 1 # 設置進程數量 設置過程數時,該值的設置應該和服務器的核心數一致
pidfile /usr/local/haproxy/conf/haproxy.pid #haproxy 進程PID文件
ulimit-n 819200 # ulimit 的數量限制
maxconn 4096 #默認最大鏈接數,需考慮ulimit-n限制
chroot /usr/local/haproxy/var/chroot # chroot運行路徑
uid/user 99/haproxy #運行haproxy 用戶或UID
gid/group 99/haproxy #運行haproxy 用戶組或gid
debug #haproxy 調試級別,建議只在開啓單進程的時候調試
spread-checks 3 # 健康檢查間隔時間
quiet # 安靜模式,啓動時無輸出
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin # 開啓socket支持
stats timeout 2m
1.5.2 default 默認配置

若是frontend backend listen段未設置,則默認使用defaults段的設置

defaults
log global
mode http #默認的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OK
option httplog #日誌類別,採用httplog
option dontlognull #不記錄健康檢查日誌信息
retries 2 #兩次鏈接失敗就認爲是服務器不可用,也能夠經過後面設置
option forwardfor #若是後端服務器須要得到客戶端真實ip須要配置的參數,能夠從Http Header中得到客戶端ip
option httpclose #每次請求完畢後主動關閉http通道,haproxy不支持keep-alive,只能模擬這種模式的實現
#option redispatch #當serverId對應的服務器掛掉後,強制定向到其餘健康的服務器,之後將不支持
option abortonclose #當服務器負載很高的時候,自動結束掉當前隊列處理比較久的連接
maxconn 4096 #默認的最大鏈接數
timeout connect 5000ms #鏈接超時
timeout client 30000ms #客戶端超時 (根據客戶的習慣,通常設置在20-30s之間)
timeout server 30000ms #服務器超時 (後端服務器的超時之和不要大於客戶訪問的超時時間)
#timeout check 2000 #心跳檢測超時
#timeout http-keep-alive10s #默認持久鏈接超時時間
#timeout http-request 10s #默認http請求超時時間
#timeoutqueue 1m #默認隊列超時時間
balance roundrobin #設置默認負載均衡方式,輪詢方式
#balance source # 設置默認負載均衡方式,相似於nginx的ip_hash
#balnace leastconn #設置默認負載均衡方式,最小鏈接數

1.5.3 listen 統計頁面

listen admin_stats #設置Frontend和Backend的組合體,監控組的名稱,按須要自定義名稱
bind 0.0.0.0:1080 # 監控網卡地址 0.0.0.0或* 表明監控全部
mode http #http的7層模式
option httplog #採用http日誌格式
option forwardfor #記錄客戶端真實IP
cookie SERVERID insert indirect
timeout server 15s
timeout connect 15s
#log 127.0.0.1 local0 err #錯誤日誌記錄
maxconn 10 #默認的最大鏈接數
stats enable # 開啓狀態
stats refresh 30s #統計頁面自動刷新時間
stats uri /stats #統計頁面url
stats realm XingCloud\ Haproxy #統計頁面密碼框上提示文本
stats auth admin:admin #設置監控頁面的用戶和密碼:admin,能夠設置多個用戶名
stats auth Frank:Frank #設置監控頁面的用戶和密碼:Frank
stats hide-version #隱藏統計頁面上HAProxy的版本信息
stats admin if TRUE #設置手工啓動/禁用,後端服務器(haproxy-1.4.9之後版本)
balance roundrobin # 負載均衡策略
server web01 192.168.137.101:80 check port 2000 fall 3
server web02 192.168.137.102:80 check port 2000 fall 3

########設置haproxy 錯誤頁面#####

errorfile 403 /home/haproxy/haproxy/errorfiles/403.http
errorfile 500 /home/haproxy/haproxy/errorfiles/500.http
errorfile 502 /home/haproxy/haproxy/errorfiles/502.http
errorfile 503 /home/haproxy/haproxy/errorfiles/503.http
errorfile 504 /home/haproxy/haproxy/errorfiles/504.http

1.5.4 frontend 前端配置

bind 10.204.3.250:80 #VIP
#這裏建議使用bind *:80的方式,要否則作集羣高可用的時候有問題,vip切換到其餘機器就不能訪問了。
acl web hdr(host) -i www.abc.com
#acl後面是規則名稱,-i是要訪問的域名,
acl img hdr(host) -i img.abc.com

1.5.5 backend 後端配置

backend www.abc.com # webserver做用域 可使用域名的方式 www.a.com
mode http
balance roundrobin # #負載均衡算法 banlance roundrobin 輪詢,
balance source 保存session值,支持static-rr,leastconn,first,uri等參數

 

 

 

 

 

 

【注意】 ACL 名稱能夠重複定義
1.10.1 基於ACL其於URI的跳轉

acl web_a hdr(host) –i www.baidu.com
acl web_b hdr(host) –i map.baidu.com
use_backend www if web_a
use_backend map if web_b
default_backend www

【實例講解】

  1. 當用戶輸入的域名是www.baidu.com時,就跳轉到後端地址池中的名爲www的池定義的服務器
  2. 當用戶輸入的域名是map.baidu.com時,就跳轉到後端地址池中的名爲map的池定義的服務器
  3. 當用戶輸入的域名沒有匹配到上面的acl,就默認走www的池

 

 

1.10.2 基於acl實現URI地址目錄的跳轉
函數: path.beg 匹配跟徑開頭

acl img path.beg /images/
acl php path.beg /php/
use_backend nginx_img if img
use_backend nginx_php if php
default_backend nginx_php

backend nginx_img

modehttp   
balanceroundrobin    
serverserver2.204.3.23:80checkportinterfall     108050005

backend nginx_php

modehttp   
balanceroundrobin    
serverserver2.204.3.24:80checkportinterfall     108050005

【實例講解】
當用戶輸入的路徑是/images/時,就跳轉到後端nginx_img池中定義的服務器
當用戶輸入的路徑是/php/時,就跳轉到後端nginx_php池中定義的服務器
當用戶輸入的不包含上面路徑時,默認走nginx_php

 

 

 

配置haproxy代理訪問
end下配置多行server:##在haproxy.cfg中添加以下段配置;cas有多個節點時,back
        default_backend root
 
backend root
        mode http
        option forwardfor
        option httpchk GET /
        balance source
        server wget 10.10.110.101:8080 check inter 10s
        server wget 10.10.110.102:8080 check inter 10s

 

server這個關鍵字用來定義多個後端真實服務器

使用格式爲:

server <name> <address>[:port] [param*]

其中,每一個參數含義以下:

<name>爲後端真實服務器指定一個內部名稱,隨便定義一個便可。

<address>後端真實服務器的IP 地址或主機名。

<port>指定鏈接請求發往真實服務器時的目標端口。在未設定時,將使用客戶端請求時的同一端口。

[param*]爲後端服務器設定的一系參數,可用參數很是多,這裏僅介紹經常使用的一些參數:

check表示啓用對此後端服務器執行健康狀態檢查。

inter設置健康狀態檢查的時間間隔,單位爲毫秒。

rise設置從故障狀態轉換至正常狀態須要成功檢查的次數,例如。「rise 2」表示2 次檢查正確就認爲此服務器可用。

fall設置後端服務器從正常狀態轉換爲不可用狀態須要檢查的次數,例如,「fall 3」表示3 次檢查失敗就認爲此服務器不可用。

cookie爲指定的後端服務器設定cookie 值,此處指定的值將在請求入站時被檢查,第一次爲此值挑選的後端服務器將在後續的請求中一直被選中,其目的在於實現持久鏈接的功能。上面的「cookie server1」表示web1 的serverid 爲server1。同理,「cookie server2」表示web2 的serverid 爲server2。

weight設置後端真實服務器的權重,默認爲1,最大值爲256。設置爲0 表示不參與負載均衡。

backup設置後端真實服務器的備份服務器,僅僅在後端全部真實服務器均不可用的狀況下才啓用。

 

cookie表示容許向cookie 插入SESSION_COOKIE,每臺服務器的SERVERID 可在下面的server 關鍵字中使用cookie 關鍵字定義。

 

option httpchk此選項表示啓用HTTP 的服務狀態檢測功能。HAProxy 做爲一款專業的負載均衡器,它支持對backend 部分指定的後端服務節點的健康檢查,以保證在後端backend 中某個節點不能服務時,把從frotend 端進來的客戶端請求分配至backend 中其餘健康節點上,從而保證總體服務的可用性。

  「optionhttpchk」的用法以下:

  option httpchk <method> <uri> <version>

    其中,各個參數的含義以下:

    method表示HTTP 請求的方式,經常使用的有OPTIONS、GET、HEAD 幾種方式。通常的健康檢查能夠採用HEAD 方式進行,而不是才採用GET 方式,這是由於HEAD 方式沒有數據返回,僅檢查Response 的HEAD 是否是200 狀態。所以相對與GET 來講,HEAD 方式更快,更簡單。

    uri表示要檢測的URL 地址,經過執行此URL,能夠獲取後端服務器的運行狀態。在正常狀況下將返回狀態碼200,返回其餘狀態碼均爲異常狀態。

    version指定心跳檢測時的HTTP 的版本號。

相關文章
相關標籤/搜索