redis主从复制故障转移

Redis主从复制与故障切换

目录

目录1

一.概述1

二. 实验目的2

三.试验环境2

四. 说明2

五. 拓扑2

六. 实施步骤2

6.1、分别安装redis2.8.32

6.2、配置主从同步3

6.3、配置主从故障切换4

七. 注意事项4

一.概述

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制。

Redis 2.8版开始正式提供名为Sentinel的主从切换方案,Sentinel用于管理多个Redis服务器实例,主要负责三个方面的任务:

1. 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。

2. 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。

3. 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。

二. 实验目的

实验用于了解redis主从复制,故障自动切换功能。

三.试验环境


设备名称


操作系统


安装软件


虚拟机(3台)


Centos6.8 X64


Redis2.8.3

四. 说明

本实验演示redis主从数据同步,主服务宕机,从服务器被选择为新的主服务器,并自动配置其他从服务器的主服务器为本机。

五. 拓扑

192.168.1.240  主redis  sentinel

192.168.1.241  从redis

192.168.1.242  从redis

六. 实施步骤

6.1、分别安装redis2.8.3

三台机器分别安装

1、安装

$ yum install gcc -y

$ cd /home/jryknet

$ wget http://download.redis.io/releases/redis-2.8.3.tar.gz

$ tar xzf redis-2.8.3.tar.gz

$ cd redis-2.8.3

$ make

$ make install

2、编译完成后,在Src目录下,有四个可执行文件redis-server、redis-benchmark、redis-cli和redis.conf。然后拷贝到一个目录下。

mkdir /usr/redis

cp redis-server  /usr/redis

cp redis-benchmark /usr/redis

cp redis-cli  /usr/redis

cp /home/redis-2.8.3/redis.conf  /usr/redis

cd /usr/redis

3、启动Redis服务。

$ redis-server   redis.conf

4、然后用客户端测试一下是否启动成功。

$ redis-cli

redis> set age 13

OK

redis> get age

"13"

5、配置为后台启动

vi /usr/redis/redis.conf

daemonize yes

#日志目录

logfile "/tmp/redis.log”

6、配置服务脚本启动(略)

启动方式

/etc/init.d/redis

Usage: /etc/init.d/redis {start|stop|restart|force-reload}

6.2、配置主从同步

配置文件使用/usr/redis目录下的redis.conf

1、配置从服务器

主服务器192.168.1.240不需配置

从服务器 192.168.1.241,192.168.1.242修改配置文件,添加

slaveof 192.168.1.240 6379

2、测试主从效果

6.3、配置主从故障切换

1、主服务器192.168.1.240配置

cp /home/jryknet/redis-2.8.3/sentinel.conf /usr/redis/ #配置文件

cp /home/jryknet/redis-2.8.3/src/redis-sentinel /usr/redis/  #程序脚本文件

2、配置/usr/redis/sentinel.conf ,启动sentinel 执行命令redis-sentinel

port 26379

daemonize no

logfile "/var/redis/log/sentinel.log"

sentinel monitor mymaster 192.168.1.240 6379 1

sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1

3,、查看状态

redis-cli info |grep role

role:master

redis-cli info |grep role

role:slave

4、测试

停止主redis,切换为192.168.1.242为新的master

当旧的master启动,讲转换为从服务器

原来的master配置文件redis.conf 自动添加slaveof 192.168.1.242 6379,变为从服务器

原来的master配置文件sentinel.conf 自动修改为sentinel monitor mymaster 192.168.1.242 6379 1

七. 注意事项

1、第一次启动必须先启动master

2、slave的优先级是一个整数展示在Redis的Info输出中。如果master不再正常工作了,哨兵将用它来选择一个slave提升=升为master。优先级数字小的salve会优先考虑提升为master,所以例如有三个slave优先级分别为10,100,25哨兵将挑选优先级最小数字为10的slave。0作为一个特殊的优先级,标识这个slave不能作为master,所以一个优先级为0的slave永远不会被 
# 哨兵挑选提升为master 
默认:slave-priority 100

时间: 2024-12-21 16:32:04

redis主从复制故障转移的相关文章

redis-sentinel搭建redis主从故障转移

