天天看點

HAProxy的安裝和部署

原文出處: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端口。

繼續閱讀