企業級web服務集羣實戰——LVS+Keepalived實現高可用負載均衡

LVS+Keepalived實現高可用負載均衡

負載均衡方案系統架構拓撲圖

在這裏插入圖片描述

安裝LVS和keepalived軟件包

節點規劃

主機名 IP 角色 備註
DS1 IP1:192.168.213.136 VIP:192.168.213.200 LVS負載調度器1 VIP爲LVS的浮動IP
DS2 IP1:192.168.213.161 VIP:192.168.213.200 LVS負載調度器2 VIP爲LVS的浮動IP
RS1 192.168.213.129 真實服務器1 提供WEB服務
RS2 192.168.213.135 真實服務器2 提供WEB服務
NFS 192.1 68.213.233 數據共享服務器 提供網頁共享數據SER

初始環境配置

(1)配置主機名(略)
(2)處理防火牆(略)
(3)同步時鐘源(略)

搭建LVS-DR集羣

注意:測試好集羣之後,將綁定的浮動IP摘掉。
建議:兩個節點依次配置測試,配置後,不用保存。

安裝keepalived

在兩個負載均衡器上配置keepalived

配置keepalived實現LVS負載均衡

LVS MASTER keepalived.conf

[root@ds1 ~]# cd /etc/keepalived/
[root@ds1 keepalived]# cp -p keepalived.conf{,.bak}
[root@ds1 keepalived]# vim keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_1
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    lvs_sync_daemon_interface ens33
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.213.200/24 dev ens33 label ens33:1
    }
}
virtual_server 192.168.213.200 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 0	#此值爲0,方便測試,每次刷新頁面結果會不一樣
    protocol TCP
    real_server 192.168.213.129 80 {
        weight 1
        TCP_CHECK {
        connect_timeout 8
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.213.135 80 {
        weight 1
        TCP_CHECK {
        connect_timeout 8
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
}

LVS BACKUP keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    lvs_sync_daemon_interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.213.200/24 dev ens33 label ens33:1
    }
}
virtual_server 192.168.213.200 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 0
    protocol TCP
    real_server 192.168.213.129 80 {
        weight 1
        TCP_CHECK {
        connect_timeout 8
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.213.135 80 {
        weight 1
        TCP_CHECK {
        connect_timeout 8
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
}

重啓keepalived systemctl restart keepalived

結果測試

查看浮動ip

在DR1 (主) 上查看IP信息
在這裏插入圖片描述在DR2 (備) 上查看IP信息
在這裏插入圖片描述由此可見浮動IP在負載均衡主節點上

在網頁上訪問測試

在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述

測試故障切換

(1)在linux終端上寫測試腳本

# vim keepalived.sh
#!/bin/bash
URL="http://192.168.213.200"
while true
do
    curl -I $URL >/dev/null 2>&1
    if [ $? -eq 0 ]
    then
        echo "$URL is 0K ..."
    else
        echo "$URL is ERR..."
    fi
    sleep 2
done

注意:該測試節點是任意的一個linux節點,只要和192.168.213.200網段通信正常即可
運行腳本,持續監控 sh keepalived.sh
模擬故障 systemctl stop keepalived
查看ds2網卡,浮動IP已經漂移過來了
在這裏插入圖片描述查看腳本監控結果,業務沒有中斷

sh keepalived.sh
http://192.168.213.200 is 0K ...
……
http://192.168.213.200 is 0K ...
http://192.168.213.200 is 0K ...

模擬故障恢復 systemctl start keepalived
查看IP,浮動IP再次漂移到主節點上;查看腳本監控結果,業務正常

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