一、ip信息列表:
名称 ip
lvs-dr-vip 192.168.50.245
lvs-dr-master 192.168.50.216
lvs-dr-backup 192.168.50.217
mysql1-realserver 192.168.50.212
mysql2-realserver 192.168.50.213
gateway 192.168.50.254
其他(部署lvs过程中无需配置):
mgm管理节点 192.168.50.211
ndbd存储节点1 192.168.50.214
ndbd存储节点2 192.168.50.215
一. 安装lvs和keepalvied软件包
1. 下载相关软件包
#cd /usr/local/src/tarbag
#wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
#wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz
2. 安装lvs和keepalived
#lsmod |grep ip_vs
#uname -r
2.6.18-128.el5
#ln -s /usr/src/kernels/2.6.18-128.el5-i686/ /usr/src/linux
//这步一定要做,否则ipvsadm编译会报错
#tar zxvf ipvsadm-1.24.tar.gz
#cd ipvsadm-1.24
#make && make install
#tar zxvf keepalived-1.1.15.tar.gz
#cd keepalived-1.1.15
#./configure && make && make install
#cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
#cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
#mkdir /etc/keepalived
#cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
#cp /usr/local/sbin/keepalived /usr/sbin/
#chkconfig add keepalived
#chkconfig keepalived on #做成系统服务
#service keepalived start|stop|status
二、配置lvs与realserver脚本
1.lvs脚本(主备两台lvs上操作)
#vi /usr/local/sbin/lvs-dr.sh
//以下为脚本内容
#!/bin/bash
# description: start lvs of directorserver
#written by :netseek http://www.linuxtone.org
gw=192.168.50.254 #当前局域网网关ip
# website director vip.
mysql_vip=192.168.50.246 #mysql虚拟ip地址
mysql_rip1=192.168.50.212
mysql_rip2=192.168.50.213
/etc/rc.d/init.d/functions
logger $0 called with $1 #记录到系统日志messages
case $1 in
start)
# set squid vip
/sbin/ipvsadm --set 30 5 60 #分别为协议tcp tcpfin udp 的超时时间
/sbin/ifconfig eth0:0 $mysql_vip broadcast $mysql_vip netmask 255.255.255.255 broadcast $mysql_vip up #新建vip
/sbin/route add -host $mysql_vip dev eth0:0 #为vip添加路由
/sbin/ipvsadm -a -t $mysql_vip:3306 -s wrr -p 3 #添加一个vip
/sbin/ipvsadm -a -t $mysql_vip:3306 -r $mysql_rip1:3306 -g -w 1 #将vip:3306的请求转发到rip1上,-g表示使用dr模式,-w表示权重为1
/sbin/ipvsadm -a -t $mysql_vip:3306 -r $mysql_rip2:3306 -g -w 1
touch /var/lock/subsys/ipvsadm >/dev/null 2>&1 #新建文件ipvsadm,主要用来表示服务器已经启动,为status做准备
;;
stop)
/sbin/ipvsadm -c #清空lvs所有规则
/sbin/ipvsadm -z #所有服务器计数器清零
ifconfig eth0:0 down #禁用虚拟网卡eth0:0
route del $mysql_vip #删除vip的路由
rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1
echo ipvsadm stoped
;; #相当于c语言中的break,跳出case
status)
if [ ! -e /var/lock/subsys/ipvsadm ];then #如果ipvsadm不存在则输出ipvsadm stoped
echo ipvsadm stoped
exit 1
else
echo ipvsadm ok
fi
;;
*)
echo usage: $0 {start|stop|status}
exit 1
esac
exit 0
2.realserver脚本(所有mysql上操作)
#vi /usr/local/sbin/realserver.sh
#!/bin/bash
# description: config realserver lo and apply noarp
#written by :netseek http://www.linuxtone.org
mysql_vip=192.168.50.245 #虚拟ip
/etc/rc.d/init.d/functions #这个作用暂时不知道,知道的同学帮忙修改一下
case $1 in
start)
ifconfig lo:0 $mysql_vip netmask 255.255.255.255 broadcast $mysql_vip #新建虚拟ip,lvs中所有的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
三、启动相关服务
1.主备lvs
#chmod 755 /usr/local/sbin/lvs-dr.sh #赋予执行权限
#/usr/local/sbin/lvs-dr.sh #启动lvs
#service keepalived start #启动keepalived服务
2.mysql cluster中的2台sql节点
#cd /usr/local/sbin
#chmod 755 realserver.sh
#./realserver.sh
四、测试
方法1:
#telnet 192.168.50.245 3306
n
5.1.39-ndb-7.0.9-cluster-gpl-log菔1sti5i5+;*^{qfi{owj
//出现以上内容说明请求转发成功
方法二:
使用mysql的各种客户端工具连接mysql。
