Redis 集群详解及搭建过程

news2024/11/24 16:00:03

1. 引言

   从3.0版本开始,redis具备了集群功能,实现了分布式、容错、去中心化等特性,在生产环境中对于保证数据一致性和安全性、提高系统响应能力都有着很必要的意义。 本文我们就来介绍 redis 集群的三种搭建模式和搭建方法。
目前Redis 7.0对其管理的几乎每个子系统都进行了多项改进,包括内存、计算、网络和存储

 详见:Releases · redis/redis · GitHub

1.1. redis 集群的特性

redis 集群的目标是线性可扩展性和保证最终一致性,因此,redis 集群不存在中心节点或代理节点。 同时,一致性的保证是建立在一部分容错性牺牲的基础上的,系统通过主从节点的模式在保证对节点失效具有有限抵抗力的前提下,尽可能保证数据的一致性。 redis 集群实现了节点的自动发现、master 的自动选举、热分片、ASK 转向和 MOVED 转向等机制。 可以参考官方文档: https://redis.io/topics/cluster-tutorial。

1.2. 集群端口

无论是哪种模式的 redis 集群,都需要指定服务端口(默认为 6379),但 redis 实际上是通过服务端口 + 10000 的端口来进行数据同步的。 因此,如果集群无法建立或同步无法进行,除了需要考虑服务端口是否连通以外,还需要检测同步端口的可用性

2. 集群

 2.1 主从模式集群

  1. 概念
     主从复制模型中,有多个redis节点。 其中,有且仅有一个为主节点Master。从节点Slave可以有多个。只要网络连接正常,Master会一直将自己的数据更新同步给Slaves,保持主从同步 。

     优点:读写分离,将Redis读操作分摊到多个节点,大大提高redis服务器的并发量
   缺点:不支持容错,master宕机后没有可写节点,可能会数据丢失,较难支持扩容

2.3.1 准备服务器(最少俩台,都安装redis)
    192.168.10.10 master        
    192.168.10.11 slave
    192.168.10.13 slave
    
2.3.2 修改redis配置文件
    master    redis.conf
        bind 192.168.10.10        #绑定地址
        port 6379
        daemonize yes             #后台启动
        protected-mode yes        #打开保护模式
        appendonly yes            #开启AOF持久化存储
        requirepass 123           #启用密码认证
        pidfile /usr/local/redis-6379/logs/redis-6379.pid
        logfile /usr/local/redis-6379/logs/redis.log
        dir
        masterauto 123
        
    slave1  redis.conf
        bind 192.168.10.11        #绑定地址
        port 6379
        daemonize yes             #后台启动
        protected-mode yes        #打开保护模式
        appendonly yes            #开启AOF持久化存储
        requirepass 123           #启用密码认证
        pidfile /usr/local/redis-6379/logs/redis-6379.pid
        logfile /usr/local/redis-6379/logs/redis.log
        dir
        masterauto 123            #master节点密码
        replicaof 192.168.10.10 6379       #定义master信息
        
    slave2  redis.conf
        bind 192.168.10.13        #绑定地址
        port 6379
        daemonize yes             #后台启动
        protected-mode yes        #打开保护模式
        appendonly yes            #开启AOF持久化存储
        requirepass 123           #启用密码认证
        pidfile /usr/local/redis-6379/logs/redis-6379.pid
        logfile /usr/local/redis-6379/logs/redis.log
        dir
        masterauto 123            #master节点密码
        replicaof 192.168.50.10 6379       #定义master信息
        
  

2.2 Sentinel(哨兵集群)

  2.1 主从模式的缺陷
        当主节点宕机了,整个集群就没有可写的节点了。
由于从节点上备份了主节点的所有数据,那在主节点宕机的情况下,如果能够将从节点变成一个主节点,就可以解决这个问题了。这就是Sentinel哨兵的作用。 

 2.2 哨兵的任务
       Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:
监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。 

  2.2.1 监控(Monitoring)
         1.Sentinel可以监控任意多个Master和该Master下的Slaves。(即多个主从模式)
         2.同一个哨兵下的、不同主从模型,彼此之间相互独立。
         3.Sentinel会不断检查Master和Slaves是否正常。 

2.3 配置Sentinel
   1.在/usr/local目录下,创建/redis/sentinels/目录
mkdir -p sentinels
    2.在/sentinels目录下,以次创建s1、s2、s3三个子目录中
mkdir s1 s2 s3
    3.依次拷贝redis解压目录下的sentinel.conf文件,到这三个子目录中
