redis集群三种模式

redis 集群 高可用

redis集群三种模式

主从复制    奇数台 3 一主两从

哨兵模式    3    一主两从

cluser        集群    6    3 3 3 9

主从复制:和mysql的主从复制类似,写入主的数据通过rdb方式把数据同步到从服务器。从不能更新到主,也是哨兵模式的基础

缺点:故障自动化恢复,只有主能够写

哨兵:故障自动化恢复,主从复制完成之后,从服务器会变成只读模式,故障切换时,主故障,变成从之后,也会进入只读模式

缺点:从节点一旦故障,读会受到影响

集群:把每两台服务器作为主从模式,形成一个大的主从的集群解决了写操作的负载均衡。较为完善的高可用方案

缺点:保证高可用,对数据的完整性要求不高。

主从复制:

主节点和从节点

数据的复制是单向的,由主复制到从

主从复制的流程:

 redis主从复制的实验:

实验准备:

主从IP地址
master192.168.233.41
slave1192.168.233.42
slave2192.168.233.43

 

实验前准备好三台源码编译安装好的redis虚拟机

实验步骤:

步骤一:修改master节点的配置文件 


vim /etc/redis/6379.conf bind 0.0.0.0                      #70行,修改监听地址为0.0.0.0(生产环境中,尤其是多网卡最好填写物理网卡的IP)daemonize yes                     #137行,开启守护进程,后台启动 logfile /var/log/redis_6379.log   #172行,指定日志文件存放目录dir /var/lib/redis/6379           #264行,指定工作目录appendonly yes                    #700行,开启AOF持久化功能
​
/etc/init.d/redis_6379 restart     #重启redis服务

 步骤二:修改slave节点的配置文件 


#修改slave1和slave2的配置文件
vim /etc/redis/6379.conf bind 0.0.0.0                        #70行,修改监听地址为0.0.0.0(生产环境中需要填写物理网卡的IP)daemonize yes                       #137行,开启守护进程,后台启动logfile /var/log/redis_6379.log     #172行,指定日志文件目录dir /var/lib/redis/6379             #264行,指定工作目录replicaof 192.168.73.105 6379       #288行,指定要同步的Master节点的IP和端口appendonly yes                      #700行,修改为yes,开启AOF持久化功能/etc/init.d/redis_6379 restart       #重启redis
netstat -natp | grep redis           #查看主从服务器是否已建立连接

 

 步骤三:使用redis工具在主中创建键值查看 

 

 


哨兵:故障自动化恢复,主从复制完成之后,从服务器变成只读模式

故障切换时,主故障,变成从服务器,主变成从之后,也会进入只读模式

缺点:从节点一旦故障,读会收到影响

切换方式:不是按照权重来进行切换 是以投票的方式:主宕机其他服务器投票,选举,Raft算法,选一个离当前时间点更新最快的从变成主  

sentinel monitor mymaster 192.168.233.7 6379 2

初始化监听,都是监听主,监听主动服务器的状态

2 对应的从服务器的数量以及投票的参与者 参与者要和从服务器的数量一致

2台服务器投票通过,主才能进行故障转移。

sentinel down-after-milliseconds mymaster 30000

判断服务器宕机的时间周期 30秒,每30秒检测一次

sentinel failover-timeout mymaster 180000

判断故障节点的超时的最大时间 180秒

redis-sentinel sentinel.conf &

启动哨兵模式命令

redis-cli -p26379 info Sentinel

查看哨兵模式的状态命令

 redis哨兵模式的部署

 实验组件部署
 

主从ip地址
master192.168.233.41
slave1192.168.233.42
slave2192.168.233.43

实验具体操作步骤 :

步骤一:修改哨兵节点的配置文件(三台一起)

哨兵的的配置文件是redis软件中自带的配置 

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.73.105 6379 2  #84行,修改
#指定该哨兵节点监控192.168.73.105:6379这个主节点,该主节点的名称是mymaster。
#最后的2的含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移
​
sentinel down-after-milliseconds mymaster 3000  #113行,判定服务器down掉的时间周期,默认30000毫秒(30秒)
sentinel failover-timeout mymaster 180000  #146行,同一个sentinel对同一个master两次failover之间的间隔时间(180秒)
​

步骤二:启动 哨兵模式

