redis安装+主从+哨兵模式和坑。

2023-11-15

一、安装

版本:3.2.11

1.解压
2.进入解压后的目录 执行 make
3.执行 make install (这一步需要root权限的用户执行
注:不使用root用户安装时,在make install 后添加PREFIX=/usr/local/redis,就可以把一些启动命令安装到指定的地方了。

上面的操作后基本上一个单节点的redis就算是安装好了,进入src目录 执行redis-server 就可以成功启动redis。

二、主从模式(master/slaver)

我的理解:
主从的作用或者说优势大概有两点
1.备份数据,当某个节点有问题时(无论是master还是slaver)方便从正常的节点恢复数据。
2.负载均衡,slaver节点只能读,可以分担一些master的读取操作。

注:slaver默认是只能读的,但是可以通过在master节点的redis.conf文件中将slave-read-only设置为no(默认yes)让slave设置为可以写。但是不推荐这样操作,master节点写数据时,会同时推送到slaver节点下,从而保持数据的一致性,但是在slave节点写的数据不会同步到master中,就会有问题。

主从模式的配置十分简单,在slaver节点的redis.conf中增加 slaveof 【masterIp】 【masterPort】

缺点:由于从节点只能读,所以缺点很明显加入master挂掉以后,redis就不能对外提供服务了,因为剩下的slave不能成为master,这个问题影响还是很大的。所以就有了下面的哨兵模式。

三、sentinel模式

sentinel的中文含义是哨兵、守卫。也就是说既然主从模式中,当master节点挂了以后,slave节点不能主动选举一个master节点出来,那么我就安排一个或多个sentinel来做这件事,当sentinel发现master节点挂了以后,sentinel就会从slave中重新选举一个master。

对sentinel模式的理解:

1.sentinel模式是建立在主从模式的基础上,如果只有一个Redis节点,sentinel就没有任何意义

2.当master节点挂了以后,sentinel会在slave中选择一个做为master,并修改它们的配置文件,其他slave的配置文件也会被修改,比如slaveof属性会指向新的master

3.当master节点重新启动后,它将不再是master而是做为slave接收新的master节点的同步数据

4.sentinel因为也是一个进程有挂掉的可能,所以sentinel也会启动多个形成一个sentinel集群

5.当主从模式配置密码时,sentinel也会同步将配置信息修改到配置文件中,不需要担心。

6.一个sentinel或sentinel集群可以管理多个主从Redis。

7.sentinel最好不要和Redis部署在同一台机器,不然Redis的服务器挂了以后,sentinel也挂了

8.sentinel监控的Redis集群都会定义一个master名字,这个名字代表Redis集群的master Redis。

注:当使用哨兵模式的时候 客户端就不需要直接连接redis,而是连接哨兵的ip和端口,由sentinel来提供具体的可提供服务的Redis实现,这样当master节点挂掉以后,sentinel就会感知并将新的master节点提供给使用者。

sentinel模式基本可以满足一般生产的需求,具备高可用性。但是当数据量过大到一台服务器存放不下的情况时,主从模式或sentinel模式就不能满足需求了,这个时候需要对存储的数据进行分片,将数据存储到多个Redis实例中,这就需要集群模式。

cluster的出现是为了解决单机Redis容量有限的问题,将Redis的数据根据一定的规则分配到多台机器。
cluster可以说是sentinel和主从模式的结合体,通过cluster可以实现主从和master重选功能,所以如果配置两个副本三个分片的话,就需要六个Redis实例。
因为Redis的数据是根据一定规则分配到cluster的不同机器的,当数据量过大时,可以新增机器进行扩容
  这种模式适合数据量巨大的缓存要求,当数据量不是很大使用sentinel即可。

四、主从+哨兵的配置

对于单纯的主从来讲不需要配置太多,只需要在slave节点 加上
slaveof 【masterIp】 【masterPort】 就可以了。
然后分别启动master和slave就可以了。

其他的参数:
port:端口
masterauth:master设置连接密码
requirepass:连接master是认证的密码
(由于哨兵模式在master节点挂掉之后会修改配置文件,所以masterauth和requirepass不管是主从都需要设置)
bind:这个属性并不是配置内个ip可以访问它,而是设置他可以让别人用内个ip进行访问,例如设置127.0.0.1 则只能本地服务器使用127.0.0.1进行访问,还有一种情况若服务器配置了多个网卡,例如A:10.10.10.1;B:10.10.10.2,此时在bind中配置了A,那以B访问则访问不到

protected-mode:是否只允许内网访问。

以上配置都是在redis.conf中设置的。

下面来看哨兵的配置

哨兵的启动和redis-server的启动没有关系,一个哨兵的集群可以监控多个不同的redis主从实例

sentinel monitor master-name ip redis-port quorum
例:
sentinel monitor mymaster 192.168.98.136 6379 1

quorum:quorum个sentinel认为master死了时,才能真正认为该master已经不可用了。(sentinel集群中各个sentinel也有互相通信,通过gossip协议)

sentinel auth-pass mymaster mypwd

连接master 需要的密码

down-after-milliseconds

sentinel会向master发送心跳PING来确认master是否存活,如果master在“一定时间范围”内不回应PONG 或者是回复了一个错误消息,那么这个sentinel会主观地(单方面地)认为这个master已经不可用了(subjectively down, 也简称为SDOWN)。而这个down-after-milliseconds就是用来指定这个“一定时间范围”的,单位是毫秒。

注:哨兵不会马上进行failover主备切换,因为还要考虑其他哨兵的意见,需要超过某个数量的哨兵都认为master凉凉了,才会准备进行准备切换。在这个时候也不是马上就能failover的,还是需要需要sentinel中的大多数sentinel授权后才可以进行failover

例如,集群中有5个sentinel,票数被设置为2,当2个sentinel认为一个master已经不可用了以后,将会触发failover,但是,进行failover的那个sentinel必须先获得至少3个sentinel的授权才可以实行failover。
如果票数被设置为5,要达到ODOWN状态,必须所有5个sentinel都主观认为master为不可用,要进行failover,那么得获得所有5个sentinel的授权。

protected-mode
这个属性在哨兵设置中很容易出现坑,由于哨兵间需要进行通信进行授权,所以这个属性设置为yes时只可以进行内网访问,看服务器的情况如果主从切换失败了,可以试试把这个属性设置为no。

参考博客:
https://blog.csdn.net/yypzye/article/details/52281282
https://www.cnblogs.com/zhoujinyi/p/5569462.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

redis安装+主从+哨兵模式和坑。 的相关文章

  • 消息中间件(一)

    文章目录 消息中间件 什么是中间件 为什么使用MQ 应用场景 JMS和AMQP JMS AMQP JMS和AMQP的区别 消息队列产品 消息中间件 什么是中间件 MQ全称为Message Queue 消息队列是应用程序和应用程序之间的通信方
  • Netty和Tomcat的区别、性能对比

    文章目录 一 Netty和Tomcat有什么区别 二 为什么Netty受欢迎 三 Netty为什么并发高 一 Netty和Tomcat有什么区别 Netty和Tomcat最大的区别就在于通信协议 Tomcat是基于Http协议的 他的实质是
  • 【使用 flink-cdc 将数据从 mysql 同时同步到 redis, elastisearch, clickhouse】

    要从 MySQL 同时同步到 Redis Elasticsearch 和 Clickhouse 可以使用 Flink CDC 和 Flink Table API 来实现 首先 需要在 Flink 中配置 CDC 数据源 使其能够连接到 My
  • redis安装+主从+哨兵模式和坑。

    一 安装 版本 3 2 11 1 解压 2 进入解压后的目录 执行 make 3 执行 make install 这一步需要root权限的用户执行 注 不使用root用户安装时 在make install 后添加PREFIX usr loc
  • [1100]rocketmq详解

    文章目录 rocketmq入门 消息队列 rocketmq示例图 rocketmq应用场景 搭建环境 环境安装 Linux RocketMQ下载及安装 RocketMQ目录结构 RocketMQ启动及测试 管理工具 mqadmin管理工具
  • 云vscode搭建--使用容器化部署

    Vscode作为一个轻量级的IDE 其支持丰富的插件 而通过这些插件我们就可以实现在Vscode中写任何语言的代码 Code Server是Vscode的网页版 启动Code Server之后我们就可以在浏览器中打开vscode来愉快的编写
  • Redis底层数据结构.md

    1 Redis 概述 Redis 数据库里面的每个键值对 key value 都是由对象 object 组成的 数据库键总是一个字符串对象 string object 数据库的值则可以是字符串对象 列表对象 list 哈希对象 hash 集
  • Redis基础知识(三):缓存穿透、缓存击穿、缓存雪崩

    文章目录 一 缓存穿透 出现过程 解决方法 二 缓存击穿 出现过程 解决方法 三 缓存雪崩 出现过程 解决方法 我们在项目中大量使用Redis承接海量数据的冲击 但是使用过程中也会遇到一些特殊的情况 这个就是缓存击穿 缓存穿透 缓存雪崩 一
  • 【Redis】集合Set和底层实现

    文章目录 Redis 集合 Set Set简介 常用命令 应用场景 共同关注实例 整数集合 整数集合介绍 整数集合的升级 哈希表 哈希表的原理和实现 Redis中的哈希表 rehash 渐进式rehash Redis 集合 Set Set简
  • rabbitMQ初识

    消息队列 RabbitMQ 认识MQ 同步和异步通讯 微服务间通讯有同步和异步两种方式 同步通讯 就像打电话 需要实时响应 异步通讯 就像发邮件 不需要马上回复 同步通讯 同步调用的优点 时效性较强 可以立即得到结果 同步调用的问题 耦合度
  • 布隆过滤器(Bloom Filter)

    1 引言 通常我们会遇到很多要判断一个元素是否在某个集合中的业务场景 一般想到的是将集合中所有元素保存起来 然后通过比较确定 链表 树 散列表 又叫哈希表 Hash table 等等数据结构都是这种思路 但是随着集合中元素的增加 我们需要的
  • RabbitMQ使用详解

    文章目录 RabbitMQ 一 简介 二 rabbitmq基本原理 三 安装 3 1安装erlang环境 3 2 安装rabbitmq 3 3 使用docker安装 四 RabbitMQ程序的编写 4 1 rabbitMQ支持的消息模型 4
  • 在Linux远程服务器上搭建JavaWeb开发环境

    配置 远程linux服务器版本为CentOS7 6 使用的是阿里云服务器 目录 1 安装JDK 1 1 查看yum源中JDK版本 1 2 使用yum安装JDK1 8 1 3 查看是否安装成功 2 安装MySQL 2 1 查看是否已安装mys
  • Win7环境下robotframework环境搭建(含安装包下载地址)

    本文记录在Windows环境下使用robotframework搭建自动化测试环境 1 安装robotframework依赖的语言环境 Python2 7 Robot Framework是一款python编写的功能自动化测试框架 运行依赖于p
  • mac编译安装Nginx

    一 安装wget 使用homebrew安装wget brew install wget 安装wget时报错 tar Error opening archive Failed to open Users xxx Library Caches
  • 用一个简单的例子教你如何 自定义ASP.NET Core 中间件(一)

    提起中间件大家一定不陌生 我们也用过 NET core很多很好用的中间件 但是如何自己写一个中间件呢 可能大部分同学不清楚怎么写 我之前也不会 看了微软官方文档 ASP NET Core 中间件 感觉讲的也不是很清楚 下面就用一个简单的例子
  • 用一个简单的例子教你如何 自定义ASP.NET Core 中间件(二)

    上一章已经说过了 中间件是一种装配到应用管道以处理请求和响应的软件 每个组件 选择是否将请求传递到管道中的下一个组件 可在管道中的下一个组件前后执行工作 请求委托用于生成请求管道 请求委托处理每个 HTTP 请求 一句话总结 中间件是比筛选
  • 高可用:如何实现消息队列的 HA?

    管理学上有一个木桶理论 一只水桶能装多少水取决于它最短的那块木板 这个理论推广到分布式系统的可用性上 就是系统整体的可用性取决于系统中最容易出现故障 或者性能最低的组件 系统中的各个组件都要进行高可用设计 防止单点故障 消息队列也不例外 本
  • 高效方便管理多版本Node(windows方式)

    作者主页 编程指南针 作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智
  • 高可用:如何实现消息队列的 HA?

    管理学上有一个木桶理论 一只水桶能装多少水取决于它最短的那块木板 这个理论推广到分布式系统的可用性上 就是系统整体的可用性取决于系统中最容易出现故障 或者性能最低的组件 系统中的各个组件都要进行高可用设计 防止单点故障 消息队列也不例外 本

随机推荐

  • java.util.LinkedHashMap cannot be cast to Entity

    前后端数据传输转换问题 java util LinkedHashMap cannot be cast to Entity 问题场景 项目前端使用json传输方式 后台接收后对象变成了LinkedHashMap ResponseBody Re
  • 方向包围盒OBB(oriented bounding box)

    制造几何仿真中的碰撞检测通常视为针对刚体对象间的碰撞检测 这样的话可以把非刚体即软体的建模和变形算法对碰撞检测的影响减少到最小 常见成熟的基于包围盒的碰撞检测 box intersection test 算法如 1 沿坐标轴的包围盒AABB
  • Unity3D关于ComputeShader

    由于最近在实验中需要大量循环计算产生网格 所以可能需要GPU的加速 对于compute shader学习下 可能对于做GPU加速有帮助 以下补充修改了转载文章的内容 原文链接 https blog csdn net csharpupdown
  • HTML怎么建立两行四列的li,关于CSS如何实现多行多列布局的方法

    这篇文章主要介绍了CSS实现多行多列的布局的实例代码 需要的朋友可以参考下 1 两列多行 HTML box1 实现两列多行布局 111 222 333 CSS box1 width 500px background EEEEEE box1
  • fortran求解雷诺方程_方程的计算机处理96(5)_C++vs

    计算机语言运用 数值计算9 方程的计算机处理96 5 C vs 计算机 电子线路组成的计算机器 人与计算机则是通过计算机语言 符号系统说给计算机听而交流 计算机语言有低级语言 机器语言 汇编 高级语言 C C C VB PASCAL LIS
  • 使用yarn搭建Vue,ElementUI,axios环境

    1 搭建vue ElementUI axios环境 1 1 安装yarn 安装yarn npm install g yarn 查看是否安装版本 yarn version yarn切换为国内源 yarn config set registry
  • OSI以及TCP参考模型

    一 网络发展历史 1 1946年第一代计算机网络是以单个计算机为中心的远程联机系统 2 1970年第二代计算机网络是以多个主机通过通信线路互联起来 3 1980年第三代计算机网络是以IOS 国际标准化组织 提出的OSI参考模型为中心的互联网
  • 图像匹配几种常见算法与实践

    奇技 指南 本文主要内容 1 模版匹配 2 特征匹配 3 深度学习去找目标 图像匹配的应用及背景 图像匹配是指通过一定的匹配算法在两幅或多幅图像之间识别同名点 应用 遥感 制图更新 计算机视觉应用程序 医疗用图像注册 图像匹配主要可分为以灰
  • 【STM32 x VScode】如何在vscode上编写stm32程序(固件库函数)

    本人使用keil5也算比较长时间了 但是keil5有个比较大的缺陷就是补全速度太慢 老是用的不太顺手 于是就想着使用万能的vscode来代替一下keil5的编写程序功能 注意 这里使用vscode并不是说可以把keil5给卸载了 它还是要借
  • 使用ADB指令永久隐藏或禁用状态栏和虚拟按键

    原理是强大的ADB命令 1 手机开启开发者模式 允许ADB调试 2 电脑上下载ADB包 adb rar 529 77 KB 下载次数 7681 3 解压到任意位置 比如c adb 4 cmd命令定位到adb目录 比如 cd c adb 5
  • 用于回归问题的异常鲁棒极限学习机(ORELM)(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 文献来源 极限学习机 ELM 作为机器学习中最有用的技术
  • 加密算法中的加盐值

    在应用中 出于到安全的考虑和数据的保密 需要使用到加密算法 有时候为了让加密的的结果更加扑朔迷离神鬼莫测一些 常常会给被加密的数据加点 盐 说白了 盐就是一串数字 完全是自己定义的 不多说 上实例 获取当前用户盐 param string
  • STM32外设系列—sg90(舵机)

    文章目录 一 sg90简介 二 引脚连接 三 控制方法 四 程序设计 4 1 配置定时器 4 2 编写控制程序 五 360 舵机 一 sg90简介 首先介绍说一下什么是舵机 舵机是一种位置 角度 伺服的驱动器 适用于一些需要角度不断变化的
  • listview动态标识被点击项并且不出现背景重绘紊乱的解决方法

    private int publicIndex 1 记录被点击item的id viewHolder layout setId position if position 1 0 publicIndex 1 第一次加载的时候默认选中第一项 如果
  • fpga卷积神经网络加速器,FPGA卷积神经网络综述

    如何使用FPGA加速机器学习算法 如何使用FPGA加速机器学习算法 当前 AI因为其CNN 卷积神经网络 算法出色的表现在图像识别领域占有举足轻重的地位 基本的CNN算法需要大量的计算和数据重用 非常适合使用FPGA来实现 上个月 Ralp
  • sql盲注

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 sql注入 盲注 前言 一 什么是盲注 二 步骤示例 1 测试注入点 2 测所在数据库长度 3 利用ASCII码猜当前数据库名 4 利用ASCII码查询表名 5 利用ASCI
  • Nginx的TCP运行时健康检查

    Nginx的TCP运行时健康检查 本章介绍如何配置TCP的运行状况检查 介绍 先决条件 被动TCP运行状况检查 服务器缓慢启动 活动TCP运行状况检查 微调TCP运行状况检查 匹配 配置块 介绍 NGINX和NGINX Plus可以持续测试
  • ORACLE如何停止一个JOB

    ORACLE如何停止一个JOB 1 相关表 视图 dba jobs all jobs user jobs 包含登录用户所有的JOB信息 dba jobs running 包含正在运行job相关信息 注意 须使用oracle的sys用户登录到
  • Matplotlib中plot和scatter以及subplot和add_axes区别

    之前在做练习时一直有两种方法 plot和scatter一直傻傻分不清 加上这次对matplotlib深入了解 可以清楚的去做判断 plot用法 from matplotlib import pyplot as plt plt plot 5
  • redis安装+主从+哨兵模式和坑。

    一 安装 版本 3 2 11 1 解压 2 进入解压后的目录 执行 make 3 执行 make install 这一步需要root权限的用户执行 注 不使用root用户安装时 在make install 后添加PREFIX usr loc