cp -v /opt/soft/redis-3.2.9/sentinel.conf ./s1cp -v /opt/soft/redis-3.2.9/sentinel.conf ./s2cp -v /opt/soft/redis-3.2.9/sentinel.conf ./s3   4.依次修改s1、s2、s3子目录中的sentinel.conf文件,修改端口,并指定要监控的主节点。(从节点不需要指定,sentinel会自动识别)

3.Redis-cluster集群

 3.1 哨兵模式的缺陷
    在哨兵模式中,仍然只有一个Master节点。当并发写请求较大时,哨兵模式并不能缓解写压力。只有主节点才具有写能力,那如果在一个集群中,能够配置多个主节点,就可以缓解写压力了,这就是redis-cluster集群模式。

 3.2 Redis-cluster集群概念
1.由多个Redis服务器组成的分布式网络服务集群;
2.集群之中有多个Master主节点,每一个主节点都可读可写;
3.节点之间会互相通信,两两相连;
4.Redis集群无中心节点。

3.3 集群配置(Scaling with Redis Cluster | Redis)

1、Redis集群官方建议最好使用6个节点
本次搭建在一台主机上创建伪分布式集群,不同的端口表示不同的redis节点,如下:
主节点:192.168.58.1:7001 192.168.58.1:7002 192.168.58.1:7003
从节点:192.168.58.1:7004 192.168.58.1:7005 192.168.58.1:7006
 
2、在/usr/local/redis下创建redis-cluster目录,在其下创建7001、7002......7006目录,如下:

mkdir -p redis/redis-clustermkdir -v 7001 7002 7003 7004 7005 7006 

3、将redis解压路径下的配置文件redis.conf,依次拷贝到每个700X目录内,并修改每个700X目录下的redis.conf配置文件:
必选配置:

port 700X
bind ip(当前主机ip:192.168.xxx.xxx)
cluster-enabled yes (启动redis-cluster集群模式)


建议配置:

daemonized yes
logfile /usr/local/redis/redis-cluster/700X/node.log 

4、启动每个结点redis服务
依次以700X下的redis.conf,启动redis节点。(必须指定redis.conf文件)

cd 700x && redis-server ./redis.conf 

5 执行创建集群命令
进入到redis源码存放目录redis/redis-4.10.3/src下,执行redis-trib.rb,此脚本是ruby脚本,它依赖ruby环境。

./redis-trib.rb create --replicas 1 192.168.58.1:7001 192.168.58.1:7002 192.168.58.1:7003 192.168.58.1:7004 192.168.58.1:7005 192.168.58.1:7006

完成集群搭建

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode算法解析——三数之和

1. 题目链接:15. 三数之和 2. 题目描述: 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元…

2023年10月实时获取地图边界数据方法,省市区县街道多级联动【附实时geoJson数据下载】

首先,来看下效果图 在线体验地址:https://geojson.hxkj.vip,并提供实时geoJson数据文件下载 可下载的数据包含省级geojson行政边界数据、市级geojson行政边界数据、区/县级geojson行政边界数据、省市区县街道行政编码四级联动数据&#xff0…

[Python小项目] 利用Python进行彩票选择方案及分析

利用Python进行彩票选择方案及分析 一、前言 你是否曾梦想过一夜暴富?是否曾想过如果能幸运地中得大奖,生活会有怎样的改变?彩票,这个看似简单的游戏,却可能为我们带来巨大的财富。然而,如何选择号码&…

【Android】Intel HAXM installation failed!

Android Studio虚拟机配置出现Intel HAXM installation failed 如果方案一解决没有作用,就用方案二再试一遍 解决方案一: 1.打开控制面板 2.点击左侧下面最后一个程序 3.点击启用或关闭Windows功能 4.勾选Windows虚拟机监控程序平台 5.接下来重启电脑…

4.2 网际协议IP

思维导图: 前言: **笔记 4.2 - 网际协议IP** 1. **定义与重要性**: - 网际协议IP是TCP/IP体系中的核心协议之一。 - 它是互联网的关键标准协议。 2. **发展背景**: - 又被称为Kahn-Cerf协议。 - 由Robert Kahn和…

并发数计算方法

1、性能测试计算TPS 性能测试的TPS,大都是根据用户真实的业务数据(运营数据)来计算的 普通计算方式:TPS=总请求数/总时间 二八原则计算方法:TPS=总请求*0.8/总时间*0.2 (二八原则就是指80%的请求在20%的时间内完成) 总结:普通计算方式只能满足基本的要求,但是不能很好覆…

为什么使用C#开发软件的公司和程序员都很少?

为什么使用C#开发软件的公司和程序员都很少? 讲几个故事吧!如果不爱听,就当个故事。 一个老东家做互联网的,java大概四五十人,四五十个前端,十个左右的c# ,那年做点播机,招了两个嵌入…