#启动三台哨兵
cd /opt/redis-5.0.7/
redis-sentinel sentinel.conf &


集群:

redis3.0之后的分布式存储方案

集群由多个节点组成,redis数据保存在这些节点中

集群中的节点分为主和从

主负责读写以及维护集群的信息

从节点进行主从数据的复制(也可以查)

redis集群的数据分片

在集群概念中,引用的是hash槽的概念

创建了集群就有16384个哈希槽

3个节点:

主1 0-5460

主2 5461-10922

主3 10923-16383

节点当中如果主和从全部失败整个集群都将不可用

redis-cluster集群实验

实验准备:

六台主机

准备六台主机
redis1 192.168.233.41
redis2 192.168.233.42
redis3 192.168.233.43
redis5 192.168.233.45
redis6 192.168.233.46
redis7 192.168.233.47关闭防火墙和安全机制
vim /etc/redis/6379.conf
70行
bind 0.0.0.0
#监听所有端口
89行
protected-mode no
#关闭保护模式
136行
daemonize yes
700
appendonly yes
#开启aof持久化
833行
cluster-enabled yes
841行取消注释
cluster-config-file nodes-6379.conf
847行取消注释
cluster-node-timeout 15000cd /etc/redis
sz 6379.conf
#将6379这个配置文件发送到其他五台主机同步配置文件/etc/init.d/redis_6379 restart
#所有主机重启redis服务回到redis1:
redis-cli -h 192.168.233.41 --cluster create 192.168.233.41:6379 192.168.233.45:6379 192.168.233.42:6379 192.168.233.46:6379 192.168.233.43:6379 192.168.233.47:6379 --cluster-replicas 1进入redis1:
redis-clli
cluster nodes
#查看主从详细信息
set test1 1
keys *
#在redis1上创建一个键值对到从主机上查看一下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/387643.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

未来不会使用 AI 的人真的会被淘汰吗?

AI 是今年大火的一个话题,随着 ChatGPT 之类的一系列大模型开始流行以后,有不少的培训机构宣称这样的口号: “未来不会使用 AI 的人将会被淘汰”。我觉得这个观点本身并没有错,但是关键在于那些培训机构出于自身的利益,故意忽略了…

内存问题检测

内存检测方式 gcc/g 内存检测方式如下,添加一些编译标签: -fsanitizeleak 检测内存泄漏。例如添加标签:-fsanitizeleak -g -O0-fsanitizeaddress 检测内存越界。例如添加标签:-fsanitizeaddress -g -O2,优化级别开…

02 I/O多路复用---进程的聊天

服务器同时和很多客户端连在一起 管道的read,总是能读出来

前后端分离开发遵循接口规范-YAPI

目前,网站主流开发方式是前后端分离。因此前后端必须遵循一套统一的规范,才能保证前后端进行正常的数据(JSON数据格式)请求、影响,这套规范即是 YAPI. 产品经理撰写原型; 前端或后端撰写接口文档。 YAPI…

Android高级interview

