echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!!


搭建Redis集群之前请准备好3台已经安装好Redis的服务器,CentOS7下安装Redis请阅读:https://blog.csdn.net/xlecho/article/details/102975520

为什么需要Redis集群

  • Redis 本身的 QPS 已经很高了,但是如果在一些并发量非常高的情况下,性能还是会受到影响。这个时候我们希望有更多的 Redis 服务来完成工作。
  • 第二个是出于存储的考虑。因为Redis所有的数据都放在内存中,如果数据量大,很容易受到硬件的限制。升级硬件收效和成本比太低,所以我们需要有一种横向扩展的方法。
  • 第三个是可用性和安全的问题。如果只有一个Redis服务,一旦服务宕机,那么所有的客户端都无法访问,会对业务造成很大的影响。另一个,如果硬件发生故障,而单机的数据无法恢复的话,带来的影响也是灾难性的。可用性、数据安全、性能都可以通过搭建多个 Reids 服务实现。其中有一个是主节点(master),可以有多个从节点(slave)。主从之间通过数据同步,存储完全相同的数据。如果主节点发生故障,则把某个从节点改成主节点,访问新的主节点。

Redis集群的安装环境准备

服务器地址 系统 Redis版本
192.168.222.133 CentOS7 5.0.1
192.168.222.134 CentOS7 5.0.1
192.168.222.135 CentOS7 5.0.1

我们以135作为master,其他两个节点全部作为slave节点

在slave中的redis.con配置如下代码

slaveof 192.168.222.135 6379
# 注意,如果你的节点设置了密码访问,你需要配置下面这个配置
masterauth master密码

这里没有将slave设置成为‘只读’,如果实际生产环境如果不设置这个集群就会出现重大问题。

配置完成之后重启Redis

service redis start

查看主节点的集群状态

# 启动redis
redis-server redis.conf
# 连接redis
redis-cli -h 192.168.222.135 -p 6379
# 查看状态
info replication

配置如果成功我们可以看到如下信息:

退出集群

退出集群比较简单,可以直接删除掉上面的配置,也可以执行以下命令

 slaveof no one

看到这个信息我们就已经完成了我们的主从配置。但是什么是哨兵模式?哨兵模式是基于我们集群的,我们有了集群之后,我们就要来配置我们的哨兵模式了

什么是哨兵模式

哨兵模式英文名Sentinel,它是为了解决Redis集群的高可用应运而生的。Redis集群,一般来说只会有一个master服务,当master挂掉之后,之能手动切换master就会造成一段时间内的服务不可用。sentinel就是专门针对这种情况而产生的一个监听服务。它主要负责监听我们一个组内所有Redis,当我们的master挂掉之后,它就会根据Raft算法进行选举一台新的leader出来,然后将选举出来的leader当成我们的master。

搭建哨兵模式

哨兵模式的主要作用就是监控弄Redis集群,所以我们搭建哨兵模式之前要确认我们的Redis集群已经成功搭建了。哨兵模式的搭建其实也相对比较简单,只需要配置主节点监控即可。

# 找到redis根目录下面的sentinel.conf的配置文件,修改如下配置
daemonize yes
port 26379
protected-mode no
dir /usr/local/redis/redis-5.0.1/sentinel-tmp
sentinel monitor mymaster 192.168.222.135 6379 2
sentinel auth-pass mymaster 48835a9c-7a5a-4ec8-af6a-80af3e87b194
# 如果哨兵3s内没有收到主节点的心跳,哨兵就认为主节点宕机了,默认是30秒
sentinel down-after-milliseconds mymaster 3000
# 如果10秒后,master仍没活过来,则启动failover,默认180s
sentinel failover-timeout mymaster 10000
  • 先启动Redis服务,然后在启动sentinel服务
# 启动redis服务
redis-server redis.conf
# 启动sentinel
redis-sentinel sentinel.conf

模拟master宕机,检测sentinel服务是否成功

模拟之前确保我们的redis、sentinel服务都启动了,登录master,直接在master上面进行shutdown。操作完成之后等待一会,然后使用登录我们的从服务器,连接上从服务的redis之后,我们使用命令info replication 查看当前节点是否成为了master

  • 我这里本来135是master,使用info replication可以看到如下结果

  • 135使用shutdown之后,分别查看134/133两台服务器

注意:采坑



这是由于我们的下面两行配置的位置放反了引起的。正确顺序按照下面的顺序即可

sentinel monitor mymaster 192.168.222.135 6379 2
sentinel auth-pass mymaster 48835a9c-7a5a-4ec8-af6a-80af3e87b194

做一个有底线的博客主

