这两天搭建了一个lvs+keepalived 做mysql从库负载均衡的环境,遇到了一个很头疼的问题,vip不通,无法使用,以下是整个过程的详解,请大神帮忙分析下:IP分配:
 lvsmaster:192.168.20.180
mysql从库:192.168.20.182、192.168.20.183
             VIP:192.168.20.253环境:
1、三台机器的selinux以及iptables都已经全部关闭2、从库配置:
/etc/sysctl.conf  修改和增加如下配置:
net.ipv4.ip_forward = 1
net.ipv4.conf.lo.arp_ignore= 1
net.ipv4.conf.lo.arp_announce= 2
net.ipv4.conf.all.arp_ignore= 1
net.ipv4.conf.all.arp_announce= 2realserver脚本:
#!/bin/sh
# chkconfig: - 80 90
# description:realserver
# mysql_vip start realserver
mysql_vip=192.168.20.253
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $mysql_vip netmask 255.255.255.255 broadcast $mysql_vip
/sbin/route add -host $mysql_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 $mysql_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主库keepalived配置:
! Configuration File for keepalived
global_defs {
        router_id LVS_DEVEL
}
vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
        auth_type PASS
        auth_pass 1111
        }
        virtual_ipaddress {
                192.168.20.253
        }
notify_master "/etc/keepalived/clean_arp.sh"
}
virtual_server 192.168.20.253 3306 {                delay_loop 6
                lb_algo wlc
                lb_kind DR
                #persistence_timeout 120
                protocol TCP        real_server 192.168.20.182 3306 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3  
                        nb_get_retry 3  
                        delay_before_retry 3  
                        connect_port 3306
                }
        }        real_server 192.168.20.183 3306 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        nb_get_retry 3
                        delay_before_retry 3
                        connect_port 3306
        }
}
}
以下是keepalive启动后截图:
从库在lvsmater上可以直接通过命令连接,虚拟ip也可以ping通,但是telnet 虚拟ip 3306端口,以及ssh 都完全不通。
请大神帮忙分析