当前位置: 首页 > 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类用于格式化日期和时间…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...