lvs+ldirectord.cf同时做web和msyql的负载转发健康检查 连接mysql存在默认库和默认用户 用什么用户登录都默认同一个用户lvstesting 邪门了

当前环境:lvs+ldirctord

mysql_vip:102.168.1.67
real_mysql1:192.168.1.70
real_msyql2:192.168.1.235

如下:
ipvsadm -ln

TCP 192.168.1.67:3306 rr
-> 192.168.1.235:3306 Route 1 3 0
-> 192.168.1.70:3306 Route 1 3 0

这是ldirector.cf的健康检查文件,我要同时做web和mysql的负载转发
# Global Directives
checktimeout=3
checkinterval=1
#fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/ldirectord.log"
#logfile="local0"
#emailalert="admin@x.y.z"
#emailalertfreq=3600
#emailalertstatus=all
quiescent=yes

# Sample for an http virtual service
virtual=192.168.1.240:80
# real=192.168.1.233:80 gate
real=192.168.1.234:80 gate
fallback=127.0.0.1:80 gate
service=http
request="helth.html"
receive="Ok"
virtualhost=192.168.1.240
scheduler=rr
#persistent=600
#netmask=255.255.255.255
protocol=tcp
checktype=negotiate
checkport=80
# for mysql
virtual=192.168.1.67:3306
real=192.168.1.70:3306 gate
real=192.168.1.235:3306 gate
service=mysql
scheduler=rr
protocol=tcp
checktype=negotiate
login="lvstesting"
passwd="abc&1234"
database="test"
request="SELECT * FROM lvstest"

我认为这四行,只是用来做健康检测用的,如下:
login="lvstesting"
passwd="abc&1234"
database="test"
request="SELECT * FROM lvstest"

但是现在出现了这样的一种情况,程序来连接虚ip:192.168.1.67的3306时,会把test做为默认的数据库:

我从一台linux的mysql连接另外一台mysql:192.168.1.235
mysql -h xxx -u admin -p

但连接后,我\s查看,当前用户显示的是lvstesting 数据库是test
事实上应该是这样的:当前数据为空 当前用户应该为admin@xxx
Connection id: 798681
Current database: test
Current user: lvstesting@192.168.1.235
SSL: Not in use

邪门了

Forums:

randomness