lvs DR模式 +keepalived 實現directory 高可用、httpd服務負載均衡集羣

功能:

lvs+keepalived高可用負載均衡集羣中:

·keepalived負責後端real server健康狀態檢查

  如果一臺real server服務出現故障,則會從集羣服務中剔除,等恢復之後再自動加入到集羣。

·keepalived負責負載均衡器(directory server)高可用

  A和B兩臺虛擬機裝lvs+keepalived(主)和lvs+keepalived(備),但是對外表現爲一個虛擬IP,主服務器會發送消息給備服務器,當備服務器收不到消息的時候,認爲主出現故障,然後接管虛擬IP繼續提供服務,如果主節點恢復,則再次接管虛擬IP,提供服務。

原理:

·使用layer3工作時,keepalived定期向服務器羣組中發送icmp的數據包,如果某臺服務器IP地址沒有激活,則認爲失效,並剔除(典型例子就是 這臺服務器被非法關機)

·使用layer4工作時,比如是web 80端口的負載均衡,keepalived檢測後端服務器羣組中的80端口有沒有啓動,如果沒有,則認爲失效,並剔除

·使用layer7工作時,根據用戶設定,如果與用戶設定的不符,則認爲失效,並剔除

三個模塊:

·core:負責主進程的啓動、維護,全局配置文件的加載和解析

·health_check:負載健康狀態檢查

·vrrp:實現vrrp協議

實驗:

·主節點和備節點把keepalived啓動,web1和web2啓動httpd,

架構設計:

  利用keepalived來實現lvs的Directory server的高可用,再利用lvs和keepalived的高可用,來實現Web服務的負載均衡!架構圖如下

6466723_1368679018UowU.png

本文中的keepalived是檢測Real server的健康狀態以及負載均衡器的主和備之間的故障轉移。

檢測real server健康狀態:如果有一臺web服務器宕機或者出現故障,keepalived會檢測到,並從集羣羣組中剔除,等恢復後,再自動添加進來

負載均衡器故障轉移:一個web服務器至少需要兩臺keepalived,一臺爲主節點(Master),一臺爲備節點(backup),但對外表現爲一個虛擬IP,主服務器會發送組播,如果備服務器收不到vrrp包就認定主服務器出現故障,就會接管虛擬IP,繼續對外提供服務,從而保證了高可用性。

搭建:

重點  時間同步

      各個節點能互相解析

(1)準備環境

    1.主備節點都裝lvs和keepalived

     2.web1和web2都裝httpd

     3.關閉防火牆

     4.關閉SELinux

     5.web1和web2都要抑制ARP

(2)主節點

安裝ipvsadm和keepalived   yum -y install keepalived ipvsadm
關閉防火牆                service iptables  stop
關閉SELinux               setenforce 0

修改keepalived配置文件  vim /etc/keepalived/keepalived.conf

vrrp_instance VI_1 {
    state MASTER              #備用服務器上爲 BACKUP
    interface eth0
    virtual_router_id 51
    priority 100              #備用服務器上爲90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.7.5
    }
}
virtual_server 172.16.7.5 80 {
    delay_loop 6                  #每隔6秒查詢realserver狀態
    lb_algo wrr                   #lvs 算法
    lb_kind DR                    #lvs 模式
    persistence_timeout 60        #同一IP的連接60秒內被分配到同一臺realserver
    protocol TCP                  #指定轉發協議類型,有TCP和UDP兩種  

real_server 172.16.7.3 80 {
        weight 3                  #權重
        TCP_CHECK {
        connect_timeout 3         #表示3秒無響應,則超時
        nb_get_retry 3            #表示重試次數 
        delay_before_retry 3      #表示重試間隔 
        connect_port 80           #端口爲80
        }
    }
real_server 172.16.7.4 80 {
        weight 1
        TCP_CHECK {
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

(3)備節點

安裝ipvsadm和keepalived   yum -y install keepalived ipvsadm
關閉防火牆                service iptables  stop
關閉SELinux               setenforce 0

 修改keepalived配置文件 vim /etc/keepalived/keepalived.conf

 只需要修改兩處:

               NO.1  “state MASTER”  修改爲  “state BACKUP”

               NO.2  “priority 100”  修改爲  “priority  99”

(4)web1和web2

安裝ipvsadm和keepalived   yum -y install keepalived ipvsadm
關閉防火牆                service iptables  stop
關閉SELinux               setenforce 0  
安裝httpd                 yum -y install httpd
抑制ARP                   echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce     
                          echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce  
                          echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  
                          echo  1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore 
 添加VIP      ifconfig lo:0 192.168.1.10 broadcast 192.168.1.10 netmask 255.255.255.255
 添加路由     route add  -host 192.168.1.10 dev lo:0

測試

  1. 測試健康檢查:主節點和備節點啓動keepalived,web1和web2啓動httpd,主節點上查看ipvs規則,能看到web1和web2,ip addr 查看主節點vip,停止web1的httpd服務,主節點上再次查看ipvs規則,web1規則消失,測試成功

  2. 測試故障轉移:主節點和備節點啓動keepalived,web1和web2啓動httpd。停止主節點上的keepalived,查看備節點是否接管VIP,繼續提供web服務,如果能,測試成功

  3. 測試故障恢復:主節點出現故障,keepalived出現故障停止,備節點接管VIP,繼續提供web服務。如果主節點恢復,重新啓動keepalived,查看vip是否漂移回來,主節點接管備節點服務,繼續提供服務。


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