1. 程式人生 > >LVS+Keepalived實現高可用

LVS+Keepalived實現高可用

LVS;Keepalive

LVS可以實現負載均衡,但是不能夠進行健康檢查,比如一個rs出現故障,LVS 仍然會把請求轉發給故障的rs服務器,這樣就會導致請求的無效性。keepalive 軟件可以進行健康檢查,而且能同時實現 LVS 的高可用性,解決 LVS 單點故障的問題,其實 keepalive 就是為 LVS 而生的。

LVS-DR+Keepalived

一、實驗環境:

Keepalived1 + lvs1(Director1):192.168.0.48
Keepalived2 + lvs2(Director2):192.168.0.58
Real server1:192.168.0.18
Real server2:192.168.0.28
VIP: 192.168.0.38

二、安裝系統軟件

LB+LVS+Keepalived的兩個節點
        yum install ipvsadm keepalived -y
RS+Nginx的兩個節點
        yum install epel-release -y
        yum install nginx -y
        chkconfig nginx on
        service nginx start

三、設置配置腳本

兩個RS節點
# vim /usr/local/sbin/lvs_dr_rs.sh
#! /bin/bash
vip=192.168.0.38
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip 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
2節點rs 上分別執行腳本:
bash /usr/local/sbin/lvs_dr_rs.sh

兩個keepalived節點:
Master節點:
vim /etc/keepalived/keepalived.conf
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.0.38
    }
}
virtual_server 192.168.0.38 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 0
    protocol TCP
real_server 192.168.0.18 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
real_server 192.168.0.28 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}

backup節點:
vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.0.38
    }
}
virtual_server 192.168.0.38 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 0
    protocol TCP
real_server 192.168.0.18 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
real_server 192.168.0.28 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}
keepalived的2個節點執行如下命令,開啟轉發功能:
# echo 1 > /proc/sys/net/ipv4/ip_forward

先主後從分別啟動keepalive
service keepalived start

三、驗證結果
1、訪問VIP,輪詢到兩個後端web服務器。
2、LVS主節點掛了,不影響服務的正常運行。

LVS+Keepalived實現高可用