这两天搭建了一个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 都完全不通。
请大神帮忙分析
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 都完全不通。
请大神帮忙分析
解决方案 »
- 怎样在mysql 建表时约束属性类型为汉字?
- MySQL FROM_UNIXTIME和UNIX_TIMESTAMP
- 求REPLACE写法?
- MySQL an't connect to MySQL server on '192.168.73.110' (10061) Socket error on c
- 关于MYSQL 的master/slave 构架
- 请问mysql用什么命令启动?
- 为什么同样的两条记录在access与sql查询出的结果不同
- MYSQL安装后不能启动服务
- 请教高手, MySQL学习方法
- 一个5000人的企业的每月工资,档案等信息,用MYSQL适合吗?
- 按分数排名,出现相同分数时,名次并列,sql语句怎么写
- 表结构设计是否需要冗余字段
有可能是是机房绑定了MAC地址,楼主可以试一下
这多台机器之间能ping通吗