广告
返回顶部
首页 > 资讯 > 数据库 >redis集群的原理以及搭建配置
  • 891
分享到

redis集群的原理以及搭建配置

2024-04-02 19:04:59 891人浏览 八月长安
摘要

理解并从头搭建redis集群部分开发人员工作当中只是在应用中使用Redis,比如用来做数据结果的缓存。而且现在有很多不错的redis客户端工具(redisson),基本上可以不用关注redis命令就可以完成

理解并从头搭建redis集群

部分开发人员工作当中只是在应用中使用Redis,比如用来做数据结果的缓存。而且现在有很多不错的redis客户端工具(redisson),基本上可以不用关注redis命令就可以完成相当部分的功能。所以可能会对如下这些问题关注点不够:

如何容灾?即某个redis节点出了问题如何保证服务的高可用

如何横向扩容?当数据量特别大时,如何解决单个redis的性能问题

集群至少需要几台机器?或者几个redis节点

集群搭建都利用什么技术,哪些工具?

如何容灾?

redis提供了主从热备机制,主服务器的数据同步到从服务器,通过哨兵实时监控主服务器状态并负责选举主服务器。当发现主服务器异常时根据一定的算法重新选举主服务器并将问题服务器从可用列表中去除,最后通知客户端。主从是一对多的树型结构,如下图:

redis集群的原理以及搭建配置

哨兵

哨兵是sentinel的中文名称,是redis出的一个高可用架构的工具,自身是一个独立的进程,可以同时监控一个以上的redis集群。

哨兵集群

基于高可用的考虑,哨兵自身也是需要支持集群的,如果只有一个哨兵就会存在单点问题。

哨兵决策

哨兵有一个数量配置,当多少个哨兵同时认为某个主服务不可用时才进行主从切换,比如总共有5个哨兵,当3个哨兵认为服务不可用时才决定做主从切换。这么做可以避免一些误切换,降低切换成本,比如瞬时的网络异常等。

如何横向扩容?

无论是redis还是其它一些数据库之类的产品,当单节点的数据容量达到一定上限后,服务对外提供的能力会越来越弱。redis在高版本中提供了redis-trib.rb来实现集群功能,也可以使用第三方的工具twemproxy。

去中心化,每个节点都是平等的

redis集群从设计上没有考虑中心化,这样可以避免中心节点的单点等问题。每个节点都能掌握整个集群的状态,连接任意的节点都可以访问到所有的key,就像单节点的redis一样。

集群原理图

自己理解画的,如有理解不对的地方可以指出。

redis集群的原理以及搭建配置

key与redis节点的关系

引入了hasy solt,中文理解为哈希槽。总共16384个,我们操作的key通过取模算法确认key落在哪个槽上。

HASH_SLOT = CRC16(key) mod 16384

哈希槽与节点之间有一定关系,所以我们就可以将key分配到某个具体的redis节点上了。

详细的关系可再研究,简单的比如节点A负责0-5000编号的哈希槽,节点B负责5001-1000

一步一步搭建

开始搭建三主三从的集群,系统是ubuntu,采用redis提供的集群工具redis-trib.rb。

安装最新redis

创建redis_cluster目录,并且创建7000到7005这6个目录

将redis目录下的redis.conf复制到上面创建的6个目录中

分别修改redis.conf文件,对6个文件做类似的修改。

port  7000                                       //端口7000       
bind  127.0.0.1                                  //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip
daemonize    yes                                 //后台运行
pidfile  /var/run/redis_7000.pid                 //pidfile文件对应7000
cluster-enabled  yes                             //开启集群
cluster-config-file  nodes_7000.conf             //集群的配置
cluster-node-timeout  15000                      //请求超时  默认15秒,可自行设置

bind需要注意的就是需要配置为其它机器可以访问的ip,否则无论是创建集群还是客户端连接都会有问题。

启动6个redis

