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:CentOS 6.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
[root@haproxy-1 ~]# yum -y install haproxy
3、haproxy的配置文件如下
global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile      /var/run/haproxy.pid
    maxconn    4000
    user        haproxy
    group      haproxy
    daemon
defaults
    mode                  http
    log                    global
    option                 httplog
    option                 dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.1/8
    option                 redispatch
    retries                 3
    timeout http-request     10s
    timeout queue          1m
    timeout connect         10s
    timeout client           1m
    timeout server          1m
    timeout http-keep-alive  10s
    timeout check          10s
    maxconn              3000
    stats   uri             /haproxy-stats
frontend static *:80
     acl url_static path_beg   -i  /static /images /javascript /stylesheets
     acl url_static path_end    -i  .jpg .gif .png .css .js 
     use_backend static if url_static
     default_backendapp
backend static 
     balance roundrobin 
     server static 192.168.31.105:80 check 
backend app
     balance roundrobin 
     server app1 192.168.31.212:80 check 
  #兩個haproxy節點的配置一樣


4、測試haproxy


wKiom1XpqIPgg-sDAACz6E-Ez8I781.jpg 

wKioL1XpquKjc-CxAABP_wNTeEs188.jpg 

4安裝keepalived

1、源碼包安裝
2、RPM包安裝,我選擇RPM包安裝
  [root@haproxy-1 haproxy]# yum install keepalived -y
3、主節點的keepalived的配置文件如下,備節點的只需修改 \
MASTER改爲BACKUP,priority 100改爲priority 99。
global_defs {
   notification_email {
     root@localhostt
   }
   notification_email_from haproxy@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_haproxy {
    script "lsof -i:80 &>/dev/null"
    interval 1
    weight -2
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章