我准备三台虚拟机做测试,其中,调度器 IP 为:192.168.233.131,MySQL 的两个 SQL 节点:192.168.233.132、192.168.233.133,打算使用的虚拟 IP 为:192.168.233.201。
首先,在两个 SQL 节点上配置虚拟 IP。为了操作方便,这里配置成系统服务,服务脚本代码如下:
内容如下:
# chkconfig: 35 58 89
# description: realServer
VIP=192.168.233.201
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
route add -host $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
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $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
[root@dbSlave01 ~]# chmod +x /etc/rc.d/init.d/realserver
[root@dbSlave01 ~]# chkconfig --level 35 realserver on
接着,在调度器 192.168.233.131 上安装 ipvsadm 和 keepalived。
在安装 ipvsadm 之前,需要先安装 libnl-devel、popt-devel、popt-static 这三个软件包,为了简单起见,这里直接使用 yum 安装:
[root@dbMaster ~]# yum install popt-devel
[root@dbMaster ~]# yum install popt-static
安装 ipvsadm:
[root@dbMaster ~]# cd ipvsadm-1.26
[root@dbMaster ipvsadm-1.26]# make
[root@dbMaster ipvsadm-1.26]# make install
[root@dbMaster ipvsadm-1.26]# cd ..
在安装 keepalived 之前,需要先安装 openssl-devel、libnfnetlink-devel 这两个软件包:
[root@dbMaster ~]# yum install libnfnetlink-devel
安装 keepalived:
[root@dbMaster ~]# cd keepalived-1.4.2
[root@dbMaster keepalived-1.4.2]# ./configure --prefix=/usr/local/keepalived
[root@dbMaster keepalived-1.4.2]# make
[root@dbMaster keepalived-1.4.2]# make install
[root@dbMaster keepalived-1.4.2]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
[root@dbMaster keepalived-1.4.2]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@dbMaster keepalived-1.4.2]# mkdir -pv /etc/keepalived
创建 keepalived 配置文件:
内容如下:
global_defs {
router_id HaMySQL
}
vrrp_sync_group VGM {
group {
VI_MYSQL
}
}
vrrp_instance VI_MYSQL {
state MASTER
interface eth0
virtual_router_id 100
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.233.201/24 eth0 label eth0:1
}
}
virtual_server 192.168.233.201 3306 {
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP
real_server 192.168.233.132 3306 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
real_server 192.168.233.133 3306 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
配置 keepalived 系统服务:
内容如下:
#!/bin/bash
# chkconfig: 35 86 14
# description: keepalived Server
. /etc/init.d/functions
exec="/usr/sbin/keepalived"
prog="keepalived"
config="/etc/keepalived/keepalived.conf"
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
lockfile=/var/lock/subsys/keepalived
start() {
[ -x $exec ] || exit 5
[ -e $config ] || exit 6
echo -n $"Starting $prog: "
daemon $exec $KEEPALIVED_OPTIONS
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
stop
start
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status &>/dev/null
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart)
$1
;;
status)
rh_status
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
exit 2
esac
exit $?
[root@dbMaster keepalived-1.4.2]# chmod +x /etc/rc.d/init.d/keepalived
[root@dbMaster keepalived-1.4.2]# chkconfig --level 35 keepalived on
开启两个 SQL 节点上的虚拟 IP:
[root@dbSlave02 ~]# service realserver start
启动调度器:
在调度器上查看相关信息:
或者:
Copyright © 2005-2023 by www.ricensoftwares.com.cn All Rights Reserved.