haproxy+keepalived實現高可用叢集
haproxy+keepalived實現高可用性叢集
一、HAProxy簡介
HAProxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支援虛擬主機,它是免費、快速並且可靠的一種解決方案。HAProxy特別適用於那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。HAProxy執行在時下的硬體上,完全可以支援數以萬計的併發連線。並且它的執行模式使得它可以很簡單安全的整合進您當前的架構中,同時可以保護你的web伺服器不被暴露到網路上。
HAProxy實現了一種事件驅動、單一程序模型,此模型支援非常大的併發連線數。多程序或多執行緒模型受記憶體限制、系統排程器限制以及無處不在的鎖限制,很少能處理數千併發連線。事件驅動模型因為在有更好的資源和時間管理的使用者端(User-Space)
二、Keepalived簡介
Keepalived的作用是檢測web伺服器的狀態,如果有一臺web伺服器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的web伺服器從系統中剔除,當web伺服器工作正常後Keepalived自動將web伺服器加入到伺服器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的web伺服器。
三、安裝及配置
1、架構圖
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
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
#把haproxy服務停止後
轉載於:https://blog.51cto.com/xiaofengmo/1691421