Redis集群--Redis集群之哨兵模式的更多相关文章

  1. 【运维技术】redis(一主两从三哨兵模式搭建)记录

    redis(一主两从三哨兵模式搭建)记录 目的: 让看看这篇文章的的人能够知道:软件架构.软件的安装.配置.基本运维的操作.高可用测试.也包含我自己,能够节省对应的时间. 软件架构: 生产环境使用三台 ...

  2. Redis 复制技术和高可用sentinel(哨兵模式)

    redis的复制技术和高可用(哨兵模式) 1 复制 为什么要复制 实现数据的多副本存储,从而可以实现服务的高可用 提供更好的读性能复制技术的关键点及难点 如何指定被复制对象 增量还是全量以及如何实现增 ...

  3. Redis 集群_主从配置_哨兵模式

    首先:slaveof 可以在[从]服务器启动一个service服务,直接将[从]服务器定义为[从Redis] redis-server --slaveof <master-ip> < ...

  4. Redis的集群方案之Sentinel(哨兵模式)(待实践)

    哨兵模式是主从切换的一种方案,但是可以借助此方案实现集群,达到高可用. 先收集教程,待实践. 参考: https://redis.io/topics/sentinel(官方文档) http://ife ...

  5. redis(一主两从三哨兵模式搭建)记录

    转自:http://www.cnblogs.com/fly-piglet/p/9836314.html 目的: 让看看这篇文章的的人能够知道:软件架构.软件的安装.配置.基本运维的操作.高可用测试.也 ...

  6. linux安装redis及主从复制、读写分离、哨兵模式

    Redis安装与部署 版本最好选择3.0及以上.以后还可以部署Redis集群. 1.下载: [root@bogon redis-3.0.0]# cd /usr/local [root@bogon lo ...

  7. redis 的一主二从三哨兵模式

    概述 在部署redis 的时候,如果redis宕机,缓存将不可用,redis提供了哨兵模式保证redis实现高可用. 即一台主机两台从机,三台哨兵主机,如果主实例宕机,哨兵将将一台从机升级为主机.实现 ...

  8. redis集群主从集群搭建、sentinel(哨兵集群)配置以及Jedis 哨兵模式简要配置

    前端时间项目上为了提高平台性能,为应用添加了redis缓存,为了提高服务的可靠性,redis部署了高可用的主从缓存,主从切换使用的redis自带的sentinel集群.现在权作记录.

  9. Redis Sentinel的Redis集群(主从&Sharding)高可用方案

    在不使用redis3.0之后版本的情况下,对于redis服务端一般是采用Sentinel哨兵模式,也就是一主多备的方式. 这里,先抛出三个问题, 问题1:单节点宕机数据丢失?问题2:多节点(节点间没有 ...

随机推荐

  1. uni-app h5端跳转到底部导航栏的时候使用方法uni.switchTab跳转刷新页面更新数据

    h5端的uni-app项目 需求:uni-app h5端跳转到底部导航栏的时候使用方法uni.switchTab跳转刷新页面更新数据 百度的方法如下: uni.switchTab({ url: '/p ...

  2. BZOJ 4392 卡牌游戏

    Description 奶牛贝茜是卡牌游戏的狂热爱好者, 但是令人吃惊的, 她缺乏对手. 不幸的是, 任何牧 群里的其他牛都不是好对手. 他们实在是太差了 , 实际上, 他们玩卡牌游戏时会遵循一种完全 ...

  3. python urllib2实现http GET PUT DELETE POST的方法

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/3/11 下午8:33 # @Author : liubing # @File ...

  4. strcpy()、strncpy()和memcpy()对比

    strcpy()函数声明:char *strcpy(char *dest, const char *src)返回参数:指向最终的目标字符串 dest 的指针.注意事项:只能复制char类型的字符数组, ...

  5. oracle 分区表(子分区)收缩笔记

    思路1.首先移动子分区到别的表空间.2.收缩数据文件.3.再把子分区移回原表空间. ---------------------------------------------生成发送报告移动子分区语句 ...

  6. PHP7源码之array_unique函数分析

    以下源码基于 PHP 7.3.8 array array_unique ( array $array [, int $sort_flags = SORT_STRING ] ) (PHP 4 >= ...

  7. mysql连接方法

    一.MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格) mysql -h localhost -u root -p123或mysql -u ...

  8. Java 中的 final、finally、finalize 有什么不同?

    Java 中 final.finally.finalize 有什么不同?这是在 Java 面试中经常问到的问题,他们究竟有什么不同呢? 这三个看起来很相似,其实他们的关系就像卡巴斯基和巴基斯坦一样有基 ...

  9. git jenkins 基本部署

    git  jenkins  本地仓库基础 1.安装git [root@gitlab ~]# yum install git -y 2.配置git [root@gitlab ~]# git config ...

  10. 百万年薪python之路 -- 变量及if的练习

    1.简述变量命名规范 1.变量由数字,字母,下划线组成 2.不能以数字开头 3.不能使用python关键字 4.不能使用中文和拼音命名 5.区分大小写 6.变量名要具有描述性 7.推荐写法 7.1驼峰 ...