当前位置: 首页 > news >正文

redis哨兵和集群部署手册

一、哨兵模式原理及作用

 1.原理

        哨兵(sentinel): 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现 故障时,通过投票机制选择新的master并将所有slave连接到新的master。所以整个运行哨兵的集群的数量不得少于三个节点。(哨兵必须是奇数)

2.作用

(1)监控: 哨兵会不断地检测主节点和从节点是否运行正常。

(2)自动故障转移: 当主节点不能正常工作时,哨兵会开始自动故障转移操作,她会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为新的主节点。

(3)通知(提醒): 哨兵可以将故障转移的结果发送给客户端。

二、如何开启Redis数据库主从复制

1.实验环境

虚拟机版本VMware® Workstation 16 Pro 16.2.4 build-20089737
镜像版本CentOS-7-x86_64-DVD-1708.iso
Redis版本Redis-5.0.7
主服务器地址192.168.254.106/24
从服务器1地址192.168.254.107/24
从服务器2地址192.168.254.108/24

2.实验要求

在主从复制的基础上通过修改配置文件完成redis哨兵和集群的配置

3.实验具体配置

systemctl stop firewalld

setenforce 0

vim /opt/redis-5.0.7/sentinel.conf

protected-mode no                                                      #17行,关闭保护模式

port 26379                                                             #21行,Redis哨兵默认的监听端口

daemonize yes                                                      #26行,指定sentinel为后台启动

logfile "/var/log/sentinel.log"                                 #36行,指定日志存放路径

dir "/var/lib/redis/6379"                                         #65行,指定数据库存放路径

sentinel monitor mymaster 192.168.254.106 6379 2      #84行,修改指定该哨兵节点监控192.168.254.106:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移

sentinel down-after-milliseconds mymaster 30000 #113行,判定服务器down掉的时间周期,默认30000毫秒(30秒)

sentinel failover-timeout mymaster 180000            #146行,故障节点的最大超时时间为180000(180秒)

4.启动哨兵模式

先启master,再启slave

cd /opt/redis-5.0.7/

redis-sentinel sentinel.conf &

注意!先启动主服务器,再启动从服务器

5.故障模拟

查看redis-server进程号

杀死Master节点上redis-server的进程号

6.验证结果

tail -f /var/log/sentinel.log

redis-cli -p 26379 INFO Sentinel

2.Redis集群模式

  1.集群的作用和数据分片

1.作用

(1)数据分区:数据分区(或称数据分片) 是集群最核心的功能。

        集群将数据分散到多个节点,一方面突破了 Redis 单机内存大小的限制,存储容量大大增加;另一方面每个主节点都可以对外提供读服务和写服务,大大提高了集群的响应能力。

        Redis 单机内存大小受限问题,在介绍持久化和主从复制时都有提及;例如,如果单机内存太大,bgsave 和 bgrewriteaof的 fork 操作可能导致主进程阻塞,主从环境下主机切换时可能导致从节点长时间无法提供服务,全量复制阶段主节点的复制缓冲区可能溢出。

(2)高可用:集群支持主从复制和主节点的自动故障转移(与哨兵类似) ;当任一节点发生故障时,集群仍然可以对外提供服务。

数据分片

(1)Redis集群引入了哈希槽的概念

(2)Redis集群有 16384 个哈希槽( 编号0-16383)

(3)集群的每个节点负责一部分哈希槽

(4)每个Key 通过 CRC16 校验后对16384取余来决定放置哪个哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。

<- - -以3个节点组成的集群为例- - ->

节点A 包含0到5460号哈希槽

节点B 包含5461到10922号哈希槽

节点C 包含10923到16383号哈希槽

环境准备

1.redis的集群一般需要**6个节点,3主3从**。 方便起见, 这里所有节点在3台服务器上模拟,每台主机上设置一主一备,以IP地址和端口进行区分:

(1)三个主节点端口号:6001,6002,6003

(2)对应的从节点端口号:7001,7002,7003

服务器类型系统和IP地址需要安装的组件节点端口
Master1CentOS7.4(64位) 192.168.254.106redis-5.0.7.tar.gz6001
Slave 1CentOS7.4(64位) 192.168.254.106redis-5.0.7.tar.gz7001
Master2CentOS7.4(64位) 192.168.254.107redis-5.0.7.tar.gz6002
Slave 2CentOS7.4(64位) 192.168.254.107redis-5.0.7.tar.gz7002
Master3CentOS7.4(64位) 192.168.254.108redis-5.0.7.tar.gz6003
Slave 3CentOS7.4(64位) 192.168.254.108redis-5.0.7.tar.gz7003

3.创建目录复制配置文件到对应的节点上

(1)第一台主机:192.168.254.106

cd /etc/redis/

mkdir -p redis-cluster/redis6001

