码迷,mamicode.com
首页 > 其他好文 > 详细

基于LVS的Keepalived的简单实现

时间:2015-10-13 15:27:23      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:lvs   keepalived   均衡负载   

1、理论部分

基于lvs的负载均衡无法检测Real Server的状态,当Real Server的服务单点故障,Director照样把请求转发给故障的机器,造成请求无法得到正常的服务。

所以就需要引入一种检测机制来弥补缺陷,这就需要Keepalived来实现,他不但可以检测Real Server的状态,同时也可以检测Director的状态,达到Failover的目的。

2、实验部分

2.1、实验基础

LVS均衡负载基础:

http://cmdschool.blog.51cto.com/2420395/1702421

以上基础并增加一台副Director主机

2.2、主机信息

Dr1:

director ipaddress=10.168.0.89

vip ipaddress=10.168.0.91

hostname=dr1

Dr2:

director ipaddress=10.168.0.90

vip ipaddress=10.168.0.91

hostname=dr2

Rs1:

real ipaddress=10.168.0.94

vip-lo ipaddress=10.168.0.91

hostname=rs1

Rs2:

real ipaddress=10.168.0.95

vip-lo ipaddress=10.168.0.91

hostname=rs2

2.3、yum源安装

In Director

yum install -y keepalived

2.4、设置配置文件

2.4.1、step1

IN DR1

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 {
        10.168.0.91
    }
}
virtual_server 10.168.0.91 80 {
    delay_loop 6                  #(每隔10秒查询realserver状态)
    lb_algo wlc                  #(lvs 算法)
    lb_kind DR                  #(Direct Route)
    persistence_timeout 60        #(同一IP的连接60秒内被分配到同一台realserver)
    protocol TCP                #(用TCP协议检查realserver状态)

    real_server 10.168.0.92 80 {
        weight 100               #(权重)
        TCP_CHECK {
        connect_timeout 10       #(10秒无响应超时)
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
real_server 10.168.0.93 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

IN DR2

vim编辑/etc/keepalived/keepalived.conf

vrrp_instance VI_1 {
    state BACKUP   #主服务器上为 MASTER
    interface eth0
    virtual_router_id 51
    priority 90  #主服务器上为100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.168.0.91
    }
}
virtual_server 10.168.0.91 80 {
    delay_loop 6                  #(每隔10秒查询realserver状态)
    lb_algo wlc                  #(lvs 算法)
    lb_kind DR                  #(Direct Route)
    persistence_timeout 60        #(同一IP的连接60秒内被分配到同一台realserver)
    protocol TCP                #(用TCP协议检查realserver状态)

    real_server 10.168.0.92 80 {
        weight 100               #(权重)
        TCP_CHECK {
        connect_timeout 10       #(10秒无响应超时)
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
real_server 10.168.0.93 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

注意,DR1&DR2差异仅如下:

state MASTER <-> state BACKUP

priority 100 <-> priority 90

2.4.2、step2

IN DR1&DR2

开启端口转发:

echo 1 > /proc/sys/net/ipv4/ip_forward

2.4.3、step3

IN RS1&RS2

启动脚本:

/usr/local/sbin/lvs_dr_rs.sh

2.4.4、step4

IN DR1&DR2

启动keeplive服务:

/etc/init.d/keepalived start

注意:

以下脚本不需要再像在LVS实验中那样执行“/usr/local/sbin/lvs_dr.sh”

本文出自 “老谭linux博客” 博客,请务必保留此出处http://cmdschool.blog.51cto.com/2420395/1702499

基于LVS的Keepalived的简单实现

标签:lvs   keepalived   均衡负载   

原文地址:http://cmdschool.blog.51cto.com/2420395/1702499

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!