常见的8个JMeter压测问题

为什么在JMeter中执行压力测试时,出现连接异常或连接重置错误? 答案:连接异常或连接重置错误通常是由于服务器在处理请求时出现问题引起的。这可能是由于服务器过载、网络故障或配置错误等原因导致的。 解决方法: 确定服务器的负载…

嵌入式软件行业真的没前途吗?

嵌入式软件行业真的没前途吗? 嵌入式对新人极不友好,前途是非常好的,问题是你光混日子等不到,没有靠谱的职业路径,你也学不成。最近很多小伙伴找我,说想要一些嵌入式资料,然后我根据自己从业十年…

广州股票开户怎么选择券商最好?炒股开户佣金最低是多少?

广州股票开户怎么选择券商最好?炒股开户佣金最低是多少? 开设股票账户通常需要以下步骤: 1.选择证券公司或经纪商。您可以通过互联网搜索或参考朋友的推荐,选择一家有信誉且服务良好的证券公司或经纪商。 2.填写开户申请表。您…

多用户多回路宿舍用电管理解决方案-安科瑞黄安南

01 引言 近几年来,因违规使用大功率恶性负载电器导致宿舍失火的安全事故在各大高校时有发生,给学生和学校都带来了巨大的损失。北京大学、哈尔滨工业大学、上海商学院以及俄罗斯人民友谊大学等高校学生公寓发生的火灾给高校学生公寓的安全用电敲响…

「深入探究Web页面生命周期:DOMContentLoaded、load、beforeunload和unload事件」

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 引言 1. DOMContentLoaded 1.1 属性 1.2 A…

3500/15 106M1079-01 支持先进和复杂的人工智能计算

3500/15 106M1079-01 支持先进和复杂的人工智能计算 耐能NPU IP系列允许ResNet、YOLO和其他深度学习网络在离线环境下的边缘设备上运行。耐能NPU IP为edge AI提供完整的硬件解决方案,包括硬件IP、编译器、模型压缩。它支持各种类型的卷积神经网络(CNN)模型&#xf…

去雨去雪去雾算法程序中断问题解决方法

中断问题 在进行去雨去雾去雪算法的实验过程中,时常会由于各种意外情况导致实验中断,而在该源码中,并没有对应的中断应对策略,这就导致该源码的健壮性太差,而且博主在实验时也确实遇到多次这种情况,这让博…

数据结构之手撕顺序表(讲解➕源代码)

0.引言 在本章之后,就要求大家对于指针、结构体、动态开辟等相关的知识要熟练的掌握,如果有小伙伴对上面相关的知识还不是很清晰,要先弄明白再过来接着学习哦! 那进入正题,在讲解顺序表之前,我们先来介绍…

2.DApp-编写和运行solidity智能合约

题记 演示如何编写solidity智能合约,以及在remix中运行solidity代码。 准备Remix环境 在浏览器中搜索remix,找到remix官网,并打开 由于是国内网络,所以访问国外网站较慢,可以耐心等待加载完成,或者科学上网…

2023_Spark_实验十五:自定义法创建Dataframe及SQL操作

方式二:SQL方式操作 1.实例化SparkContext和SparkSession对象 2.创建case class Emp样例类,用于定义数据的结构信息 3.通过SparkContext对象读取文件,生成RDD[String] 4.将RDD[String]转换成RDD[Emp] 5.引入spark隐式转换函数&#xff08…

Linux入门攻坚——3、基础命令学习-文件管理、别名、glob、重定向、管道、用户及组管理、权限管理

文件管理:cp,mv,rm cp:复制命令,copy cp [OPTION]... [-T] SRC DEST cp [OPTION]... SRC... DIRECTORY cp [OPTION]... -t DIRECTORY DEST... 如果目标不存在,新建DEST,并将…

Motorola IPMC761 使用边缘TPU加速神经网络

Motorola IPMC761 使用边缘TPU加速神经网络 人工智能(AI)和机器学习(ML)正在塑造和推进复杂的自动化技术解决方案。将这些功能集成到硬件中,解决方案可以识别图像中的对象,分析和检测模式中的异常或找到关键短语。这些功能对于包括但不限于自动驾驶汽车…

易点易动设备管理平台:高效设备一站式管理助力企业成功

在现代企业运营中,设备管理是一个至关重要的任务。无论是生产设备、办公设备还是信息技术设备,高效的设备管理对于企业的生产效率和运营成本都具有重要影响。然而,传统的设备管理方式往往繁琐且容易出错,给企业带来了许多挑战。为…