haproxy安裝及配置

2021-08-20 18:40:28 字數 4034 閱讀 7708

一、haproxy簡介

haproxy是乙個使用c語言編寫的自由及開放源**軟體[1],其提供

高可用性

、 負載均衡

,以及基於

tcp和 http

的應用程式

**。

haproxy特別適用於那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。haproxy執行在當前的硬體上,完全可以支援數以萬計的

併發連線

。並且它的執行模式使得它可以很簡單安全的整合進您當前的架構中, 同時可以保護你的web伺服器不被暴露到網路上。

haproxy實現了一種事件驅動

,單一程序模型,此模型支援非常大的併發連線數。

多程序或多執行緒模型受記憶體限制 、系統排程器限制以及無處不在的鎖限制,很少能處理數千併發連線。

事件驅動模型

因為在有更好的資源和時間管理的使用者空間(user-space) 實現所有這些任務,所以沒有這些問題。此模型的弊端是,在多核系統上,這些程式通常擴充套件性較差。這就是為什麼他們必須進行優化以 使每個cpu時間片(cycle)做更多的工作。

包括 github

、 bitbucket

[3]、stack overflow[4]、

reddit

、 tumblr

、 twitter

[5][6]和

tuenti

[7]在內的知名**,及亞馬遜網路服務系統都使用了haproxy。

二 安裝#解壓

tar -zxvf haproxy-1.3.20

.tar.gzcd haproxy-1.3.20#安裝

make target=linux2628 arch=x86_64 prefix=/usr/local/

haproxy

make install prefix=/usr/local/

haproxy

#引數說明

target=linux26

#核心版本,使用uname -r檢視核心,如:2.6.18-371.el5,此時該引數就為linux26;kernel 大於2.6.28的用:target=linux2628

arch=x86_64

#系統位數

prefix=/usr/local/haprpxy

#/usr/local/haprpxy為haprpxy安裝路徑

三 配置

安裝完畢後,進入安裝目錄配置檔案,預設情況下目錄裡是沒有.cfg配置檔案的,可以回到安裝檔案目錄下將examples下的haproxy.cfg拷貝到usr/local/haproxy下。

# this config needs haproxy-1.1.28 or haproxy-1.2.1

global

log 127.0.0.1 local0 #日誌輸出配置,所有日誌都記錄在本機,通過local0輸出

log 127.0.0.1 local1 notice #定義日誌級別[error warring info debug]

maxconn 4096 #最大連線數,需考慮ulimit -n 限制

chroot /usr/local/haproxy #chroot執行路徑 

uid 99 #以什麼身份執行程序

gid 99

#user haproxy 執行haproxy的使用者

#group haproxy 執行haproxy的組

daemon #以後臺形式執行haproxy

nbproc 2 #設定程序數量

pidfile /usr/local/haproxy/haproxy.pid #程序pid檔案路徑

#debug #haproxy除錯級別,建議只在開啟單程序的時候啟動除錯

#quiet

defaults

log global

log     127.0.0.1     local3

mode http #預設的模式mode ,tcp是4層,http是7層,health只會返回ok

option httplog #日誌級別,採用httplog

option dontlognull #不記錄健康檢查日誌資訊

option  forwardfor #如果後端伺服器需要獲得客戶機真實ip需要配置的引數,可以從http header中獲取客戶端ip

option  httpclose #每次請求完畢後主動關閉http通道,haproxy不支援keep-alive,只能模擬這種模式的實現

retries 3 #三次連線失敗就認為是伺服器不可用,也可以通過後面設定

option  redispatch #當serverid對應的伺服器掛掉後,強制定向到其他健康的伺服器,以後將不支援

maxconn 2000 #最大連線數

contimeout 5000 #連線超時

clitimeout 50000 #客戶端超時

srvtimeout 50000 #伺服器超時

stats uri  /stats #統計頁面url

stats  auth     frank:frank #設定監控頁面的使用者和密碼

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

stats  refresh 30s

###設定haproxy錯誤頁面

bind *:80 #這裡建議使用bind *:80的方式,要不然做集群高可用的時候有問題,vip切換到其他機器上就不能訪問了

acl web hdr(host) -i bbs.king.org #acl後面是規則名稱,-i為忽略大小寫,後面跟的是要訪問的網域名稱,如果訪問www.king.org這個網域名稱,就觸發web規則

use_backend webserver if web #如果上面定義的web規則被觸發,即訪問www.king.org,就將請求分發到webserver這個作用域

default_backend dynamic #不滿足則相應backend的預設頁面

backend webserver #webserver作用域

mode http #使用http模式

balance roundrobin #負載均衡模式,roundrobin負載輪詢,balance source儲存session值,支援static-rr,leastconn,first,uri等引數

option httpchk get /index.html #健康檢查 ,如果訪問不到index.html就不分發給它

option httpclose :haproxy會針對客戶端的第一條請求的返回新增cookie並返回給客戶端,客戶端傳送後續請求時會傳送

此cookie到haproxy,haproxy會針對此cookie分發到上次處理此請求的伺服器上,如果伺服器不能忽略

此cookie值會影響處理結果。如果避免這種情況配置此選項,防止產生多餘的cookie資訊。

haproxy安裝配置

haproxy提供高可用性 負載均衡以及基於tcp和http應用的 支援虛擬主機,它是免費 快速並且可靠的一種解決方案。haproxy特別適用於那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。haproxy執行在當前的硬體上,完全可以支援數以萬計的併發連線。並且它的執行模式使得它可以...

haproxy安裝 配置

1 官網 2 安裝yum list grep haproxy yum install haproxy3 目錄結構 etc rc.d init.d haproxy etc haproxy 配置檔案目錄 etc logrotate.d haproxy etc sysconfig haproxy var ...

HAProxy 日誌輸出及配置

正所謂,沒有軟體敢說沒有bug,人無完人,software is not perfect software。是軟體就可能存在bug,那麼如果出現bug,我們就要分析對我們業務的影響及可能如何避免bug的再現。haproxy也不例外,也可能在特殊場景下出現bug,因此我們就有必要記錄下必要的日誌資訊。...