通过keepalived搭建高可用的LVS负载均衡集群

时间:2022-01-07 22:06:31

一、keepalived软件简介

keepalived是基于vrrp协议实现高可用功能的一种软件,它可以解决单点故障的问题,通过keepalived搭建一个高可用的LVS负载均衡集群时,keepalived还能检测后台服务器的运行状态。

二、vrrp协议原理简介

vrrp(虚拟路由器冗余协议),是为了解决网络上静态路由出现的单点故障的问题,举个例子,如下图

通过keepalived搭建高可用的LVS负载均衡集群

主机A和B均在同一个局域网内,C和D均是该局域网的网关,即A和B想与外网通信,需指网关到C或D,那究竟指向C好还是指向D好呢?都不好!当指向C时,如果C出故障时,局域网内的主机就没法与外界通信了,指向D问题也是一样,vrrp这时候就有用了,在C和D之间运行vrrp协议,vrrp将C和D虚拟成一个设备E,对外提供一个虚拟ip地址,A和B将网关指向虚拟ip地址即可,在vrrp组内,将各成员分为MASTER和BACKUP(一个组内只能有1个MASTER,可以有多个BACKUP),MASTER就是实际上提供服务的节点,MASTER和BACKUP的选举通过优先级选举,优先级高的即为MASTER,VRRP运行时MASTER定时发送VRRP通告信息,表示MASTER工作正常,BACKUP只接收VRRP数据,不发送数据,如果一定时间内没有接收到MASTER的通告信息,各BACKUP将宣告自己成为MASTER,发送通告信息,重新进行MASTER选举状态。


三、实验部分

ip地址分配:

    VIP:192.168.56.110

    Director Server1 IP:192.168.56.101

    Director Server2 IP:192.168.56.102

    Realserver1 IP:192.168.56.103

    Realserver2 IP:192.168.56.104

LVS相关配置方案:

    模型:DR

    调度算法:rr(轮循)

安装配置过程:

通过keepalived搭建LVS高可用集群配置非常简单,lvs的配置和节点的监控均在keepalived配置文件中配置完成

1、安装前先检查/usr/src/kernels目录下有没有内核的源码,后面keepalived编译时要用到,如果没有,则先安装

yum install kernel-devel

2、编译安装keepalived

tar zxvf keepalived-1.2.23.tar.gz cd keepalived-1.2.23./configure --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.32-642.4.2.el6.x86_64/make && make installln -sv /usr/local/sbin/keepalived /sbin/keepalived    #创建链接(不创建的话启动/etc/init.d/keepalived脚本时会报错)

3、修改配置文件/etc/keepalived/keepalived.conf

#全局定义部分global_defs {   notification_email {     root@lzs.com     zsgg@lzs.com   }                    #设置发生异常时向哪个邮箱发通知,可以设>置多个邮箱,每个一行,服务器上的sendmail服务必须开启   notification_email_from keepalived@lzs.com   #设置邮件的发送方   smtp_server 192.168.56.1    #设置smtp服务器的ip地址   smtp_connect_timeout 30      #设置连接smtp服务器的超时时间   router_id LVS_LZS            #keepalived服务器的标识,将显示在报警邮件的主题>中      }#定义vrrp实例vrrp_instance VI_1 {    state MASTER                #指定此主机的角色是MASTER,注意要大写    interface eth0              #指定绑定的接口,即配置虚拟ip地址的接口    virtual_router_id 51        #指定VRID,该标识为一个数字,同一个vrrp实例中的MASTER和BACKUP的VRID必须一致    priority 100                #指定优先级,MASTER的优先级必须高于BACKUP    advert_int 1                #指定MASTER发送通告信息的时间间隔    authentication {            #设置同一个vrrp组中各节点的验证类型和验证密码,>即同一vrrp组下,各节点的验证类型和验证密码必须一致才能互相通信        auth_type PASS          #设置验证类型,有PASS和HA两种        auth_pass 1111          #设置验证密码,    }    virtual_ipaddress {         #设置虚拟ip地址,可多个        192.168.56.110        192.168.56.120    }}#虚拟服务器定义(在这部分配置LVS)virtual_server 192.168.56.110 80 {      #设置虚拟服务器的ip和端口,用空格隔开    delay_loop 6                #每隔6秒对realserver进行健康状态检查    lb_algo rr                  #设置调度算法    lb_kind DR                  #设置LVS的类型,有DR、NAT和TUN    persistence_timeout 50      #设置会话保持时间,用户在请求页面后,若在50s内有操作时,请求会一直分发到同一服务节点上,并重新开始计时    protocol TCP                #指定转发协议类型,有UDP和TCP    real_server 192.168.56.103 80 {     #配置realserver的ip和端口,用空格隔开        weight 1                        #设置权重        TCP_CHECK {                     #对realserver状态检查的设置            connect_timeout 3           #3秒无响应时超时            nb_get_retry 3              #表示重试的次数            delay_before_retry 3        #表示重试的时间间隔        }    }    real_server 192.168.56.104 80 {        weight 1        TCP_CHECK {            connect_timeout 3            nb_get_retry 3            delay_before_retry 3        }    }}

    注意要点:keepalived启动时默认查找/etc/keepalived/keepalived.conf配置文件,若想指定配置文件,可”keepalived -f 配置文件 “启动。


4、将MASTER的配置文件复制到BACKUP上,并修改配置文件中的state和priority

state BACKUPpriority 70    #改得比MASTER小


5、配置realserver服务器

    1、编写启动脚本

vim /etc/init.d/lvs_rs#! /bin/bashVIP=192.168.56.110case $1 instart)        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        /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up        ;;stop)        /sbin/ifconfig lo:0 down        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 "usage:$0 {start|stop}"        exit 1        ;;esac

    2、添加执行权限

chmod +x /etc/init.d/lvs_rs

    3、启动脚本

./etc/init.d/lvs_rs

6、启动MASTER和BACKUP上的keepalived服务

/etc/init.d/keepalived start


至此,搭建的LVS集群系统已正常运行了~~~~



本文出自 “90后” 博客,请务必保留此出处http://lzs66.blog.51cto.com/9607068/1847035