9.负载均衡lvs+keepaived

1、安装lvs

(LB端)

#/etc/init.d/keepalived stop                       #停止keepalived高可用

#/application/nginx/sbin/nginx -s stop             #停止nginx反向代理

rpm -qa ipvsadm                                    #检查是否已安装软件

yum -y install ipvsadm

ls /usr/src/kernels

uname -r

#yum -y update kernel kernel-devel

#我遇到过的坑  uname看到的内核和安装的内核版本不一致 需要更新内核 再重启!重启!重启!

#reboot

ln -s /usr/src/kernels/$(uname -r) /usr/src/linux

lsmod |grep ip_vs

2、配置lvs

(LB端)

ip addr add 10.0.0.3/24 dev eth0 label eth0:0      #添加vip

#ipvsadm --help                                    #查看帮助

ipvsadm -C                                         #清空所有

ipvsadm -A -t 10.0.0.3:80 -s wrr                   #-A 添加虚拟服务 -t 指定tcp服务地址 -s 调度算法

ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.7:80 -g -w 1   #添加节点Rs -g 表示dr模式

ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.8:80 -g -w 1

ipvsadm --set 30 5 60                     #--set tcp tcpfin udp set connection timeout values

ipvsadm -Ln                                        #查看ipvs情况

#以上服务器端搭建完毕!


服务端删除节点:

ipvsadm -d -t 10.0.0.3:80 -r 10.0.0.8:80

ipvsadm -d -t 10.0.0.3:80 -r 10.0.0.7:80

ip addr del 10.0.0.3/24 dev eth0

虽然lvs没有自动剔除坏节点的功能,但是可以通过编写脚本检测进行删除节点!

3、绑定VIP

(RS端)

ip addr add 10.0.0.3/32 dev lo label lo:0          #绑定vip,此处必须和LB端的vip保持一致

route add -host 10.0.0.3 dev lo                    #添加静态路由,可有可无。

4、抑制ARP

(RS端)

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

5、keepalived

直接管理ipvs

(LB端)

cd /etc/keepalived/

cat >keepalived.conf<<EOF

! Configuration File for keepalived

global_defs {

   router_id LVS_DEVEL

}


vrrp_instance VI_1 {

    state MASTER                                   #主

    interface eth0

    virtual_router_id 51

    priority 150

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

#        10.0.0.3/24 dev eth0 label eth0:1      #参照老师的操作 这里是个天坑呀   因为和后面rs端vip的掩码不一样会导致访问不通   千万别写24了呀    此事耽误了我2天时间!

         10.0.0.3    dev eth0 label eth0:1

    }

}


virtual_server 10.0.0.3 80 {

    delay_loop 6

    lb_algo rr

    lb_kind DR

    nat_mask 255.255.255.0

    persistence_timeout 50

    protocol TCP


real_server 10.0.0.7 80 {

    weight 1

    TCP_CHECK {

    connect_timeout 5

    nb_get_retry 3

    delay_before_retry 3

    connect_port 80

    }

}

real_server 10.0.0.8 80 {

        weight 1

        TCP_CHECK {

        connect_timeout 5

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

}

}

EOF

ipvsadm -C                                    #清空所有    

ipvsadm -Ln                                   #查看ipvs情况

/etc/init.d/keepalived start


ipvsadm -Ln

tailf /var/log/messages                       #检查日志


for n in `seq 5`;do curl 10.0.0.3;sleep 1;done         #客户机的检测脚本

总结

keepalived+lvs的DR模式

处理了两次大坑:

1、疑问:安装lvs的时候需要 ln -s /usr/src/kernels/`uname -r` /usr/src/linux 创建不成功软链接? 解决方法:后面经过鸡血哥老师的聊天指导,通过 yum -y update kernel kernel-devel  然后重启解决!

原因:我之前没有更新过内核 也yum update过,但是没有重启没有生效!重启生效呀!

2、 按照老师的视频来的,结果keepalived.conf的vip地址写的是10.0.0.3/24端绑定lo网卡的却是10.0.0.3/32,结果导致keepalived的健康检测老是后面节点rs不通!

解决方法:修改keepalived.conf的vip为10.0.0.0 dev eth0 label eth0:1  解决问题!


参考别人的链接:http://www.cnblogs.com/ivictor/p/5261445.html

LVS+Keepalived搭建MyCAT高可用负载均衡集群