keepalived Redis-master判定 VIP 实现自动飘移

Redis 主从不再重复

默认路径 :/usr/local/redis

keepalived 默认/etc/keepalived

检测监控 redis_backup.sh,redis_check.sh,redis_fault.sh redis_master.sh,redis_stop.sh脚本默认 /etc/keepalived/script

iptables 设置添加 需要开放的端口和地址

224.0.0.18 是vrrp组播地址 ;

iptables -A INPUT -d 224.0.0.18 -j ACCEPT

Master 配置

global_defs {

router_id redis1

}

vrrp_script chk_redis

{

script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 6379"

interval 2

timeout 2

fall 3

}

vrrp_instance redis {

state MASTER

interface bond0

virtual_router_id 100

priority  100

nopreempt # no seize,must add

advert_int 1

authentication {   #all node must same

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

1.2.3.4/24

}

track_script {

chk_redis

}

notify_master "/etc/keepalived/scripts/redis_master.sh 127.0.0.1  1.2.3.1 6379"

notify_backup "/etc/keepalived/scripts/redis_backup.sh 127.0.0.1  1.2.3.1 6379"

notify_fault /etc/keepalived/scripts/redis_fault.sh

notify_stop /etc/keepalived/scripts/redis_stop.sh

}

Salve 配置

global_defs {

router_id redis101

}

vrrp_script chk_redis

{

script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 6379"

interval 2

timeout 2

fall 3

}

vrrp_instance redis {

state BACKUP

interface bond0

virtual_router_id 90

priority  100

advert_int 1

authentication {   #all node must same

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

1.2.3.4/24

}

track_script {

chk_redis

}

notify_master "/etc/keepalived/scripts/redis_master.sh 127.0.0.1  1.2.3.2 6379"

notify_backup "/etc/keepalived/scripts/redis_backup.sh 127.0.0.1  1.2.3.2 6379"

notify_fault /etc/keepalived/scripts/redis_fault.sh

notify_stop /etc/keepalived/scripts/redis_stop.sh

}

VIP 检测 漂移

# redis_backup.sh

#!/bin/bash

REDISCLI="/usr/local/redis/src/redis-cli -h $1 -p $3"

LOGFILE="/etc/keepalived/log/keepalived-redis-state.log"

echo "[backup]" >> $LOGFILE

date >> $LOGFILE

echo "Run SLAVEOF cmd ..." >> $LOGFILE

$REDISCLI SLAVEOF $2 $3 >> $LOGFILE 2>&1

# echo "Being slave...." >> $LOGFILE 2>&1

sleep 15 #delay 15 s wait data sync exchange role

-----

# redis_check.sh

#!/bin/bash

ALIVE=`/usr/local/redis/src/redis-cli -h $1 -p $2 PING`

LOGFILE="/etc/keepalived/log/keepalived-redis-check.log"

echo "[CHECK]" >> $LOGFILE

date >> $LOGFILE

if [ $ALIVE == "PONG" ]; then :

echo "Success: redis-cli -h $1 -p $2 PING $ALIVE" >> $LOGFILE 2>&1

exit 0

else

echo "Failed:redis-cli -h $1 -p $2 PING $ALIVE " >> $LOGFILE 2>&1

exit 1

fi

-----

# redis_fault.sh

#!/bin/bash

LOGFILE=/etc/keepalived/log/keepalived-redis-state.log

echo "[fault]" >> $LOGFILE

date >> $LOGFILE

-----

# redis_master.sh

#!/bin/bash

REDISCLI="/usr/local/redis/src/redis-cli -h $1 -p $3"

LOGFILE="/etc/keepalived/log/keepalived-redis-state.log"

echo "[master]" >> $LOGFILE

date >> $LOGFILE

echo "Being master...." >> $LOGFILE 2>&1

echo "Run MASTER cmd ..." >> $LOGFILE 2>&1

$REDISCLI SLAVEOF $2 $3 >> $LOGFILE

sleep 10 #delay 10 s wait data async cancel sync

echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE

$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1

-----

# redis_stop.sh

#!/bin/bash

LOGFILE=/etc/keepalived/log/keepalived-redis-state.log

echo "[stop]" >> $LOGFILE

date >> $LOGFILE

原文地址:http://blog.51cto.com/51log/2092559

时间: 2024-08-01 23:14:38

keepalived Redis-master判定 VIP 实现自动飘移的相关文章

keepalived+redis 高可用redis主从解决方案

