之前安装了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

      

  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架构师体系课》

Redis主从、哨兵的更多相关文章

  1. redis主从+ 哨兵模式(sentinel)+漂移VIP实现高可用系统

    原文:https://www.jianshu.com/p/c2ab606b00b7 客户端程序 客户端程序(如PHP程序)连接redis时需要ip和port,但redis-server进行故障转移时, ...

  2. Redis 主从+哨兵+监控 (centos7.2 + redis 3.2.9 )

    环境准备: 192.168.0.2  redis01 主 192.168.0.3  redis02 从 192.168.0.4  redis03 从 Redis 主从搭建 一:下载并安装redis软件 ...

  3. redis主从+哨兵模式

    主从模式配置分为手动和配置文件两种方式进行配置,我现在有192.168.238.128(CentOS1).192.168.238.131(CentOS3).192.168.238.132(CentOS ...

  4. redis主从+哨兵模式(借鉴)

    三台机器分布 192.168.189.129  //  master的角色 192.168.189.130  //  slave1的角色 192.168.189.131  //  salve2的角色 ...

  5. 【Redis学习专题】- Redis主从+哨兵集群部署

    集群版本: redis-4.0.14 集群节点: 节点角色 IP redis-master 10.100.8.21 redis-slave1 10.100.8.22 redis-slave2 10.1 ...

  6. Redis主从&哨兵集群搭建

    主从集群 在搭建主从集群前,我们先把Redis安装起来: #解压Redis压缩包 [root@master lf]# tar -zxvf redis-6.2.1.tar.gz -- #安装gcc [r ...

  7. 三千字介绍Redis主从+哨兵+集群

    一.Redis持久化策略 1.RDB 每隔几分钟或者一段时间会将redis内存中的数据全量的写入到一个文件中去. 优点: 因为他是每隔一段时间的全量备份,代表了每个时间段的数据.所以适合做冷备份. R ...

  8. Redis主从哨兵和集群搭建

    主从配置 哨兵配置 集群配置 1.主从: 国王和丞相,国王权力大(读写),丞相权利小(读) 2.哨兵: 国王和王子,国王死了(主服务挂掉),王子继位(从服务变主服务) 3.集群: 国王和国王,一个国王 ...

  9. redis 主从 哨兵

    数据库为什么要读写分离 写代码好多年了,大家先抛弃在代码框架里面各种花哨的设计之外,写的代码到最后无非就是为了增删查改数据库.一般项目数据库刚开始只是但一个库,随着数据量的增大,就开始优化数据库(抛开 ...

  10. redis主从+哨兵 安装配置一

    一.目的 实现redis的高可用. 二.同步过程 注意:当Master在后台把数据保存到快照文件完成之后,Master会把这个快照文件传送给Slave,而Slave则把内存清空后,加载该文件到内存中: ...

随机推荐

  1. baomidou的dynamic-datasource读写分离实现和加入AOP根据方法名选择库

    文档 https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter/wikis/pages maven   <depende ...

  2. debian/ubuntu系统vi无法删除字符的解决办法

    之前在 Linux 下操作,一直使用的是 Centos 系统,使用 vi 编辑命令一直很顺畅. 最近,入手了一台 debian 操作系统的 vps.在操作 vi 命令时,发现当输入 i 要进行文件编辑 ...

  3. Qt/C++通用跨平台Onvif工具/支持海康大华宇视华为天地伟业等/云台控制/预置位管理/工程调试利器

    一.前言 在安防视频监控行业,Onvif作为国际标准,几乎主要的厂商都支持,不仅包含了国内的厂商,也包括主要的国际厂商,由于有了这个标准的存在,使得不同设备不同安防平台之间,能够接入各个厂家的硬件设备 ...

  4. blast只保留一个最优结果

    使用blast比对时,只保留一个最优结果 代码: blastn -db nt.blast.db -query seq.fa -out blast.nt.result -evalue 1e-5 -out ...

  5. 使用R语言查询某物种所有通路及通路内的基因

    使用R语言查询某物种所有通路及通路内的基因,这里使用Y书的clusterProfiler包. 这里以人类为例查询所有通路及通路内的基因: library(R.utils) R.utils::setOp ...

  6. Hbase shell学习

    通过Shell工具可以对云数据库HBase进行数据管理,包括建表.插入数据.删除数据和删除表等操作,本文介绍Shell的基本使用命令. 访问配置 如果使用的是云数据库HBase标准版,基本环境的配置操 ...

  7. w3cschool-Netty 实战精髓篇2

    https://www.w3cschool.cn/essential_netty_in_action/essential_netty_in_action-adkv28bm.html 研究Netty中的 ...

  8. nginx详细参数配置(史上最全)

    Nginx (engine x) 是一个轻量级高性能的HTTP和反向代理服务器,同时也是一个通用 代理服务器 (TCP/UDP/IMAP/POP3/SMTP),最初由俄罗斯人Igor Sysoev编写 ...

  9. python:公共操作

    运算符 公共方法 range """ 1 2 3 4 5 6 7 8 9 """ # 不包含 end# 如果不写开始,默认从零开始# 如果不 ...

  10. MySQL系统命令

    原文链接:https://blog.liuzijian.com/post/34b3b940-c053-9d75-06e2-07a2e7aeedc3.html 登录命令 mysql -h 主机 -P 端 ...