haproxy(簡稱HA)
HAProxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支持虛擬主機,它是免費、快速並且可靠的一種解決方案
http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz
# tar zcvf haproxy-1.3.20.tar.gz
# cd haproxy-1.3.20
# vi Makefile
PREFIX = /usr/local/haproxy (原爲PREFIX = /usr/local)
:wq
# make TARGET=linux26
# make install
haproxy應用時有2種方式,linsten方式和frontend+backend方式
方式一(listen):
# vi /usr/local/haproxy/haproxy.cfg
global
log 127.0.0.1 local0
maxconn 4096
chroot /usr/local/haproxy
uid 99
gid 99
daemon
nbproc 1
pidfile /usr/local/haproxy/haproxy.pid
defaults
log global
log 127.0.0.1 local3
option httplog
option httpclose
option dontlognull
option forwardfor
option redispatch
retries 2
maxconn 2000
mode http
stats uri /haproxy-status
stats auth ming:123456
stats refresh 30s
monitor-uri /site_status
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen web 192.168.1.10:1080
balance roundrobin
server yang 192.168.1.10:80 check
server ming 192.168.1.12:80 check
:wq
方式二(frontend+backend):
# vi /usr/local/haproxy/haproxy.cfg
global
log 127.0.0.1 local0
maxconn 4096
chroot /usr/local/haproxy
uid 99
gid 99
daemon
nbproc 1
pidfile /usr/local/haproxy/haproxy.pid
defaults
log global
log 127.0.0.1 local3
option httplog
option httpclose
option dontlognull
option forwardfor
option redispatch
retries 2
maxconn 2000
mode http
stats uri /haproxy-status
stats auth ming:123456
stats refresh 30s
monitor-uri /site_status
contimeout 5000
clitimeout 50000
srvtimeout 50000
frontend web 192.168.1.10:1080
default_backend aa
backend aa
balance roundrobin
server yang 192.168.1.10:80 check
server ming 192.168.1.12:80 check
:wq
啓動haproxy
# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
開機自啓動:
# vi /etc/rc.local
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
:wq
查看haproxy頁面:
http://192.168.1.10:1080/haproxy-status
用戶名:ming 密碼:123456
驗證效果:
在2主機上分別建2個頁面1.html 內容寫各自主機ip
http://192.168.1.10:1080/1.html
第一次會顯示192.168.1.10
第二次會顯示192.168.1.12
注:
1、1080是haproxy的端口號,是隨意寫的,可改
2、可以把ip改成域名(如www.ming.com),甚至可以把web的80端口改了,讓haproxy用80,這樣訪問時就不能再加端口了
3、電腦重啓後/etc/init.d/httpd 會被改爲/etc/init.d/httpd.rpmorig ,要自己改回來,chkconfig開機啓動命令也要再重寫一遍,原因不詳
附:
global:參數是進程級的,通常和操作系統(OS)相關
defaults:配置默認參數,這些參數可以被利用配置到frontend,backend,listen組件
frontend:接收請求的前端虛擬節點,Frontend可以根據規則直接指定具體使用後端的 backend(可動態選擇)
backend:後端服務集羣的配置,是真實的服務器,一個Backend對應一個或者多個實體服務器
listen:Frontend和Backend的組合體
log 127.0.0.1 local0 使用系統的syslog記錄日誌
maxconn 4096 限制單個進程的最大連接數
option redispatch 在連接失敗或斷開的情況下,允許當前會話被重新分發
retries 2 設置在一個服務器上鍊接失敗後的重連次數
balance roundrobin 設置服務器分配算法爲輪詢(即交替訪問)
option dontlognull 不記錄空連接
contimeout 5000 設置等待連接到服務器成功的最大時間
clitimeout 50000 設置客戶端的最大超時時間
srvtimeout 50000 設置服務器端的最大超時時間
nbproc 1 指定作爲守護進程運行的時候,要創建多少個進程,默認只創建一個,需要daemon開啓模式
daemon 讓進程在後臺運行,即作爲守護進程運行,正式運行的時候開啓,此處先禁止,等同於在命令行添加參數 -D
debug 設置debug模式運行,與daemon模式互斥,等同於在命令行添加參數 -d
1080 監聽端口(隨意)
mode http http的7層模式
stats refresh 30s 統計頁面自動刷新時間
stats uri /haproxy-stats 統計頁面URL
stats realm Haproxy\ Statistics 統計頁面密碼框上提示文本
stats auth ming:123456 統計頁面用戶名和密碼設置
stats hide-version 隱藏統計頁面上HAProxy的版本信息
monitor-uri /site_status 網站健康檢測URL,用來檢測HAProxy管理的網站是否可以用,正常返回200,不正常返回500
weight -- 調節服務器的負重
check -- 允許對該服務器進行健康檢查
inter -- 設置連續的兩次健康檢查之間的時間,單位爲毫秒(ms),默認值 2000
rise -- 指定多少次連續成功的健康檢查後,即可認定該服務器處於可操作狀態,默認值 2
fall -- 指定多少次不成功的健康檢查後,認爲服務器爲當掉狀態,默認值 3
balance roundrobin 簡單的輪詢
balance source 根據請求的源IP
balance uri 根據請求的url
balance url_param 根據請求RUL中的參數