使用Keepalived集群软件实现Master节点的自动切换
一、方案描述
Keepalived的作用是检测服务器的状态,当GPDB的master服务器出现重启或者无法访问的情况下,或者GPDB主进程已经不再运行的情况下,会自动触发GPDB master-standby的自动切换动作。同时自动将虚拟IP地址接管至standby mater通过这种方式可以保证GPDB mater服务的高可用。
Keepalived可以通过Yum来安装,可直接使用。
通过Keepalived配置虚拟IP,分别在两台Master上启动Keepalived服务,使其形成一个组。一旦主master发生故障,Keepalived服务会把虚拟IP切换到备Master上,同时调起上述激活Standby master的脚本。
二、安装部署说明
- 使用Yum安装软件包
yum install
keepalived - 配置keepalived配置文件,其中配置虚拟IP和上述激活Standby master的脚本。
示例中的环境信息为:
GP Master IP:
10.132.17.65
GP standby Master IP:
10.132.17.64
对外服务的虚拟IP:
10.132.17.63 - 在master上的配置:
[root@mdw ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id gpm01
}
vrrp_script chk_gp {
script"/home/gpadmin/bin/check_gp.sh"
master
interval 5
}
vrrp_instance VI_1
{
state MASTER
interface eth3
virtual_router_id 51
priority 150
advert_int 1
authentication
{
auth_type PASS
auth_pass 1111
}
virtual_ipaddress
{
10.132.17.63
}
track_script
{
chk_gp
}
}
检测脚本
[root@mdw ~]# cat /home/gpadmin/bin/check_gp.sh
#!/bin/sh
CHECK_PROCESS=ps aux|grep postgres|grep silent|wc -l
if [ $CHECK_PROCESS -eq
0 ]; then
echo “GP is stopped”
sleep 2
CHECK_PROCESS=ps aux|grep postgres|grep silent|wc -l
if [ $CHECK_PROCESS -eq
0 ]; then
service keepalived
stop
fi
fi
- 在standby master上的配置:
[root@smdw ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id gpm02
}
vrrp_instance VI_1
{
state MASTER
interface eth3
virtual_router_id 51
priority 50
advert_int 1
authentication
{
auth_type PASS
auth_pass 1111
}
virtual_ipaddress
{
10.132.17.63
}
notify /home/gpadmin/bin/keep.sh /状态切换时调用的脚本/
}
[root@smdw ~]# cat /home/gpadmin/bin/keep.sh
#!/bin/bash
TYPE=$1
NAME=$2
STATE=$3
case $STATE in
“MASTER”) /bin/bash /home/gpadmin/bin/runner.sh >>/home/gpadmin/LOGS/keep.data;;
“BACKUP”) echo "Executing as BACKUP date
" >> /home/gpadmin/LOGS/keep.data;;
“FAULT”) echo "Executing as FAULT date
" >> /home/gpadmin/LOGS/keep.data exit 0;;
*) echo "Unknown state <<<<<<<<<<<<<<<<<<< date
" >> /home/gpadmin/LOGS/keep.data exit 1;;
esac
[root@smdw ~]# cat /home/gpadmin/bin/runner.sh
/bin/su - gpadmin -c “bash /home/gpadmin/bin/activateGPstandby.sh”
[root@smdw ~]# cat /home/gpadmin/bin/activateGPstandby.sh
source /usr/local/greenplum-db/greenplum_path.sh
export export MASTER_DATA_DIRECTORY=/data1/master/gpseg-1
export PGPORT=5432
echo "Activating MASTER on smdw date
" >> /home/gpadmin/status
gpactivatestandby -a -d /data1/master/gpseg-1
5.配置完成后
在主备节点上启动keepalived服务:service keepalived start;
6.访问GP集群使用10.132.17.63即可。