redis-server redis_cluster/7000/redis.conf
redis-server redis_cluster/7001/redis.conf
redis-server redis_cluster/7002/redis.conf
redis-server redis_cluster/7003/redis.conf
redis-server redis_cluster/7004/redis.conf
redis-server redis_cluster/7005/redis.conf

创建集群
redis的src目录下有个redis-trib.rb,将它复制到/usr/local/bin中,然后执行如下脚本:

redis-trib.rb  create  --replicas  1  127.0.0.1:7000 127.0.0.1:7001  127.0.0.1:7002 127.0.0.1:7003  127.0.0.1:7004  127.0.0.1:7005

--replicas后面的1代表从服务器的个数,上面可以理解为前面3个为主服务器,后面三个分别做为从服务器,即三对主从。

执行过程中会遇到提示需要安装ruby,安装完成之后又会提示安装 gem redis。

安装gem redis,折腾了好久,最终发现是因为在国内访问不了某些网站导致通过apt-get install安装不成功,最后通过下载源码的方式安装成功。

redis集群的原理以及搭建配置再次执行创建集群的脚本,出现如下提示:

redis集群的原理以及搭建配置

输入yes,继续

redis集群的原理以及搭建配置

最少需要多少个主服务器?

可能是基于某些约定,集群约定只有当可用节点数大于半数以上时才具备对外提供服务的能力。首先数量一定是奇数,其实必须大于1,所以最少的主服务器数量为3。

测试集群
连接客户端,由于我的所有节点都是在本地,所以不需要输入ip,但需要加-c的参数。redis-cli -c -p 7000

连接成功后,增加一个key

set mykey 123

有一行提示语,指向到端口7002,这说明虽然我们连接的是7000的实例,但通过hash算法最终会将key分配到7002的实例上。

redis集群的原理以及搭建配置

再连接7005端口查询下key,测试下是否任意一个实例都可以查询到key

get mykey

显示指向到端口7002

redis集群的原理以及搭建配置

以上就是redis高可用方案图文详解的详细内容,更多请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: redis集群的原理以及搭建配置

