政务网站建设规范,wordpress与dz,wordpress网站提速,湖北省住房和城乡建设网站本次Redis有两台服务器及3个独立IP#xff1a;主服务器的ip地址是192.168.31.190#xff0c;从服务器的IP地址是192.168.31.191#xff0c;vipIP地址是192.168.31.216
主备方案承载Redis最大的好处是无需考虑Redis崩后无法访问。 前提是需要优先安装keepalived#xff0c;…本次Redis有两台服务器及3个独立IP主服务器的ip地址是192.168.31.190从服务器的IP地址是192.168.31.191vipIP地址是192.168.31.216
主备方案承载Redis最大的好处是无需考虑Redis崩后无法访问。 前提是需要优先安装keepalived其次安装Redis。
1、master配置
! Configuration File for keepalivedglobal_defs {router_id master
}vrrp_script chk_redis {script /data/keepalived/redis_check.shinterval 2
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 150advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.31.216 dev ens33 label ens33:1}track_script {chk_redis}notify_master /data/keepalived/redis_master.sh masternotify_backup /data/keepalived/redis_backup.shnotify_fault /data/keepalived/redis_fault.shnotify_stop /data/keepalived/redis_stop.sh
}
2、backup1配置
! Configuration File for keepalived
global_defs {router_id backup1
}
vrrp_script chk_redis {script /data/keepalived/redis_check.shinterval 2
}
vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.31.216 dev ens33 label ens33:1}track_script {chk_redis }notify_master /data/keepalived/redis_master.sh masternotify_backup /data/keepalived/redis_backup.shnotify_fault /data/keepalived/redis_fault.shnotify_stop /data/keepalived/redis_stop.sh
}
3、创建脚本目录
mkdir -p /data/keepalived
4、编辑监听脚本
vi /data/keepalived/redis_check.sh
#!/bin/bash
ALIVEredis-cli -a 123456 PING
if [ $ALIVE PONG ];thenecho $ALIVEexit 0
elsesystemctl stop keepalived.serviceexit 1
fi
5、默认监听脚本
vi /data/keepalived/redis_fault.sh
#!/bin/bash
LOGFILE/data/keepalived/redis-state.log
echo [fault] $LOGFILE
date $LOGFILE
6、停止监听脚本
vi /data/keepalived/redis_stop.sh
#!/bin/bash
LOGFILE/data/keepalived/redis-state.log
echo [stop] $LOGFILE
date $LOGFILE
7、master服务器master脚本
vi /data/keepalived/redis_master.sh
#!/bin/bash
REDISCLIredis-cli -a 123456
LOGFILE/data/keepalived/redis-state.log
echo [master] $LOGFILE
date $LOGFILE
echo Being master.... $LOGFILE 21
echo Run SLAVEOF cmd ... $LOGFILE
$REDISCLI SLAVEOF 192.168.31.191 6379 $LOGFILE 21
sleep 10
echo Run REPLICAOF NO ONE cmd ... $LOGFILE
$REDISCLI REPLICAOF NO ONE $LOGFILE 21
date $LOGFILE
在该节点的keepalived第一次启动指keepalived组中仅有这一台或者这一台的优先级别最高自动成为主节点然后就会调用该脚本
脚本中先从备机上同步数据如果备机没有运行或故障了则过几秒执行命令使这个节点的Redis成为主节点提供读写能力。
邮件配置
contact(1509454760qq.com) #接收者邮箱多个以空格分隔
HOST_IP[192.168.31.190] #本机ip
notify() {mailsubjectRedis发生切换($HOST_IP) #邮件主题mailbody$(date %F %T): vrrp transition, $HOST_IP keepalived changed to be $1 #邮件正文for receiver in ${contact[*]}doecho $mailbody | mail -s $mailsubject $receiver #发送邮件done
}
case $1 in
master)notify master;;
backup)notify backup;;
fault)notify fault;;
*)echo Usage:{master|backup|fault}exit 1;;
esac
8、master服务器backup脚本
vi /data/keepalived/redis_backup.sh
#!/bin/bash
REDISCLIredis-cli -a 123456
LOGFILE/data/keepalived/redis-state.log
echo [backup] $LOGFILE
date $LOGFILE
echo Being slave.... $LOGFILE 21
echo Run SLAVEOF cmd ... $LOGFILE
$REDISCLI SLAVEOF 192.168.31.191 6379 $LOGFILE 21
sleep 15
echo Run REPLICAOF NO ONE cmd ... $LOGFILE
$REDISCLI REPLICAOF NO ONE $LOGFILE 21
当这个原来是主节点但是中途挂了最后又重新启动后这个时候已经由一个备节点变成了主节点则keepalived会执行该脚本
该脚本首先等一段时间给备机充足的时间切换为主节点然后该脚本执行命令让本节点的Redis成为新主节点Redis的备份服务。
9、backup1服务器master脚本
vi /data/keepalived/redis_master.sh
#!/bin/bash
REDISCLIredis-cli -a 123456
LOGFILE/data/keepalived/redis-state.log
echo [master] $LOGFILE
date $LOGFILE
echo Being master.... $LOGFILE 21
echo Run SLAVEOF cmd ... $LOGFILE
$REDISCLI SLAVEOF 192.168.31.190 6379 $LOGFILE 21
sleep 10
echo Run SLAVEOF NO ONE cmd ... $LOGFILE
$REDISCLI SLAVEOF NO ONE $LOGFILE 21
当该节点在主节点挂掉之后会执行
脚本会先从主节点同步数据然后脚本执行命令让本机Redis独立为主服务提供读写能力
邮件配置
contact(1509454760qq.com) #接收者邮箱多个以空格分隔
HOST_IP[192.168.31.191] #本机ip
notify() {mailsubjectRedis发生切换($HOST_IP) #邮件主题mailbody$(date %F %T): vrrp transition, $HOST_IP keepalived changed to be $1 #邮件正文for receiver in ${contact[*]}doecho $mailbody | mail -s $mailsubject $receiver #发送邮件done
}
case $1 in
master)notify master;;
backup)notify backup;;
fault)notify fault;;
*)echo Usage:{master|backup|fault}exit 1;;
esac
10、backup1服务器backup脚本
vi /data/keepalived/redis_backup.sh
#!/bin/bash
REDISCLIredis-cli -a 123456
LOGFILE/data/keepalived/redis-state.log
echo [backup] $LOGFILE
date $LOGFILE
echo Being slave.... $LOGFILE 21
sleep 15
echo Run SLAVEOF cmd ... $LOGFILE
$REDISCLI SLAVEOF 192.168.31.190 6379 $LOGFILE 21
该脚本是在主节点的Redis成为主服务时或主节点服务已经开启备机服务再开启后自动执行
脚本先等待一段时间让主节点切换为主服务然后脚本执行命令使本节点的Redis成为主节点的备机。
11、授权
cd /data/keepalived/
chmod x *.sh
touch redis-state.log
12、启动注意事项
#优先启动master服务器的keepalived但是前提是Redis已经启动完毕咯第二是keepalived端口已经放出来咯
#第一次启动时backup1节点的服务一定是在主master节点服务都开启后才启动本机Redis只能提供读的功能可配置为可写但不安全。
systemctl start keepalived.service #启动服务
systemctl stop keepalived.service #停止服务
systemctl restart keepalived.service #重启服务
ps -ef|grep keepalive #检查keepalive服务
ip addr #检查vip是否启动
13、测试
redis-cli -h 192.168.31.216 -p 6379
auth 123456
set id 1
get id
redis-cli -h 192.168.31.190 -p 6379
auth 123456
get id
redis-cli -h 192.168.31.191 -p 6379
auth 123456
get id
确认都有数据的情况下停止192.168.31.190的Redis正常来说会将192.168.31.216IP漂移到192.168.31.191这台服务器上然后测试
190这台服务器上的操作
systemctl stop redis.service
ps -ef|grep keepalive #检查keepalive服务
ip addr #检查vip是否启动
191这台服务器上的操作
ps -ef|grep keepalive #检查keepalive服务
ip addr #检查vip是否启动
redis-cli -h 192.168.31.216 -p 6379
auth 123456
set name wangyulong
get name
redis-cli -h 192.168.31.191 -p 6379
auth 123456
get name
再次整个漂移是成功的
如果再次启动192.168.31.190的Redis服务以及keepalive服务正常来说又会回到以前
systemctl start redis.service #启动redis服务
systemctl start keepalived.service #启动服务
然后到192.168.31.191这台服务器上去查看keepalive服务以及vip是否存在
ps -ef|grep keepalive #检查keepalive服务
ip addr #检查vip是否启动
正常来说在192.168.31.191这台服务器上keepalive服务是正常运行的而VIP却是不存在的。因为vip又回到了主服务(192.168.31.190)上
再到192.168.31.190这台服务器上去查看keepalive服务以及vip是否存在
ps -ef|grep keepalive #检查keepalive服务
ip addr #检查vip是否启动
正常来说在192.168.31.190这台服务器上keepalive服务是正常运行的VIP服务也是正常运行的。最后首先采用vip连接到redis服务里面查看name是否存在
redis-cli -h 192.168.31.216 -p 6379
auth 123456
get name
redis-cli -h 192.168.31.190 -p 6379
auth 123456
get name 前提是需要优先安装keepalived其次安装Redis。