注意:此文档中在切换到metalog服务器的时候,没有拷贝主配置文件,没有启动web接口,没有切换chunkserver的master_host_ip地址,客户端需重新挂载
安装配置keepalived
通过keepalived,监控主控服务器,当主控服务器10.1.1.105上的mfsmaster服务出现问题时,自动切换到元数据日志服务器10.1.1.104。
到http://www.keepalived.org/download.html 下载最新的keepalived。
解压、安装
-
[root@localhost ~]# tar xvf keepalived-1.2.2.tar.gz
-
[root@localhost ~]# cd keepalived-1.2.2
-
[root@localhost keepalived-1.2.2]# ./configure --prefix=/
-
Keepalived configuration
-
-
Keepalived version : 1.2.2
-
Compiler : gcc
-
Compiler flags : -g -O2 -DETHERTYPE_IPV6=0x86dd
-
Extra Lib : -lpopt -lssl -lcrypto
-
Use IPVS Framework : No
-
IPVS sync daemon support : No
-
Use VRRP Framework : Yes
-
Use Debug flags : No
这里只需要启用VRRP就可以
[root@localhost keepalived-1.2.2]# make && make install
安装后,配置为随机启动服务 -
chmod +x /etc/rc.d/init.d/keepalived
-
chkconfig --add keepalived
-
chkconfig --level 21 keepalived on
使用的配置文件是/etc/keepalived/keepalived.conf。
主控服务器10.1.1.105上的配置文件是,每两秒钟使用脚本检测mfsmaster运行情况,发现运行失败,就停止keepaled服务
- ! Configuration File for keepalived
- global_defs {
- router_id LVS_STTD
- }
- vrrp_script check_run {
- script “/Data/apps/mfs/keepalived_check_mfsmaster.sh”
- interval 2
- }
- vrrp_sync_group VG1 {
-
group {
-
VI_1
-
}
- }
- vrrp_instance VI_1 {
-
state MASTER
-
interface eth1
-
virtual_router_id 88
-
priority 100
-
advert_int 1
-
nopreempt
-
authentication {
-
auth_type PASS
-
auth_pass 1111
-
}
-
track_script {
-
check_run
-
}
-
virtual_ipaddress {
-
10.1.1.103
-
}
- }
- /Data/apps/mfs/keepalived_check_mfsmaster.sh脚本,如mfsmaster未运行,则停止keepalived服务
- #!/bin/sh
- CHECK_TIME=2
- mfspath="/Data/apps/mfs/sbin/mfsmaster"
- function check_mfsmaster () {
- ps -ef | grep mfsmaster | grep “/Data/apps/mfs/sbin/mfsmaster” | grep -v “grep”
-
if [ $? = 0 ] ;then
-
MFS_OK=1
-
else
-
MFS_OK=0
-
fi
-
return $MFS_OK
- }
- while [ $CHECK_TIME -ne 0 ]
- do
-
let "CHECK_TIME -= 1"
-
check_mfsmaster
-
if [ $MFS_OK = 1 ] ; then
-
CHECK_TIME=0
-
exit 0
-
fi
-
if [ $MFS_OK -eq 0 ] && [ $CHECK_TIME -eq 0 ] ;then
-
/etc/init.d/keepalived stop
-
exit 1
-
fi
- done
元数据日志服务器上keepalved配置
- ! Configuration File for keepalived
- global_defs {
- router_id LVS_STTD
- }
- vrrp_sync_group VG1 {
-
group {
-
VI_1
-
}
- notify_master “/Data/apps/mfs/keepalived_notify.sh master” //当切换到master状态的时候执行此脚本
- notify_backup “/Data/apps/mfs/keepalived_notify.sh backup”
- }
- vrrp_instance VI_1 {
-
state BACKUP
-
interface eth1
-
virtual_router_id 88
-
priority 80
-
advert_int 1
-
authentication {
-
auth_type PASS
-
auth_pass 1111
-
}
-
virtual_ipaddress {
-
10.1.1.103
-
}
- }
- /Data/apps/mfs/keepalived_notify.sh脚本
- #!/bin/bash
- MFS_HOME=/Data/apps/mfs
- MFSMARSTER=${MFS_HOME}/sbin/mfsmaster
- MFSMETARESTORE=${MFS_HOME}/sbin/mfsmetarestore
- MFS_DATA_PATH=${MFS_HOME}/var/mfs
- function backup2master(){
- $MFSMETARESTORE -m ${MFS_DATA_PATH}/metadata.mfs.back -o ${MFS_DATA_PATH}/metadata.mfs $MFS_DATA_PATH/changelog_ml*.mfs
- $MFSMARSTER start
- }
- function master2backup(){
- $MFSMARSTER stop
- /Data/apps/mfs/sbin/mfsmetalogger start
- }
- function ERROR(){
- echo "USAGE: keepalived_notify.sh master|backup "
- }
- case $1 in
-
master)
-
backup2master
-
;;
-
backup)
-
master2backup
-
;;
-
*)
-
ERROR
-
;;
- esac