原文出處:http://blog.ehomy.net/archives/153
1.haproxy安裝
使用yum install haproxy進行一步安裝,很簡單
2.配置說明
#########################################################################
# HAProxy 配置檔案
#########################################################################
global
# 使用系統的syslog記錄日志(通過udp,預設端口号為514)
log 127.0.0.1 local0 # info [err warning info debug]
chroot /home/user/haproxy
#限制單個程序的最大連接配接數
maxconn 65535
# 讓程序在背景運作,即作為守護程序運作,正式運作的時候開啟,此處先禁止,等同于在指令行添加參數 -D
# daemon
# 指定作為守護程序運作的時候,要建立多少個程序,預設隻建立一個,需要daemon開啟模式
# nbproc 1
# 設定debug模式運作,與daemon模式隻能互斥,等同于在指令行添加參數 -d
# debug
pidfile /home/user/haproxy/logs/haproxy.pid # not work
defaults
# 在連接配接失敗或斷開的情況下,允許目前會話被重新分發
option redispatch
# 設定在一個伺服器上連結失敗後的重連次數
retries 2
# 設定伺服器配置設定算法
balance roundrobin
# 不記錄空連接配接
option dontlognull
# 設定等待連接配接到伺服器成功的最大時間
timeout connect 5000ms
# 設定用戶端的最大逾時時間
timeout client 1800000ms
# 設定伺服器端的最大逾時時間
timeout server 1800000ms
# Enable the sending of TCP keepalive packets on both sides, clients and servers
# NOTE: 在伺服器CPU強勁的情況下,最好不要開啟保活,這樣可減少資源消耗
#option tcpka
##############################統計頁面配置##################################
listen admin_stat
# 監聽端口
bind *:8011
# http的7層模式
mode http
option httplog
log global
# 統計頁面自動重新整理時間
stats refresh 30s
# 統計頁面URL
stats uri /admin?stats
# 統計頁面密碼框上提示文本
stats realm Haproxy\ Statistics
# 統計頁面使用者名和密碼設定
stats auth admin:admin
# 隐藏統計頁面上HAProxy的版本資訊
stats hide-version
###########################TCP連接配接的監聽配置################################
listen tcp-in
bind *:2211
mode tcp
# 日志記錄選項
option tcplog
log global
# 背景伺服器
# weight -- 調節伺服器的負重
# check -- 允許對該伺服器進行健康檢查
# inter -- 設定連續的兩次健康檢查之間的時間,機關為毫秒(ms),預設值 2000(ms)
# rise -- 指定多少次連續成功的健康檢查後,即可認定該伺服器處于可操作狀态,預設值 2
# fall -- 指定多少次不成功的健康檢查後,認為伺服器為當掉狀态,預設值 3
# maxconn -- 指定可被發送到該伺服器的最大并發連接配接數
server localhost 0.0.0.0:2233 weight 3 check inter 2000 rise 2 fall 3
server 192.168.1.100 192.168.1.100:2233 weight 3 check inter 2000 rise 2 fall 3
server 192.168.1.101 192.168.1.101:2233 weight 3 check inter 2000 rise 2 fall 3
#########################HTTP連接配接的監聽配置################################
listen http-in
bind *:2212
mode http
option httplog
log global
# 設定健康檢查模式
#option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
#option smtpchk
# 背景伺服器
server localhost 0.0.0.0:2234 weight 3 check inter 2000 rise 2 fall 3
server 192.168.1.100 192.168.1.100:2234 weight 3 check inter 2000 rise 2 fall 3
server 192.168.1.101 192.168.1.101:2234 weight 3 check inter 2000 rise 2 fall 3
3.日志的輸出問題
根據說明,haproxy的日志輸出使用了系統的日志程式,比如syslogd, syslog-ng。這兩個日志系統使用上其主要的差別就是其配置檔案的格式不同,考慮syslog-ng算是syslog的一個更新版,在性能和功能性上都要優于syslogd,是以這裡主要介紹的是配置syslog-ng來實作haproxy的日志輸出。
我的機器環境,一如既往:SUSE Linux Enterprise Server 11 (x86_64),
日志程式預設是syslog-ng。
I. 編輯系統日志服務的配置檔案/etc/sysconfig/syslog,檢視SYSLOG_DAEMON的值,這個值指定了所要使用的日志服務程式,預設為空,表示自動檢測,如果不确定,可以顯式指定SYSLOG_DAEMON = “syslog-ng”。
II. 編輯syslog-ng的配置檔案/etc/syslog-ng/syslog-ng.conf,在末尾添加如下代碼:
注:這裡指定了日志輸出到/var/log目錄下,工作正常,若指定輸出到/home等其他子目錄下卻會失敗,具體原因不詳,待查。另,haproxy的日志也可通過此方法将其發送到某個日志伺服器用于統一處理,具體可檢視syslog-ng的相關文檔。
III. 重新開機syslog服務,使用如下指令:
service syslog restart
IV. 編輯haproxy的配置檔案,假定名為haproxy.cfg
在所需要做日志記錄的子產品(比如,global, default等)添加如下代碼:
注:local0 在兩個配置檔案中的一緻。
這會檢視日志基本上就OK了。
tail -f /var/log/haproxy.log
注:其他須解決的日志相關問題
a. haproxy目前的日志全部記錄在一個檔案中,考慮按日期将其分段成不同檔案存儲;
b. 日志不能輸出到除/var/log/外的其他目錄
在這個配置檔案中,使用了listen塊,而沒有用frontend和backend。listen塊定義了一個完整的代理過程,同時包含了前端的監聽套接字和背景的伺服器描述,從這個層面考慮,使用frontend和backend,似乎顯得條理要清楚點。不過測試發現使用listen塊的時候,輸出的日志會記錄下背景伺服器的健康狀況,而使用frontend和backend則不會。
對于健康檢查,推薦開開啟比較好,否則當背景伺服器當掉的時候,haproxy将不會将連接配接重定向到下一個可用的伺服器上。
根據以上配置的統計頁面url,可通路:http://host_ip:2212/admin?stats 進入統計頁面。注:端口号是你配置的前置http端口。