一、Android基础知识 1、四大组件、六大布局、五大存储 四大组件: activity、service、content provider、broadcast六大布局(现在是 7 大了): 线性布局(LinearLayout)相对布局(RelativeLayout&#xf…

替换后端国外身份目录服务,宁盾身份域管接管FileNet助力国产化升级

IBM FileNet 是一款优秀的企业内容管理解决方案,为客户提供了领先的文档管理和流程管理集成环境,被大量企业所采用。FileNet 需要使用企业级的目录服务器(LDAP)作为其用户管理系统,满足其认证和授权的需求。对于 LDAP …

成为git砖家(4): git status 命令简介

1. untracked 和 tracked 状态 Remember that each file in your working directory can be in one of two states: tracked or untracked. Tracked files are files that were in the last snapshot, as well as any newly staged files; they can be unmodified, modified, o…

zabbix使用脚本自定义监控项

1. 在zabbix_agent的配置文件中配置自定义key和脚本位置 vim /etc/zabbix/zabbix_agentd.confUserParametermq_check_log,/etc/zabbix/zabbix_agentd.d/mqlog.shmq_check_log:是这个自定义参数的名称。在Zabbix的监控项(item)配置中&#xf…

点菜吧——随便点 C#生成套餐

前言 一到食堂发现有多种选择,但是有一个固定的套路,只能是一个荤,二个小荤,菜品数量也不少,任君选择,如果是一个选择困难症,就有点烦了,所以出品这个自动生成套餐软件。各位老板可…

代码随想录算法训练营Day 63| 图论 part03 | 417.太平洋大西洋水流问题、827.最大人工岛、127. 单词接龙

代码随想录算法训练营Day 63| 图论 part03 | 417.太平洋大西洋水流问题、827.最大人工岛、127. 单词接龙 文章目录 代码随想录算法训练营Day 63| 图论 part03 | 417.太平洋大西洋水流问题、827.最大人工岛、127. 单词接龙17.太平洋大西洋水流问题一、DFS二、BFS三、本题总结 82…

在手机查看笔记本电脑上的便签 笔记本电脑和手机共享便签方法

在这个信息时代,笔记本电脑已成为我们工作和学习中不可或缺的工具。我经常在笔记本上记录各种便签,无论是工作中的待办事项,还是生活中的小提醒,都依赖于这些小小的便签。它们轻便、灵活,可以随时随地提醒我接下来要做…

TongHttpServer 简介

1. 概述 随着网络技术的飞速发展,高并发大用户场景越来越普遍,单一应用服务节点已经不能满足并发需求,为了提高整个系统可靠性,扩展性,吞吐率,通常将多个应用服务器通过硬负载/软负载组成集群,负载均衡器根据不同负载算法将请求分发到各个应用服务器节点。 Tong…

花几千上万学习Java,真没必要!(三十六)

1、File类: 测试代码1: package filetest.com; import java.io.File; import java.io.IOException; public class FileOperations { public static void main(String[] args) { // 创建新文件File file new File("example.txt"); tr…

Prometheus+Grafana+Alertmanager监控告警

PrometheusGrafanaAlertmanager告警 Alertmanager开源地址:github.com/prometheus Prometheus是一款基于时序数据库的开源监控告警系统,它是SoundCloud公司开源的,SoundCloud的服务架构是微服务架构,他们开发了很多微服务&#xf…

TCP为什么需要四次挥手?

tcp为什么需要四次挥手? 答案有两个: 1.将发送fin包的权限交给被动断开方的应用层去处理,也就是让程序员处理 2.接第一个答案,应用层有了发送fin的权限,可以在发送fin前继续向对端发送消息 为了搞清楚这个问题&…

前端开发知识-vue

大括号里边放键值对,即是一个对象。 一、vue可以简化前端javascript的操作。 主要特点是可以实现视图、数据的双向绑定。 使用vue主要分为三个步骤: 1.javascript中引入vue.js 可以src中可以是vue的网址,也可以是本地下载。 2.在javasc…

网络爬虫必备工具:代理IP科普指南

文章目录 1. 网络爬虫简介1.1 什么是网络爬虫?1.2 网络爬虫的应用领域1.3 网络爬虫面临的主要挑战 2. 代理IP:爬虫的得力助手2.1 代理IP的定义和工作原理2.2 爬虫使用代理IP的必要性 3. 代理IP的类型及其在爬虫中的应用3.1 动态住宅代理3.2 动态数据中心…

数据挖掘-数据预处理

来自🥬🐶程序员 Truraly | 田园 的博客,最新文章首发于:田园幻想乡 | 原文链接 | github (欢迎关注) 文章目录 3.3.1 数据的中心趋势平均数和加权平均数众数,中位数和均值描述数据的离散程度 &a…

【MySQL】用户管理连接池原理{数据库权限/连接池/mysql访问逻辑}

文章目录 1.普通用户的引入用户创建用户删除用户修改用户密码 2.数据库的权限给用户授权回收权限实操过程 3.简略介绍mysql连接池3.一个用户注册/登录/使用网页版mysql逻辑 1.普通用户的引入 用户 MySQL中的用户,都存储在系统数据库mysql的user表中 mysql> use…

uniapp微信小程序本地和真机调试文件图片上传成功但体验版不成功

文章目录 导文是因为要添加服务器域名! 导文 uniapp微信小程序本地和真机调试文件图片上传成功但体验版不成功 uniapp微信小程序体验版上传图片不成功 微信小程序本地和真机调试文件图片上传成功但体验版不成功 是因为要添加服务器域名! 先看一下 你小程…