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

lvs+keepalived实现高可用集群

时间:2015-08-28 13:38:04      阅读:310      评论:0      收藏:0      [点我收藏+]

标签:服务器   lvs+keepalived   均衡器   集群   

LVS+Keepalived 介绍

LVS

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种IP负载均衡技术(LVS/NAT、LVS/TUN和LVS/DR);
十种调度算法(rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。注:加权最少链接(Weighted Least Connections)(wlc) 目前最优秀的调度算法


LVS集群系统的优缺点:

(1) 抗负载能力强

工作在第4层仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;无流量,同时保证了均衡器I/O的性能不会受到大流量的影响;

(2) 工作稳定

自身有完整的双机热备方案,如LVS+Keepalived(黄金组合)和LVS+Heartbeat;    

(3) 应用范围比较广

可以对所有应用做负载均衡;    

(4) 配置性比较低

既是优点,也是缺点,因为没有太多配置,所以并不需要太多接触,大大减少了人为出错的几率;    

LVS集群系统的缺点:

(1) 软件本身不支持正则处理,不能做动静分离,这就凸显了Nginx/HAProxy+Keepalived的优势。     

(2) 如果网站应用比较庞大,LVS/DR+Keepalived就比较复杂了,特别是后面有Windows Server应用的机器,

实施及配置还有维护过程就比较麻烦,相对而言,Nginx/HAProxy+Keepalived就简单多了


Keepalvied

Keepalived在这里主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现


系统环境:Centos6.3_x64


IP配置信息列表:

lvs-master:192.168.1.250

lvs-backup:192.168.1.252

lvs-vip:192.168.1.249

readserver1:192.168.1.251

readserver2:192.168.1.253

配置要求:关闭selinux,关闭iptables或放通相应规则

同步各个服务器的时间


注:关于LVS+keepalvied的HA方案,完全由keepalived.conf一个文件搞定,LVS不用配置,keepalived会调用LVS,特此声明!

一、安装LVS和keepalived

LVS软件包括二部分:

① IPVS模块,LVS已经是Linux标准内核的一部分,直接被编译在内核中!

② IPVS管理工具IPVSadm ,如:IPVSadm-1.26

查看IPVS模块是否真的编译到内核中去了,如下图所示:

技术分享

由上可知,有3个项,说明这个功能已经编译到内核中了


这里我就直接使用yum安装,源码安装就不再演示

分别在lvs-master和lvs-backup上安装lvs和keepalived

[root@localhost ~]# yum install -y ipvsadm keepalived

添加keepalived为系统服务

[root@localhost ~]# chkconfig --add keepalived

[root@localhost ~]# chkconfig --list keepalived
keepalived      0:off 1:off 2:on 3:on 4:on 5:on 6:off


二、利用Keepalvied实现负载均衡和和高可用性

1、配置在主负载均衡服务器上配置keepalived.conf
#vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {                       #全局配置
   notification_email {
         cnseek@gmail.com
   }
   notification_email_from sns-lvs@gmail.com
   smtp_server 127.0.0.1
  # smtp_connect_timeout 30
   router_id LVS_DEVEL
}

# 20081013 written by :netseek
# VIP1
vrrp_instance VI_1 {         #vrrp配置
    state MASTER             #备份服务器上将MASTER改为BACKUP   
    interface eth0
    virtual_router_id 51
    priority 100    # 备份服务上将100改为90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.249   
        #(如果有多个VIP,继续换行填写.)
    }
}

virtual_server 192.168.1.249 80 {
    delay_loop 6                  #(每隔10秒查询realserver状态)
    lb_algo wrr                  #(lvs 算法)
    lb_kind DR                  #(Direct Route)
    persistence_timeout 60        #(同一IP的连接60秒内被分配到同一台realserver)
    protocol TCP                #(用TCP协议检查realserver状态)

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


2、BACKUP服务器同上配置,只需将红色标示的部分改一下即可.

3、启动keepalived

[root@localhost ~]# service keepalived start


三、配置readserver

为两台realserver安装http,这里不再演示

配置readserver脚本

[root@localhost ~]# vi realserver.sh

#!/bin/bash
# Written by NetSeek 
# description: Config realserver lo and apply noarp 
WEB_VIP=192.168.1.249

. /etc/rc.d/init.d/functions

case "$1" in
start)
       ifconfig lo:0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP
       /sbin/route add -host $WEB_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 $WEB_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 Stoped"
       ;;
status)
        # Status of LVS-DR real server.
        islothere=`/sbin/ifconfig lo:0 | grep $WEB_VIP`
        isrothere=`netstat -rn | grep "lo:0" | grep $web_VIP`
        if [ ! "$islothere" -o ! "isrothere" ];then
            # Either the route or the lo:0 device
            # not found.
            echo "LVS-DR real server Stopped."
        else
            echo "LVS-DR Running."
        fi
;;
*)
        # Invalid entry.
        echo "$0: Usage: $0 {start|status|stop}"
        exit 1
;;
esac
exit 0


赋予执行权限,执行该脚本即可


四、验证

查看lvs-master是否绑定vip

技术分享技术分享

而此时lvs-backup是没有绑定vip的


查看lvs服务是否正常

技术分享技术分享


到此配置就全部完成,接下来就到测试了。


五、测试

负载均衡测试:

为了便于测试,我们在realserver1和realserver2分别配置www服务的index.html网页且内容也好识别,浏览器访问vip能否按照设定算法分别访问realserver1和realserver2


高可用测试:

为了模拟故障,先将lvs-master上的Keepalived服务停止或者干脆关掉节点lvs-master,然后观察备用lvs-backup上Keepalived是否获得VIP地址,即VIP 192.168.1.249

查看命令如上,或查看日志tail -f /var/log/messages


故障切换测试:

故障切换是测试在某个节点出现故障后,keepalived监控模块能否及时发现,然后屏蔽故障节点,同时将服务转移到正常节点上执行之。

停掉节点realserver2服务,模拟该节点出现故障,然后查查看主、备机器日志信息。




lvs+keepalived实现高可用集群

标签:服务器   lvs+keepalived   均衡器   集群   

原文地址:http://8400659.blog.51cto.com/8390659/1689221

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