本文链接: https://www.lsjlt.com/news/37422.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • redis集群的原理以及搭建配置
    理解并从头搭建redis集群部分开发人员工作当中只是在应用中使用redis,比如用来做数据结果的缓存。而且现在有很多不错的redis客户端工具(redisson),基本上可以不用关注redis命令就可以完成...
    99+
    2022-10-18
  • redis 集群搭建以及redisli
    实现3主3从的集群 虚拟机单机ip:192.168.40.128 集群基本搭建 简单下载 通过 wget http://download.redis.io/releases/redis-4.0.10.tar.gz 解压缩 tar z...
    99+
    2023-01-31
    集群 redis redisli
  • 搭建配置redis集群的步骤
    这期内容当中的小编将会给大家带来有关搭建配置redis集群的步骤,以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节...
    99+
    2022-10-18
  • Redis高可用集群的搭建配置
    这篇文章将为大家详细讲解有关Redis高可用集群的搭建配置,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Redis的集群主从模型是一种高可用的集群架构。本章主要内容有:高...
    99+
    2022-10-18
  • Redis主从以及哨兵集群搭建(二)
    Redis主从以及哨兵集群搭建一、前言  Redis主从同步原理同MySQL的主从原理十分相似,而解决Redis单点故障的哨兵机制(sentinel)又同解决MySQL单点故障的MHA十分相似。因...
    99+
    2022-10-18
  • MGR集群搭建及配置过程
      MGR全称MySQL Group Replication(Mysql组复制),是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案。MGR提供了高可用、高扩...
    99+
    2022-11-13
  • Windows环境下搭建配置redis集群的教程
    Redis集群:Redis 集群是一个提供在多个Redis间节点间共享数据的程序集,集群节点共同构建了一个去中心化的网络,集群中的每个节点拥有平等的身份,节点各自保存各自的数据和集群状态。节点之间采用Gos...
    99+
    2022-10-18
  • Quartz集群原理以及配置应用的方法详解
    Quartz是一个开源的任务调度框架,用于在Java应用程序中实现定时任务的调度和执行。Quartz集群是指多个Quartz实例组成...
    99+
    2023-08-15
    Quartz
  • docker环境搭建mgr集群的问题及原理
    目录MGR概念为何选用MGRMGR原理单主模式多主模式环境准备docker搭建MRG步骤1、拉取mysql8镜像2、创建docker专用网络3、创建存储数据相关目录4、启动3个mys...
    99+
    2022-11-13
  • Nacos配置中心集群原理及源码分析
    目录Nacos集群工作原理配置变更同步入口AsyncNotifyServiceAsyncTask目标节点接收请求NacosDelayTaskExecuteEngineProcessR...
    99+
    2022-11-13
  • 大数据-HDFS 集群搭建的配置文件
    1.HDFS简单版集群搭建相关配置文件   1.core-site.xml文件 1 2 fs.defaultFS 3 hdfs://hadoop2:9000 4 5 6 7 hadoop....
    99+
    2018-04-22
    大数据-HDFS 集群搭建的配置文件
  • 浅析NFS服务器原理以及搭建配置部署步骤
    目录NFS服务简介什么是NFS?NFS挂载原理NFS服务器到底使用哪个端口来进行数据传输呢?RPC与NFS通讯原理那么RPC又是如何知道每个NFS功能的端口呢?NFS客户端和NFS服...
    99+
    2022-11-12
  • VMware创建Linux虚拟机之(三)Hadoop安装与配置及搭建集群
      Hello,world! 🐒本篇博客使用到的工具有:VMware16 ,Xftp7 若不熟悉操作命令,推荐使用带GUI页面的CentOS7虚拟机 我将使用带GUI页面的虚拟机演示 虚拟机(Virtual Machin...
    99+
    2023-09-02
    linux 运维 java hadoop 分布式
  • 集群和负载均衡的概念以及用apache和tomcat搭建集群的方法
    本篇内容介绍了“集群和负载均衡的概念以及用apache和tomcat搭建集群的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、集群和负...
    99+
    2023-06-05
  • MySQL MHA高可用群集的原理与配置
    这篇文章主要为大家详细介绍MySQL MHA高可用群集的原理与配置,文中还介绍了MHA高可用群集的启动方法和查看MHA状态的方法,希望大家通过这篇文章能有所收获。MHA高可用架构部署配置实例一、前言1.1W...
    99+
    2022-10-18
  • Jenkins实现集群化管理以及流水线项目配置
    目录一、Jenkins Cluster 简介1.配置 Jenkins 实现集群功能2.使用 Jenkins 配置流水线项目一、Jenkins Cluster 简介 首先在这里说一下单...
    99+
    2022-11-13
  • Redis Sentinel哨兵模式的原理及配置
    这篇文章主要介绍“Redis Sentinel哨兵模式的原理及配置”,在日常操作中,相信很多人在Redis Sentinel哨兵模式的原理及配置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
    99+
    2022-10-18
  • Jenkins怎么实现集群化管理以及流水线项目配置
    本文小编为大家详细介绍“Jenkins怎么实现集群化管理以及流水线项目配置”,内容详细,步骤清晰,细节处理妥当,希望这篇“Jenkins怎么实现集群化管理以及流水线项目配置”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知...
    99+
    2023-06-29
  • springMVC的工作原理和机制以及配置
    这篇文章主要讲解了“springMVC的工作原理和机制以及配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“springMVC的工作原理和机制以及配置”吧!工作原理下面的是springMVC...
    99+
    2023-06-03
  • 交换机的工作原理以及搭建局域网划分VLAN
    😘作者简介:一名99年运维岗位员工。👊宣言:人生就是B(birth)和D(death)之间的C(choise),做好每一个选择。🙏创作不易,动动小手给个点赞加关注吧,有什么意见评论区告诉...
    99+
    2023-09-10
    网络 运维 服务器 信息与通信
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作