mkdir -p redis-cluster/redis7001

cp /opt/redis-5.0.7/redis.conf /etc/redis/redis-cluster/redis6001/

cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis6001/

cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis7001/

(2)第二台主机:192.168.254.107

cd /etc/redis/

mkdir -p redis-cluster/redis6002

mkdir -p redis-cluster/redis7002

cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis6002/

cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis7002/

(3)第三台主机:192.168.254.108

cd /etc/redis/

mkdir -p redis-cluster/redis6003

mkdir -p redis-cluster/redis7003

cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis6003/

cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis7003/

4. 修改主配置文件,设置开启集群功能

先在Master1上配置,然后将配置文件复制到其他节点服务器

#Master1配置如下,其他5个服务器的配置文件类似,注意6个端口都要不一样。

cd /etc/redis/redis-cluster/redis6001

vim redis.conf

#bind 127.0.0.1                                               #69行,注释掉bind 项,默认监听所有网卡

protected-mode no                                        #88行,修改,关闭保护模式

port 6001                                                       #92行,修改,redis监听端口

daemonize yes                                               #136行,以独立进程启动

cluster-enabled yes                                        #832行,取消注释,开启群集功能

cluster-config-file nodes-6379.conf         #840行,取消注释,取消注释,群集名称文件设置

cluster-node-timeout 15000                           #846行,取消注释群集超时时间设置

appendonly yes                                              #699行,修改,开启AOF持久化

启动所有redis节点

 启动群集

#前三台为Master,后三台为Slave,下面交互的时候需要输入yes 才可以创建。

redis-cli --cluster create 192.168.254.106:6001 192.168.254.107:6002 192.168.254.108:6003 192.168.254.106:7001 192.168.254.107:7002 192.168.254.108:7003 --cluster-replicas 1

 #-replicas 1   表示每个主节点有1个从节点。

测试集群

 #加-c参数,节点之间就可以互相跳转

redis-cli -h 192.168.156.10 -p 6001 -c

 #查看节点的哈希槽编号范围

192.168.156.10:6001> cluster slots   

192.168.156.10:6001> set hobby dance

#查看键的槽编号   

192.168.156.110:6002> cluster keyslot hobby


总结

        以上就是Redis高可用的两种方法,这两种方法均以Redis主从复制为基石。它们可以很好的应对web2.0纯动态网站类型的三高问题.

相关文章:

redis哨兵和集群部署手册

一、哨兵模式原理及作用 1.原理 哨兵&#xff08;sentinel&#xff09;&#xff1a; 是一个分布式系统&#xff0c;用于对主从结构中的每台服务器进行监控&#xff0c;当出现 故障时&#xff0c;通过投票机制选择新的master并将所有slave连接到新的master。所以整个运行哨兵的集…...

ctfshow web入门 java 295 298-300

其他没啥好讲的&#xff0c;都是工具就通杀了 web295 漏洞地址 http://ip/S2-048/integration/saveGangster.action 这里我们可以看到他是解析了 尝试使用网上的payload %{(#dmognl.OgnlContextDEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess#dm):((#container#cont…...

SWIG包装器使用指南——(四)C#使用SWIG简介与实践

SWIG系列&#xff1a;http://t.csdn.cn/cIAcr 文章目录一、简介二、全局函数、变量、常量三、继承四、传递指针、引用、数组与值五、基本类型的指针与引用六、基本类型的数组七、基本类型的默认map规则八、常用的typemap方法九、代码插入十、实践10.1 如何映射Foo*&到ref F…...

HashTable, HashMap 和 ConcurrentHashMap

HashTable, HashMap 和 ConcurrentHashMap 都是 Java 集合框架中的类&#xff0c;用于存储和操作键值对。它们之间存在一些关键区别&#xff0c;如下所示&#xff1a; 1.同步性&#xff1a; HashTable&#xff1a;线程安全&#xff0c;所有的方法都是同步的&#xff08;synchr…...

ToBeWritten之IoT 技战法

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…...

基于ASP.NET开发的医院手术麻醉信息管理系统源码 项目源码

系统主要功能介绍&#xff1a; 门诊科室管理系统&#xff1a;手术快速申请、手术申请、手术审核 麻醉科管理系统&#xff1a;手术安排、术后处方、术后小结、PCS实施及管理记录、手术流程 手术护理系统&#xff1a;手术安排、安排临时手术、添加急诊手术、局麻手术护理、整体护…...

伪加密超具体破解办法,直击原理底层,细致演示!!!

前言&#xff1a; 由于我自己目前在misc和取证工作中&#xff0c;也遇到很多压缩包的问题&#xff0c;我个人非常喜欢做压缩包的题目&#xff0c;但也会遇到伪加密问题难以破解&#xff0c;全网ctf教程我都看完了&#xff0c;但是都觉得不够具体&#xff0c;所以我写一篇博客&…...