Redis-sentinel是Redis实例的监控管理.通知和实例失效备援服务,是Redis集群的管理工具.在一般的分布式中心节点数据库 中,Redis-sentinel的作用是中心节点的工作,监控各个其他节点的工作情况并且进行故障恢复,来提高集群的高可用性. Redis-sentinel是Redis的作者antirez在今年6月份完成的,因为Redis实例在各个大公司的应用,每个公司都需要一个 Redis集群的管理工具,被迫都自己写管理工具来管理Redis集群,antirez考虑到社区的急迫需

Redis的集群(故障转移)

Redis集群自身实现了高可用,当集群内少量节点出现故障时通过自动故障转移保证集群可以正常对外提供服务. 故障发现 1. 主观下线 当cluster-node-timeout时间内某节点无法与另一个节点顺利完成ping消息通信时,则将该节点标记为主观下线状态. 2. 客观下线 当某个节点判断另一个节点主观下线后,该节点的下线报告会通过Gossip消息传播.当接收节点发现消息体中含有主观下线的节点,其会尝试对该节点进行客观下线,依据下线报告是否在有效期内(如果在cluster-node-timeo

redis主从+sentinel故障转移部署

redis的认识 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集合).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追

redis演练(7) redis Sentinel实现故障转移

书接上文<redis演练(6) redis主从模式搭建>. <redis演练(6) redis主从模式搭建>中仅仅配置了redis主从环境.分别配置了2个主从结构. 分别是1.有向无环,2星型模型.配置起来非常简单.但是,遗留了一个尾巴,没有阐述.如果master宕掉了怎么办?redis如何实现fail-over故障转移?本文,就重点说一下这块.主要内容 手动实现fail-over效果 sentinel实现自动fail-over效果 手动实现fail-over效果 #有向无环模型(

为什么很多人用keepalived来实现redis故障转移

目前,Redis还没有一个类似于MySQL Proxy或Oracle RAC的官方HA方案.Redis作者有一个名为Redis Sentinel的计划 ,据称将会有监控,报警和自动故障转移三大功能,非常不错.但可惜的是短期内恐怕还不能开发完成.因此,如何在出现故障时自动转移是一个需要解决的问题.通过对网上一些资料的搜索,有建议采用HAProxy或Keepalived来实现的,事实上如果是做Failover而非负载均衡的话,Keepalived的效率肯定是超过HAProxy的,所以我决定采用Kee

Redis集群以及自动故障转移测试

在Redis中,与Sentinel(哨兵)实现的高可用相比,集群(cluster)更多的是强调数据的分片或者是节点的伸缩性,如果在集群的主节点上加入对应的从节点,集群还可以自动故障转移,因此相比Sentinel(哨兵)还是有不少优势的.以下简单测试Redis的集群(单机多实例的模式),来体验一下集群的自动故障转移功能,同时结合Python,来观察自动故障转移过程中应用程序端的表现. redis集群实例安装 启动6个redis集群实例,集群模式,除了正常的配置项目之外,需要在每个主节点中增加集群配

第十课——cluster故障转移操作,codis部署

作业描述] 1.cluster的故障转移操作,截图展示 2.部署codis,并写代码访问codis ==================================================   一.系统环境 二.cluster集群的故障转移 ##集群的故障转移前提是集群复制,复制原理和单节点的主从复制一样. ##从节点也要运行在集群模式下,通过cluster meet命令将从节点添加到集群环境: ##在即将成为从节点的节点命令行执行cluster replicate <node-id

Redis主从复制和主从切换

配置主从复制 建立从文件夹,譬如 /usr/local/slaves/下建立 6380 6381 两个文件夹(两个从服务器) 复制redis.conf到刚建立的两个文件夹中 修改redis.conf 中的 port 6380 slaveof 127.0.0.1 6379  ------ip表示主服务器的ip 端口表示主服务器端口 保存退出,另一个从服务器做同样修改,如果端口不是6380,修改断开即可,此处修改为6381 启动主服务器 redis-server redis.conf 进入从服务器文

Redis主从复制和集群配置

redis主从复制 概述 1.redis的复制功能是支持多个数据库之间的数据同步.一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库. 2.通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力.主数据库主要进行写操作,而从数据库负责读操作. 主从复制过程 主从复制过程:见下图