1. 程式人生 > 實用技巧 >haproxy+keepalived實現高可用叢集

haproxy+keepalived實現高可用叢集


haproxy+keepalived實現高可用性叢集

一、HAProxy簡介

HAProxy提供高可用性、負載均衡以及基於TCPHTTP應用的代理,支援虛擬主機,它是免費、快速並且可靠的一種解決方案。HAProxy特別適用於那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。HAProxy執行在時下的硬體上,完全可以支援數以萬計的併發連線。並且它的執行模式使得它可以很簡單安全的整合進您當前的架構中,同時可以保護你的web伺服器不被暴露到網路上。

HAProxy實現了一種事件驅動、單一程序模型,此模型支援非常大的併發連線數。多程序或多執行緒模型受記憶體限制、系統排程器限制以及無處不在的鎖限制,很少能處理數千併發連線。事件驅動模型因為在有更好的資源和時間管理的使用者端(User-Space)

實現所有這些任務,所以沒有這些問題。此模型的弊端是,在多核系統上,這些程式通常擴充套件性較差。這就是為什麼他們必須進行優化以使每個CPU時間片(Cycle)做更多的工作。

二、Keepalived簡介

Keepalived的作用是檢測web伺服器的狀態,如果有一臺web伺服器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的web伺服器從系統中剔除,當web伺服器工作正常後Keepalived自動將web伺服器加入到伺服器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的web伺服器。

三、安裝及配置

1、架構圖

wKiom1cq2e6A2-RBAAA_zLbNIBc473.png


2、環境

OS:CentOS6.5

HAProxy:1.5.4

Keepalived:1.2.13

VIP:192.168.31.200

Master:192.168.31.148

Backup:192.168.31.170

Web1:192.168.31.105

Web2:192.168.31.212

3、安裝haproxy

1、可以使用原始碼包安裝
2、可以使用RPM包安裝,這裡我使用RPM包的方式安裝haproxy
[[email protected]~]#yum-yinstallhaproxy
3、haproxy的配置檔案如下
global
log127.0.0.1local2
chroot/var/lib/haproxy
pidfile/var/run/haproxy.pid
maxconn4000
userhaproxy
grouphaproxy
daemon
defaults
modehttp
logglobal
optionhttplog
optiondontlognull
optionhttp-server-close
optionforwardforexcept127.0.0.1/8
optionredispatch
retries3
timeouthttp-request10s
timeoutqueue1m
timeoutconnect10s
timeoutclient1m
timeoutserver1m
timeouthttp-keep-alive10s
timeoutcheck10s
maxconn3000
statsuri/haproxy-stats
frontendstatic*:80
aclurl_staticpath_beg-i/static/p_w_picpaths/javascript/stylesheets
aclurl_staticpath_end-i.jpg.gif.png.css.js
use_backendstaticifurl_static
default_backendapp
backendstatic
balanceroundrobin
serverstatic192.168.31.105:80check
backendapp
balanceroundrobin
serverapp1192.168.31.212:80check
#兩個haproxy節點的配置一樣


4、測試haproxy


wKiom1XpqIPgg-sDAACz6E-Ez8I781.jpg

wKioL1XpquKjc-CxAABP_wNTeEs188.jpg

4安裝keepalived

1、原始碼包安裝
2、RPM包安裝,我選擇RPM包安裝
[[email protected]haproxy]#yuminstallkeepalived-y
3、主節點的keepalived的配置檔案如下,備節點的只需修改\
MASTER改為BACKUP,priority100改為priority99。
global_defs{
notification_email{
[email protected]
}
notification_email_from[email protected]
smtp_server127.0.0.1
smtp_connect_timeout30
router_idLVS_DEVEL
}
vrrp_scriptchk_haproxy{
script"lsof-i:80&>/dev/null"
interval1
weight-2
}
vrrp_instanceVI_1{
stateMASTER
interfaceeth0
virtual_router_id51
priority100
advert_int1
authentication{
auth_typePASS
auth_pass1111
}
virtual_ipaddress{
192.168.31.200
}
track_script{
chk_haproxy
}
}


4、測試keepalived


wKiom1XpqKei1iZxAANQWGSorcA147.jpg

wKiom1XpqIPgg-sDAACz6E-Ez8I781.jpg

#把haproxy服務停止後


wKioL1XpqrOg6hwmAANVVFBB4YU145.jpg

wKiom1XpqIPgg-sDAACz6E-Ez8I781.jpg

j_0017.gif


轉載於:https://blog.51cto.com/xiaofengmo/1691421