背景介绍: 目前,Redis还没有一个类似于MySQL Proxy或Oracle RAC的官方HA方案.#Redis 2.8版开始正式提供名为Sentinel的主从切换方案(后面附上,未测试) 因此,如何在出现故障时自动转移是一个需要解决的问题. 通过对网上一些资料的搜索,有建议采用HAProxy或Keepalived来实现的,事实上如果是做Failover而非负载均衡的话,Keepalived的效率肯定是超过HAProxy的,所以我决定采用Keepalived的方案. 环境介绍:Master:

Keepalived+Redis高可用部署

1   Redis简介及安装 Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案. Redis从它的许多竞争继承来的三个主要特点: Redis数据库完全在内存中,使用磁盘仅用于持久性. 相比许多键值数据存储,Redis拥有一套较为丰富的数据类型. Redis可以将数据复制到任意数量的从服务器. 1.1 REDIS优势 异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录. 支持丰富的数据类型:Redis支持最大

Keepalived+Redis高可用部署(第二版)

更新 20150625 脚本由5个减少为4个,sh脚本指令做了精简. 修改了另外3个脚本,在日志里增加了日期显示. 新增redis数据类型,持久化,主从同步简介. 新增hiredis简介. 新增c语言客户端测试. Redis简介及安装 Redis是一个开源,先进的key-value存储,用于构建高性能,可扩展的Web应用程序的完美解决方案. Redis从它的许多竞争继承来的三个主要特点: Redis数据库完全在内存中,使用磁盘仅用于持久性. 相比许多键值数据存储,Redis拥有一套较为丰富的数据

Redis主从、sentinel故障自动切换

一.什么是redis主从复制? 主从复制,当用户往Master端写入数据时,通过Redis Sync机制将数据文件发送至Slave,Slave也会执行相同的操作确保数据一致:且实现Redis的主从复制非常简单. 二.redis主从复制特点 1.同一个Master可以拥有多个Slaves. 2.Master下的Slave还可以接受同一架构中其它slave的链接与同步请求,实现数据的级联复制,即Master->Slave->Slave模式: 3.Master以非阻塞的方式同步数据至slave,这将

keepalived+redis问题

在keepalived+redis的使用过程中有四种情况: 1 一种是keepalived挂了,同时redis也挂了,这样的话直接VIP飘走之后,是不需要进行redis数据同步的,因为redis挂了,你也无法去master上同步,不过会损失已经写在master上却还没同步到slave上面的这部分数据. 2 另一种是keepalived挂了,redis没挂,这时候VIP飘走后,redis的master/slave还是老的对应关系,如果不变化的话会把数据写入redis slave中,从而不会同步到m

Redis - Keepalived + redis 主备热备切换

1. 热备方案 硬件:server两台,分别用于master-redis及slave-redis 软件:redis.keepalived 实现目标: 由keepalived对外提供虚拟IP(VIP)进行redis访问 主从redis正常工作,主负责处理业务,从进行数据备份 当主出现故障时,从切换为主,接替主的业务进行工作 当主恢复后,拷贝从的数据,恢复主身份,从恢复从身份 数据采用aof方式进行持久化存储,秒级备份,当出现故障后,损失数据不超过1s Keepalived提供以下服务: 对用户提供

Redis Master/Slave 实践

本次我们将模拟 Master(1) + Slave(4) 的场景,并通过ASP.NET WEB API进行数据的提交及查询,监控 Redis Master/Slave 数据分发情况,只大致概述,不会按照step by step的方式一一列举. API List: [POST]:http://localhost:53964/api/personsAccept:application/json ,Content-Type:application/json { "Id": 2, "

Keepalived中Master和Backup主备切换机制浅析

在keepalived的VRRP实例配置中会一般会设置Master和Backup来指定初始状态,但是这并不意味着此节点一直就是Master角色.控制节点角色的是Keepalived配置文件中的"priority"值和vrrp_script模块中设置的"weight"值.下面分别分情况对主备机切换机制作详细说明. 配置简介: 主机 IP 操作系统 软件 VIP 备注 nginx01 172.27.9.91 Centos7 keepalived nginx 172.27

keepalived设置master故障恢复后不重新抢回VIP配置

允许组播,两台设备上都需要执行iptables -A INPUT -d 224.0.0.18 -j ACCEPT或修改:vim /etc/sysconfig/iptables适当位置添加行:-A INPUT -d 224.0.0.18 -j ACCEPT 默认情况下keepalived 有一台主服务器(master,以后称之为M服务器),一台备服务器(backup,以后称之为B服务器).正常情况下M服务器接管VIP成为[主],当M服务器宕机后,B服务器接管VIP成为[主],已达到灾备的效果,如果