LVS-DR+keepalived高可用羣集

LVS-DR+keepalived高可用羣集

  • LVS負載均衡採用直連路由工作模式(LVS-DR),採用半開放的網絡結構,結構與IP隧道模式類似,但各節點並不是分散在各地,而是與調度器位於同一個物理網絡,負載調節器與各節點服務器通過本地網絡連接,不需要建立專用的IP隧道。

  • Keepalived採用VRRP熱備份協議,以軟件的方式實現服務機的多機熱備功能。其主要用來提供故障切換和健康檢查功能——判斷LVS負載調度器、節點服務器的可能性,及時隔離並替換爲新的服務器,當故障主機恢復後將其重新加入羣集。

LVS-DR+keepalived結構拓補圖

LVS-DR+keepalived高可用羣集

實驗環境

主機 操作系統 IP 軟件
LVS主調度器 CentOS-7.3x86_64 192.168.100.101 keepalived、ipvsadm
LVS從調度器 CentOS-7.3x86_64 192.168.100.102 keepalived、ipvsadm
web1服務器 CentOS-7.3x86_64 192.168.100.103 httpd
web2服務器 CentOS-7.3x86_64 192.168.100.104 httpd
  • 注:VIP爲192.168.100.50

LVS調度服務器設置

  • 主從調度服務器設置基本相同,不同之處將會註明;

開啓路由轉發功能,關閉proc響應重定向功能;

vi /etc/sysctl.conf

net.ipv4.ip_forward=1   //開啓路由轉發功能
net.ipv4.conf.all.send_redirects = 0        
net.ipv4.conf.default.send_redirects = 0    
net.ipv4.conf.eth0.send_redirects = 0       
//關閉proc響應重定向功能

sysctl -p //立即生效

設置虛擬網卡,並啓動虛擬網卡;

cd /etc/sysconfig/network-scripts

cp ifcfg-ens33 ifcfg-ens33:0

vim ifcfg-ens33:0

DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.100.10
NETMASK=255.255.255.255     //注意:子網掩碼必須全爲1

ifup ens33:0

配置負載分配策略(編寫腳本方便管理);

cd /etc/init.d

vim dr.sh //腳本名

#!/bin/bash
GW=192.168.100.1
VIP=192.168.100.50
RIP1=192.168.100.103
RIP2=192.168.100.104
case "$1" in
start)
        /sbin/service ipvsadm start
        /sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up
        /sbin/route add -host $VIP dev ens33:0
        /sbin/ipvsadm -A -t $VIP:80 -s rr
        /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
        /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
        echo "ipvsadm starting --------------------[ok]"
        ;;
        stop)
        /sbin/ipvsadm -C
    /sbin/service ipvsadm stop
        ifconfig ens33:0 down
        route del $VIP
        echo "ipvsamd stoped----------------------[ok]"
         ;;
        status)
        if [ ! -e /var/lock/subsys/ipvsadm ];then
        echo "ipvsadm stoped---------------"
        exit 1
                else
                echo "ipvsamd Runing ---------[ok]"
        fi
        ;;
        *)
        echo "Usage: $0 {start|stop|status}"
        exit 1
        esac
        exit 0

chmod +x dr.sh //提權

service dr.sh start //開啓服務

配置keepalived(編寫腳本方便管理);

yum install keepalived -y

vi /etc/keepalived/keepalived.conf

global_defs {
  notification_email {
     [email protected]
   }
   notification_email_from benet [email protected]
   smtp_server 127.0.0.1        //指定本地
   smtp_connect_timeout 30
   router_id LVS_01             //指定名稱,備份服務名稱不同
}

vrrp_instance VI_1 {
    state MASTER                //備份服務器爲BACKUP
    interface ens33             //接口爲ens33      
    virtual_router_id 10        //組號;備份服務器相同
    priority 100                //優先級;備份服務器小於主服務器
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass abc123
    }
    virtual_ipaddress {
        192.168.100.50          //指定VIP地址
    }
}

virtual_server 192.168.100.10 80 {
     delay_loop 6
     lb_algo rr
     lb_kind DR                 //指定工作模式
     persistence_timeout 60
     protocol TCP

    real_server 192.168.100.103 80 {    //web1服務器IP和端口
        weight 1                //權重
        TCP_CHECK {             //健康檢查方式
         connect_port 80        //端口
             connect_timeout 3  //連接超時
             nb_get_retry 3     //重試次數
             delay_before_retry 3   //重試間隔時間(秒)
    }
}
    real_server 192.168.100.104 80 {    //web2服務器IP和端口
        weight 1
        TCP_CHECK {
         connect_port 80
             connect_timeout 3
             nb_get_retry 3
             delay_before_retry 3
     }
  }
}

systemctl start keepalived.service //啓動服務

ip addr show dev ens33:0 //查看虛擬網卡

關閉防火牆和安全功能

systemctl stop firewalld.service

setenforce 0

web服務器配置

  • 兩臺web服務器配置相同,設置不同的測試首頁作爲區分。

安裝http服務,啓動http服務,關閉防火牆與安全功能;

yum install httpd -y

systemctl start httpd.service

systemctl stop firewalld.service

setenforce 0

創建http服務的測試首頁,/var/www/html (兩臺web服務器測試首頁內容不同);

echo "this is web1 test " > /var/www/html/index.html //web1服務器

echo "this is web2 test " > /var/www/html/index.html //web2服務器

配置虛擬IP地址(VIP):ifcfg-lo:0(若使用遠程連接的虛擬機,切勿重啓,否則會中斷遠程連接)

cd /etc/sysconfig/network-scripts

cp ifcfg-lo ifcfg-lo:0

vim ifcfg-lo:0

DEVICE=lo:0
IPADDR=192.168.100.50
NETMASK=255.255.255.255
ONBOOT=yes

調整proc響應參數(使用腳本,腳本文件提權,啓動腳本);

cd /etc/init.d/

vim web.sh //腳本名

#!/bin/bash
VIP=192.168.100.10
        case "$1" in
        start)
                ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
                /sbin/route add -host $VIP dev lo:0
                echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
                echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
                echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
                echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
                sysctl -p >/dev/null 2>&1
                echo "RealServer Start OK "
                ;;
        stop)
                ifconfig lo:0 down
                route del $VIP /dev/null 2>&1
                echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
                echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
                echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
                echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
                echo "RealServer Stopd"
                ;;
        *)
                echo "Usage: $0 {start|stop}"
                exit 1
        esac
        exit 0

chmod +x web.sh

service web.sh start

啓動虛擬網卡;

ifup lo:0

在虛擬機中可輸入 firefox "http://127.0.0.1/" & 命令使用火狐瀏覽器進入測試首頁

service web.sh stop
service web.sh start //(建議重啓服務)

LVS-DR+keepalived高可用羣集LVS-DR+keepalived高可用羣集

登錄測試

-在客戶機瀏覽器中輸入VIP:192.168.100.50,即可將進入web服務器測試首頁,多刷新幾次,可進入連個不同的測試首頁;
LVS-DR+keepalived高可用羣集LVS-DR+keepalived高可用羣集

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