ChatGPT大规模封锁亚洲地区账号

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 在毫无征兆的情况下&#xff0c;从3月31日开始OpenAI大规模封号&#xff0c;而且主要集中在亚洲地区&#xff0c;特别是ip地址在台湾、日本、香港三地的&#xff0c;命中率目测40%。新注册的账号、…...

脂肪酸脂质Myristic acid PEG NHS,Myristic-acid PEG NHS ester,肉豆蔻酸PEG活性酯,具有优异疏水性

一、基础产品数据&#xff1a; 中文名&#xff1a;肉豆蔻酸PEG N-羟基琥珀酰亚胺&#xff0c;肉豆蔻酸PEG活性酯 英文名&#xff1a;Myristic acid PEG NHS&#xff0c;Myristic-acid PEG NHS ester&#xff0c;Myristic acid PEG SE 结构式&#xff08;Structural&#xff09;…...

MFC - CFormView类学习1

CFormView简介 MFC提供了一个名为CFormView的特殊视图类&#xff0c;我们称其为表单视图。表单视图是指用控件来输入和输出数据的视图&#xff0c;用户可以方便地在表单视图中使用控件。表单视图具有对话框和滚动视图的特性&#xff0c;它使程序看起来象是一个具有滚动条的对话…...

图像预处理方法

图像预处理 膨胀腐蚀概述 ⚫ 膨胀、腐蚀属于形态学的操作, 简单来说就是基于形状的一系列图像处理操作 ⚫ 膨胀腐蚀是基于高亮部分(白色)操作的, 膨胀是対高亮部分进行膨胀, 类似“领域扩张”, 腐蚀是高亮部分被腐蚀, 类似“领域被蚕食” ⚫ 膨胀腐蚀的应用和功能: 消除噪声…...

【蓝桥杯C/C++】专题六:动态规划

专题六&#xff1a;动态规划 目录专题六&#xff1a;动态规划导读什么是动态规划解决的问题解题步骤动态规划应该如何debug记忆化搜索斐波那契数题目代码题解爬楼梯题目代码题解使用最小花费爬楼梯题目代码题解不同路径题目题解dfsdp凑硬币题目题解dfsdp滑雪题目代码题解汉罗塔…...

图的定义和基本术语

图的定义和基本术语1.图的定义2.图的基本术语3.图的分类1.图的定义 图是由顶点和有穷非空集合和顶点边的集合吗&#xff0c;表示为G(V,E)。 G表示一个图&#xff0c;V是图G的顶点&#xff08;数据元素&#xff09;的集合&#xff0c;E是图G中顶点之间边的集合。在图中&#xf…...

041:cesium加载Blue Marble地图

第041个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中加载Blue Marble地图。Blue Marble是一个术语,用来描述星球漂浮在浩瀚太空中的形象。早在 1972 年,阿波罗 17 号任务的工作人员就首次捕捉到了地球的标志性卫星图像,并将其称为“Blue Marble”。从那时起,NA…...

【概念梳理】激活函数

一、引言 常用的激活函数如下&#xff1a; 1、Sigmoid函数 2、Tanh函数 3、ReLU函数 4、ELU函数 5、PReLU函数 6、Leaky ReLU函数 7、Maxout函数 8、Mish函数 二、激活函数的定义 多层神经网络中&#xff0c;上层节点的输出和下层节点的输入之间具有一个函数关系&#xff0c;…...

【python】@property 和 @staticmethod

property 和 staticmethod 是 Python 中的两个装饰器&#xff0c;它们分别用于在类中创建属性或静态方法。它们的作用如下&#xff1a; property property&#xff1a;用于将类的一个方法作为属性访问。在 Python 中&#xff0c;使用“getter” 和“setter”方法来实现属性&a…...

Spring题集 - Spring AOP相关面试题总结

文章目录01. Spring AOP 的理解?02. Spring AOP 思想的代码实现03. Spring AOP 的相关术语有哪些&#xff1f;04. Spring AOP 基于注解的切面实现&#xff1f;05. Spring AOP 的通知有哪些类型&#xff1f;06. AOP 有哪些实现方式&#xff1f;07. Spring AOP 和 AspectJ AOP 有…...

分考场

