keepdalived+lvs 负载均衡

来源:互联网 发布:阿里云 cdn 备案 编辑:程序博客网 时间:2024/05/29 07:51

#######keepdalived+lvs################

########keepalived安装################
######内核结合否则不能vrrp####
ln -s /usr/src/kernels/2.6.18-194.el5-i686/ /usr/src/linux

yum -y install yum-fastestmirror
yum -y install gcc
###在编译时,keepalived+lvs依赖openssl和内核源代码 ######
yum -y install openssl-devel kernel-devel

ln -s /usr/src/kernels/2.6.18-308.11.1.el5-i686/ /usr/src/linux

wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz

tar zxvf keepalived-1.1.19.tar.gz

cd keepalived-1.1.19
./configure --prefix=/usr/local/keepalived/

###前三项 Use IPVS Framework ,IPVS sync daemon support,Use VRRP Framework为yes 编译成功##########

make
make install

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/  ###命令
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/  ###配置文件
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/   ###启动项
chkconfig --level 35 keepalived on
mkdir /etc/keepalived
vi /etc/keepalived/keepalived.conf

global_defs {

        notification_email {

               kongdeqian@163.com

        }

        notification_email_from kongdeqian@163.com

        smtp_server 127.0.0.1

        smtp_connect_timeout 30

        router_id test1

 

}

 

vrrp_instance VI_1 {

        state BACKUP

        interface eth0

        virtual_router_id 51

        priority 100   #权重

        advert_int 1   #检测间隔
 
 nopreempt #不抢占 

        smtp_alert

        authentication {

                auth_type PASS

                auth_pass 123

        }

        virtual_ipaddress {

                192.168.1.100    #虚拟IP

        }

}
########## WEB负载均衡#############
virtual_server 192.168.1.100 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 192.168.1.80 80 {
        weight 100               #(权重)
        TCP_CHECK {
        connect_timeout 10       #(10秒无响应超时)
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.1.81 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

############# LVS 安装##############

wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz

tar -zxvf ipvsadm-1.24.tar.gz

cd ipvsadm-1.24
make
make install

###若ipvsadm 能查看则证明安装成功
###ip a 查看虚拟IP

###########在备用服务器上########
如复制虚拟机网卡不能启动,则删除ifcfg-eth0 中的HWADDR(网卡MAC)
priority 90   #权重

###若要双方不抢占,则双方都要关闭防火墙 iptales -F
或者,iptables命令双方添加组播地址:iptables -I RH-Firewall-1-INPUT -d 224.0.0.18 -j ACCEPT (若重启iptables 会失效)

#####在每一台real上运行增加lookup#####
vi /root/lvs.sh

#!/bin/bash

SNS_VIP=192.168.1.100  ###虚拟IP
 
/etc/rc.d/init.d/functions
 
case "$1" in
start)
       /sbin/ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
       /sbin/route add -host $SNS_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)
       /sbin/ifconfig lo:0 down
       /sbin/route del $SNS_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"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac
 
exit 0