配置keepalived+lvs(DR模式)實現高可用的Web負載均衡(親測無坑)

當學習了LVS三種模式的負載均衡。以DR模式爲例,配置完後需要directord實現後端服務器的健康檢查。而且還無法解決調度器宕掉整個負載均衡失去作用的問題,感覺很不爽。那麼在DR模式下,爲何不用keepalived實現LVS的高可用,還能對後端服務器進行健康檢查。

keepalived實現LVS高可用的工作原理

用keepalived對後端web服務器的狀態進行健康檢查,如果某個web服務器宕機或者故障,keepalived將檢測到,並將故障的服務器從系統中剔除,同時使用其他服務器來代替該服務器的工作,當該服務器正常工作後,keepalived自動將該服務器添加到服務器羣。再通過配置主備keepalived,即需要配置兩臺主機的keeplived實現高可用。一臺主機上keeplived宕掉了,則有備份keeplived接管負載均衡調度。

實驗環境

主機名 功能
server4 負載均衡調度器+keepalived(MASTER)
server5 後端服務器1
server6 後端服務器2
server7 負載均衡調度器+keepalived(BACKUP)

一.keepalived+LVS(DR模式)負載均衡的配置

1.安裝虛擬服務器1.4.3版本的keepalived包,並解壓

tar zxf keepalived-1.4.3.tar.gz
cd keepalived-1.4.3
yum install -y openssl-devel.x86_64  ##安裝keepalived依賴包

2.編譯keepalived的源碼包

yum install -y gcc  ##因爲源碼是c編寫的,所以需要安裝gcc
./configure --prefix=/usr/local/keepalived --with-init=SYSV
make && make install

3.製作keepalived軟鏈接,方便管理和配置,並添加可執行權限

ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/sbin/keepalived  /sbin/
ln -s /ln -s /usr/local/keepalived/etc/keepalived/ /etc/ 
usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/
chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived 

4.將keepalived複製到server7

scp  -r /usr/local/keepalived/  server4:/usr/local/

5.在server4中修改keepalived的配置文件

vim  /etc/keepalived/keepalived.conf
! Configuration File for keepalived
##全局配置
global_defs {
   notification_email {
     root@localhost    ##健康檢查報告通知郵箱
   }
   notification_email_from keepalived@localhost  ##發送郵件的地址
   smtp_server 127.0.0.1   ##郵件服務器
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
##vrrpd的配置
vrrp_instance VI_1 {
    state MASTER   
    interface eth0		##綁定虛擬IP的指定節點
    virtual_router_id 1
    priority 100      ##優先級。主節點要比從節點優先級高
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.13.100     # 設定虛擬ip(啓動服務後,ip會自動添加在eth0中)
    }
}
##Apache服務的負載均衡
virtual_server 172.25.13.100 80 {
    delay_loop 1    ## 當RS服務器出問題後的反映時間
    lb_algo rr		  ## 指定LVS的算法,這裏選擇輪循rr
    lb_kind DR	  ## 指定LVS的模式,這裏選擇DR(直接路由模式)
    #persistence_timeout 50
protocol TCP
# RS的健康檢查機制
    real_server 172.25.13.5 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
    real_server 172.25.13.6 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

6.在server4上啓動keepalived服務
1)啓動前先關閉ipvsadm

systemctl stop ipvsadm			## 可以用ipvasdm -L查看策略,空表示關閉了

2)開啓keepalived服務

systemctl start keepalived

開啓後server4的eth0會自動添加上虛擬IP:172.25.13.100/32
在這裏插入圖片描述
7.在測試機中進行apache服務的測試
1)輪詢方式訪問web後端服務器server5和server6
在這裏插入圖片描述
2)當後端服務器server5的apache服務掛掉,keepalived可以檢測到,並將故障的服務器從系統中剔除。

[root@server5 ~]# systemctl stop httpd

在這裏插入圖片描述
3)當服務器工作正常後 Keepalived自動將服務器加入到服務器羣中

[root@server5 ~]# systemctl start httpd

在這裏插入圖片描述

二.keepalived+lvs(DR)實現高可用

爲解決當只有一臺keepalived主機時,如果它宕掉了,則數據無法轉發,更不可能實現負載均衡的問題,可以配置主備keepalived,即需要再配置一臺主機的keeplived實現高可用。一臺主機上keeplived宕掉了,則有備份keeplived接管負載均衡調度。

1.在server7製作keepalived軟鏈接,方便管理和配置,並添加可執行權限

ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/sbin/keepalived  /sbin/
ln -s /ln -s /usr/local/keepalived/etc/keepalived/ /etc/ 
usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/
chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived

2在server7中修改keepalived的配置文件(從節點狀態設置程BACKUP優先級修改50)
在這裏插入圖片描述
3開啓keepalived服務

systemctl start keepalived

4.在測試機上測試
1)當宕掉一臺keepalived主機(server4),此時server7的狀態爲MASTER,server4的狀態變成BACKUP

[root@server4 ~]# systemctl stop keepalived

在這裏插入圖片描述
在這裏插入圖片描述
2)當server4上的keepalived正常工作之後,由於優先級問題,server4又把主權拿過來,server7變成後備狀態

 [root@server4 ~]# systemctl start keepalived

在這裏插入圖片描述
也可以通過日誌來查看keepalived主機的狀態!!!

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