Redis主从、哨兵

Stella981
• 阅读 783

之前安装了redis,但是单节点redis不可靠,现在搭建redis主从,提高可用性。

一、搭建一主二从

  redis主从其实是读写分离,主节点写数据,从节点读数据。

  1、准备三台redis机器。redis的密码需要一致,否则主从切换时会有问题。

  2、选择两台,作为从机,编辑redis核心配置文件。

vim /usr/local/redis/redis.config

  3、修改配置(从机)

#主节点ip和端口replicaof <master-ip> <master-port>

#主节点redis密码masterauth <master-password>

replica-read-only yes

  4、删除工作空间之前的rdb和aof文件,工作空间位置在安装redis时是自己定义的,我的是/usr/local/redis/working

  5、重启redis

/etc/init.d/redis_init_script stop
/etc/init.d/redis_init_script start

  6、进入/usr/local/redis/working,发现rdb和aof又出现了,这个是同步的主节点的。

  7、启动redis客户端,查看从节点状态,如图第一张从节点,第二张主节点

redis-cli -a <password>

info replication

Redis主从、哨兵       Redis主从、哨兵

  8、测试读写数据有没有问题

  9、至此,一主二从搭建完成,但是还有一个问题,主节点挂掉之后从节点不会自动选举出新的主节点,下边我们加入哨兵,解决这个问题

二、哨兵(三台redis都要做如下配置)

  1、进入/usr/local/redis,创建并且配置sentinel.conf

port 26379 pidfile "/usr/local/redis/sentinel/redis-sentinel.pid" dir "/usr/local/redis/sentinel" daemonize yes protected-mode no logfile "/usr/local/redis/sentinel/redis-sentinel.log"# 配置哨兵 sentinel monitor mymaster 127.0.0.1 6379 2 # 密码 sentinel auth-pass <master-name> <password> # master被sentinel认定为失效的间隔时间 sentinel down-after-milliseconds mymaster 30000 # 剩余的slaves重新和新的master做同步的并行个数 sentinel parallel-syncs mymaster 1 # 主备切换的超时时间,哨兵要去做故障转移,这个时候哨兵也是一个进程,如果他没有去执行,超过这个时间后,会由其他的哨兵来处理 sentinel failover-timeout mymaster 180000

  2、启动3台哨兵

redis-sentinel sentinel.conf

  3、测试

    1. master挂了,看slave是否成为master
    2. master恢复,观察slave状态

  4、结论

    master挂了以后,由于哨兵监控,剩余slave会进行选举,选举后其中一个成为master,当原来的master恢复后,他会成为slave。

   5、补充:

    当主节点挂掉,变为从节点后,查看这台redis的信息(info replication),发现master_link_status:down。表示同步有问题。这是因为之前主节点没有配置

masterauth <master-password>属性,他作为主节点时用不到这个,所以当时没问题,当作为从节点,因为没有主节点的密码,所以就同步不了数据了。

                                          整理自慕课网《java架构师体系课》

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
redis服务器有哪些架构?每个架构的优劣是什么?
一、架构分类1.单主架构:只有一个redis节点,如果这个节点挂了,整个redis服务就不可用,这个不能在生产环境使用,一般是本地开发使用;2.主从架构:一个master一个或者多个slaver,从服务器是主服务器的副本,从服务器也可以
Stella981 Stella981
3年前
Redis 集群演进探讨和总结
Redis为什么需要集群?首先Redis单实例主要有单点,容量有限,流量压力上限的问题。Redis单点故障,可以通过主从复制replication,和自动故障转移sentinel哨兵机制。但Redis单Master实例提供读写服务,仍然有容量和压力问题,因此需要数据分区,构建多个Master实例同时提供读写服务(不仅限于从rep
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
3年前
Nginx + lua +[memcached,redis]
精品案例1、Nginxluamemcached,redis实现网站灰度发布2、分库分表/基于Leaf组件实现的全球唯一ID(非UUID)3、Redis独立数据监控,实现订单超时操作/MQ死信操作SelectPollEpollReactor模型4、分布式任务调试Quartz应用
Stella981 Stella981
3年前
Redis主从模式的常用类型
本文介绍Redis主从模式的常用类型。Redis的可靠性主要有主从模式和集群模式。对于主从模式而言,Redis有以下方案:Sentinel方案;Keepalived方案。Sentinel方案作为Redis主推的官方方案,主要的实现原理是通过引入哨兵sentinel节点,来投标决定master节点故障后,
Stella981 Stella981
3年前
Redis系列
Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,对于很多应用场景这种故障处理的方式是无法接受的。可喜的是Redis从2.8开始正式提供了RedisSentinel(哨兵)架构来解决这个问题。总结:Redis主从复制的缺点:没有办法对master进行动态
Stella981 Stella981
3年前
Redis Sentinel 哨兵模式
RedisSentinel哨兵模式Sentinel介绍Redis的主从模式下,主节点一旦发生故障不能提供服务,需要人工干预,将从节点晋升为主节点,同时还需要修改客户端配置。对于很多应用场景这种方式无法接受。Sentinel(哨兵)架构解决了redis主从人工干预的问题。Redis
Stella981 Stella981
3年前
Redis高可用技术解决方案总结
一、常见使用方式Redis的几种常见使用方式包括:Redis单副本;Redis多副本(主从);RedisSentinel(哨兵);RedisCluster;Redis自研。二、各种使用方式的优缺点1、Redis单副本Redis单副本,采用