[蓝桥杯 2017 国 C] 分考场(假题&#xff1a;最小色数) 题目描述 nnn 个人参加某项特殊考试。 为了公平&#xff0c;要求任何两个认识的人不能分在同一个考场。 求最少需要分几个考场才能满足条件。 输入格式 第一行&#xff0c;一个整数 n(1<n<100)n(1<n<100…...

BI技巧丨DAX Studio

DAX Studio DAX Studio&#xff0c;作为PowerBI外部插件使用率排名第一的插件&#xff0c;相信各位小伙伴或多或少都听说过&#xff0c;那么DAX Studio具体有哪些功能呢&#xff1f; PS&#xff1a;DAX Studio的下载链接&#xff0c;小伙伴们可以自行搜索&#xff0c;这里就不…...

Java 8常用时间 API

Date: 你不爱我了吗? &#x1f6a1;本地时间时区相关格式化在Java 8中&#xff0c;Instant类用于表示时间戳&#xff0c;相当于旧的Date类&#xff1b;LocalDateTime类用于表示日期和时间&#xff0c;相当于旧的Calendar类&#xff1b;DateTimeFormatter类用于格式化日期和时间…...

实战应用解析:基于快马平台实现openclaw切换模型赋能电商数据爬取与可视化项目

最近在做一个电商数据分析的小项目时&#xff0c;发现不同环节对AI模型的需求差异很大。比如爬虫需要严谨的逻辑&#xff0c;而可视化则需要创意和美观。正好在InsCode(快马)平台上尝试了openclaw切换模型的功能&#xff0c;整个过程特别顺畅&#xff0c;分享下我的实战经验。 …...

OFA iic/ofa_visual-entailment_snli-ve_large_en镜像多场景落地:教育+电商+出版

OFA图像语义蕴含模型多场景落地&#xff1a;教育电商出版实战指南 1. 镜像简介与核心价值 你手头有一张图片&#xff0c;还有两段描述它的英文句子。你能判断这两段话在逻辑上是什么关系吗&#xff1f;比如&#xff0c;第一句话说“图片里有一个水瓶”&#xff0c;第二句话说…...

【RAG】【embeddings21】Isaacus嵌入模型

案例概述 llama-index-embeddings-isaacus包包含用于构建Isaacus法律AI嵌入模型应用程序的LlamaIndex集成。此集成允许您轻松连接并使用Kanon 2嵌入器 - 在大规模法律嵌入基准(MLEB)上世界上最准确的法律嵌入模型。 Isaacus嵌入支持任务特定优化&#xff1a; task"retr…...

WorkshopDL:跨平台资源获取的开源工具解决方案

WorkshopDL&#xff1a;跨平台资源获取的开源工具解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 在游戏模组生态中&#xff0c;跨平台资源访问与高效下载一直是技术爱…...

Paperxie AI 毕业论文写作,助力大学生高效搞定初稿

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/ai/dissertationhttps://www.paperxie.cn/ai/dissertation 在本科毕业季的朋友圈里&#xff0c;总能刷到这样的动态&#xff1a;凌晨三点的台灯下&#xff0c;对着空白文档发…...

Agent 帮不了你,不是因为它不够聪明

上一篇我们分析了 CLI vs MCP 的争论本质上是在讨论"管道"&#xff0c;而真正缺的是"水龙头"。这篇继续往下挖&#xff1a;就算水龙头开了&#xff0c;你也大概率接不上。Agent 在现实中寸步难行的原因&#xff0c;比大多数人想的更结构化。 一个常见的许诺…...

Qwen3模型快速部署教程:10分钟搞定GPU环境与首次调用

Qwen3模型快速部署教程&#xff1a;10分钟搞定GPU环境与首次调用 你是不是也对那些动辄几十GB、部署起来让人头大的大模型望而却步&#xff1f;觉得在自己的机器上跑起来一个像样的AI模型&#xff0c;是件门槛很高的事情&#xff1f; 今天&#xff0c;我就带你打破这个刻板印…...

实时手机检测-通用企业应用案例:手机回收站自动分拣系统集成

实时手机检测-通用企业应用案例&#xff1a;手机回收站自动分拣系统集成 1. 引言&#xff1a;当手机回收遇上AI&#xff0c;效率革命正在发生 想象一下&#xff0c;一个大型的手机回收处理中心&#xff0c;每天要处理成千上万部来自不同渠道的旧手机。工人们需要手动将手机从…...

逆向新手也能懂:用Python脚本5分钟搞定‘长城杯’EasyRe逆向题

逆向工程零基础入门&#xff1a;用Python五分钟破解CTF异或加密题 第一次接触CTF逆向题时&#xff0c;看着满屏的汇编代码和反编译结果&#xff0c;我完全不知所措。直到发现有些题目其实只需要一点Python脚本就能解决——比如这道来自"长城杯"网络安全大赛的EasyRe题…...

高效掌握Mermaid:从文本到可视化的实战指南

高效掌握Mermaid&#xff1a;从文本到可视化的实战指南 【免费下载链接】mermaid mermaid-js/mermaid: 是一个用于生成图表和流程图的 Markdown 渲染器&#xff0c;支持多种图表类型和丰富的样式。适合对 Markdown、图表和流程图以及想要使用 Markdown 绘制图表和流程图的开发者…...