哨兵模式的redis实例重置脚本

#!/bin/bash
if [ ! -n "$1" ] ;then
    echo "请输入集群端口号!"
    exit
fi

master_name=`/home/redis/redis-3.2.3/src/redis-cli -p 30001 info | grep $1 | awk -F"," '{print $1}' | awk -F"=" '{print $2}'`

echo $master_name

get_char()
{
    SAVEDSTTY=`stty -g`
    stty -echo
    stty cbreak
    dd if=/dev/tty bs=1 count=1 2> /dev/null
    stty -raw
    stty echo
    stty $SAVEDSTTY
}

# 移除哨兵监控
/home/redis/redis-3.2.3/src/redis-cli -h 192.168.200.204 -p 30001 sentinel remove $master_name
/home/redis/redis-3.2.3/src/redis-cli -h 192.168.200.205 -p 30001 sentinel remove $master_name
/home/redis/redis-3.2.3/src/redis-cli -h 192.168.200.206 -p 30001 sentinel remove $master_name

echo -e "\n移除哨兵监控 ...,任意键继续,组合键 CTRL+C 终止命令!\n"
char=`get_char`

# 重置主从
/home/redis/redis-3.2.3/src/redis-cli -h 192.168.200.204 -p $1 -a 123456 slaveof no one
/home/redis/redis-3.2.3/src/redis-cli -h 192.168.200.205 -p $1 -a 123456 slaveof 192.168.200.204 $1
/home/redis/redis-3.2.3/src/redis-cli -h 192.168.200.206 -p $1 -a 123456 slaveof 192.168.200.204 $1

echo -e "\n重置主从 ...,任意键继续,组合键 CTRL+C 终止命令!\n"
char=`get_char`

# 添加哨兵监控
cat /dev/null > /home/redis/tmp_sentinel_monitor
echo "sentinel monitor ${master_name} 192.168.200.204 $1 2" >> /home/redis/tmp_sentinel_monitor
echo "sentinel set ${master_name} auth-pass 123456" >> /home/redis/tmp_sentinel_monitor
echo "sentinel set ${master_name} down-after-milliseconds 5000" >> /home/redis/tmp_sentinel_monitor
echo "sentinel set ${master_name} failover-timeout 10000" >> /home/redis/tmp_sentinel_monitor

cat /home/redis/tmp_sentinel_monitor | /home/redis/redis-3.2.3/src/redis-cli -h 192.168.200.204 -p 30001
cat /home/redis/tmp_sentinel_monitor | /home/redis/redis-3.2.3/src/redis-cli -h 192.168.200.205 -p 30001
cat /home/redis/tmp_sentinel_monitor | /home/redis/redis-3.2.3/src/redis-cli -h 192.168.200.206 -p 30001

echo -e "\n添加哨兵监控 ...,任意键继续,组合键 CTRL+C 终止命令!\n"
char=`get_char`

# 重启本机哨兵
/home/redis/restart_sentinel.sh

echo -e "\n重启本地哨兵 ...,任意键继续,组合键 CTRL+C 终止命令!\n"
char=`get_char`

# 重启远程哨兵
ssh 192.168.200.205 /home/redis/restart_sentinel.sh
ssh 192.168.200.206 /home/redis/restart_sentinel.sh

echo -e "\n重启远程哨兵 ...,任意键继续,组合键 CTRL+C 终止命令!\n"
char=`get_char`

wait
# 检查哨兵监控
/home/redis/redis-3.2.3/src/redis-cli -h 192.168.200.204 -p 30001 info | grep $1
/home/redis/redis-3.2.3/src/redis-cli -h 192.168.200.205 -p 30001 info | grep $1
/home/redis/redis-3.2.3/src/redis-cli -h 192.168.200.206 -p 30001 info | grep $1

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Redis哨兵模式是一种高可用的架构,用于监控Redis实例节点并实现故障切换。在哨兵模式下,哨兵节点是特殊的Redis服务,不提供读写服务,主要用来监控Redis实例节点。客户端首次从哨兵节点获取Redis的主节点信息,后续直接访问主节点,不需要通过哨兵代理。当主节点故障时,哨兵会感知到并在从节点中选举出新的主节点,然后通知客户端进行切换,实现高可用性。哨兵之间通过发布订阅模式来实现节点变动的消息通知。Redis哨兵模式是官方提供的高可用方案,可以用来监听多个Redis实例的运行情况。[1] 在哨兵模式中,可以通过配置项sentinel down-after-milliseconds来设置哨兵在超过规定时间没有得到响应后认为主机不可用。当拥有认为主观下线的哨兵数量达到sentinel monitor所配置的数量时,会发起一次投票进行故障切换,哨兵会重写Redis的哨兵配置文件以适应新的场景需求。[2] 故障切换(failover)的过程如下:当主服务器宕机时,第一个检测到的哨兵会主观认为主服务器不可用,但系统不会立即进行故障切换,这被称为主观下线。当其他哨兵也检测到主服务器不可用,并且达到一定数量时,哨兵之间会进行一次投票,由一个哨兵发起故障切换操作。切换成功后,通过发布订阅模式,各个哨兵会将自己监控的从服务器切换到新的主服务器,这被称为客观下线。对于客户端而言,整个过程是透明的。[3] 要配置Redis哨兵模式,可以参考Redis官方文档提供的配置指南,具体步骤包括设置哨兵节点、配置哨兵节点的监控和故障切换参数、配置Redis实例节点的哨兵监控等。详细的配置步骤可以参考Redis官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值