redis集群的搭建详细教程

1 Redis-cluster架构图

           

redis-cluster投票:容错  (至少要三个才可以,才能超过半数

 

架构细节:

(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.

(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。

(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

 

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,

redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,

这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致

均等的将哈希槽映射到不同的节点

 

搭建集群,极限情况也就最多16384个节点。

 

2 Redis集群的搭建

Redis集群中至少应该有3个节点。要保证集群得高可用,需要每个节点有1个备份机。

Redis集群需要6台服务器。

搭建伪分布式。可以使用一台虚拟机允许6个redis实例。需要修改redis得端口号7001-7006

 

3  集群搭建过程

1 实例准备

 第一步:准备好1台redis服务器

【这里我使用的之前搭建好的一台服务器】

虚拟机上面安装Redis的方法,参照的是redis在Linux上的安装教程:

 第二步:在/usr/local下面创建一个集群目录

# mkdir /usr/local/redis-cluster

第三步:拷贝已经安装好的redis实例到redis-cluster目录下

 

[root@admin local]# cp -r redis/bin redis-cluster/redis01

第四步:删除拷贝的实例里面的dump.rdb 和 appendonly.aof文件

因为本实例没有启动AOF持久化的,所以就没有appendonly.aof文件。

只用删除dump.rdb文件。

我们搭建集群的时候,每个节点应该是一个空节点,这里面不应该有数据,这个实例之前使用过,里面有数据。

搭建集群的时候防止出现问题,所以先给删除掉,保证是一个干净的节点。

[root@admin redis01]# rm -rf dump.rdb

第五步:修改配置文件中的端口号

[root@admin redis01]# vim redis.conf

将默认的6379端口修改为7001

输入wq保存并退出

第六步:修改配置文件中的启动集群

[root@admin redis01]# vim redis.conf

修改前:

修改后:

输入wq保存并退出

 

第七步:复制第六步修改完成配置文件的redis实例5份

[root@admin redis-cluster]# cp -r redis01/ redis02
[root@admin redis-cluster]# cp -r redis01/ redis03
[root@admin redis-cluster]# cp -r redis01/ redis04
[root@admin redis-cluster]# cp -r redis01/ redis05
[root@admin redis-cluster]# cp -r redis01/ redis06

 

第八步:修改redis02~redis06实例的端口号分别为7002~7006

[root@admin redis-cluster]# vim redis02/redis.conf
[root@admin redis-cluster]# vim redis03/redis.conf
[root@admin redis-cluster]# vim redis04/redis.conf
[root@admin redis-cluster]# vim redis05/redis.conf
[root@admin redis-cluster]# vim redis06/redis.conf

第九步:使用批处理启动上面的6个实例

这里也可以一个一个的启动,只是麻烦一些。

1、首先执行命令vim start-all.sh创建一个批处理文件,并编辑

[root@admin redis-cluster]# vim start-all.sh

文件的内如如下:

cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
cd ..

2、修改start-all.sh文件的权限,给当前用户所有权限

 

[root@admin redis-cluster]# chmod u+x start-all.sh

3、执行start-all.sh启动所有的6个redis实例

[root@admin redis-cluster]# ./start-all.sh

4、查看一下是否真的启动起来了

[root@admin redis-cluster]# ps -aux | grep -i redis --color

 

到这里6个节点全部配置好,并且启动起来了

 

下面就需要把集群搭建起来,也就是把这六个节点连到一起来。

这里我们需要使用一个工具,这个工具就在我们的redis源代码的src目录下面。

执行命令切换到src目录下:

[root@admin redis-cluster]# cd /usr/local/redis-3.0.0/src

查看里面的rb文件

[root@admin src]# ll *.rb

复制Ruby脚本文件redis-trib.rb到redis-cluster目录下去

[root@admin src]# cp -r redis-trib.rb /usr/local/redis-cluster/

下面简单了解一下Ruby是什么?

 

2 集群环境的搭建

第一步:我们使用ruby脚本搭建集群,所以需要安装ruby的运行环境

依次执行下面两条命令

# yum install ruby

中间如果出现询问输入y确认即可。

# yum install rubygems

 中间如果出现询问输入y确认即可。

第二步:安装ruby脚本运行使用的包

1.上传包到Linux服务器上

 2、将其复制到/usr/local目录下

[root@admin soft]# cp redis-3.0.0.gem /usr/local

3、安装redis-3.0.0.gem

[root@admin local]# gem install redis-3.0.0.gem

这样这个库就安装好了。

现在redis-trib.rb这个脚本就可以执行了

 

3 使用ruby脚本搭建集群

[root@admin redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.25.128:7001 192.168.25.128:7002 192.168.25.128:7003 192.168.25.128:7004 192.168.25.128:7005 192.168.25.128:7006

1 表示每个节点有一个备份机

 因为我们是在一台服务器上面演示,ip一样只是端口不一样。执行的过程中有一个计算过程,算出来是6个节点,所以集群里面有三个节点。

如果里面只有5个ip地址列表的话,就不是整数了,会报错。所以这里一定要是偶数个节点。

 

再补充一下:如果我们真的是在六台服务器上搭建集群的话,不中和这个也是一样的。

只需要在任意一台服务器上面执行上面的搭建环境过程,

使用Ruby脚本搭建集群,但是特别需要注意的是:每台

服务器上的防火墙一定要关闭。如果没有关闭防火墙的话

在询问是否可以的时候,输入yes之后,会卡住Waiting

for the cluster to join......这里不动

 

4 使用redis-cli连接集群

 连接集群我们使用redis提供的客户端redis-cli,连接集群中的任意节点就可以了。

[root@admin redis-cluster]# redis01/redis-cli -p 7006 -c

-c 代表连接的是redis集群。

连接从节点也是一样的。

下面测试一下:

可以看到通过计算,username定位到了14315这个哈希槽,存入的是端口7003的这台服务器。

可以看到通过计算,age定位到了741这个哈希槽,存入的是端口7001的这台服务器。

可以看到,这样数据就可以均匀的分布到每一台服务器,可以实现每个节点都有一定数量的数据。

如果主节点挂了,从节点就可以顶替工作,这也就实现了高可用。

 

特别需要注意的是:连接集群的时候需要加上 -c 参数

转载于:https://www.cnblogs.com/lywJ/p/10710878.html

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

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

相关文章

王飞跃 | 面向未来的AI人才应该具备这3种思维

来源&#xff1a;湛庐阅读作者&#xff1a;王飞跃 苇草智酷学术委员、中科院自动化研究所复杂系统与智能科学重点实验室主任、中国科学院社会计算与平行系统研究中心主任当今最好的人工智能程序到底有多智能&#xff1f;它们是如何工作的&#xff1f;能做些什么&#xff1f;我…

Java安全API

java提供了完整的密码学API,我们可以结合密码学相关的概念来系统的学习这些API。 1.密码学简介(crypto) 密码学通俗来说就是研究如何对信息进行加密和破密&#xff0c;如果不是专门研究信息安全&#xff0c;通常我们只需学习和使用加密的方法&#xff0c;所以破密的相关知识我们…

算法竞赛入门经典 例题6-6 小球下落(python、C)

同个人网站 https://www.serendipper-x.cn/&#xff0c;欢迎访问 &#xff01; 问题描述&#xff1a; 有一颗二叉树&#xff0c;最大深度为D&#xff0c;且所有叶子的深度都相同。所有结点从上到下从左到右编号为 1&#xff0c;2&#xff0c;3&#xff0c;… &#xff0c;2D -…

NLPer,是时候重视因果推理了!这有一份杨笛一等撰写的综述

来源&#xff1a;机器之心编辑&#xff1a;张倩在这篇综述论文中&#xff0c;来自佐治亚理工学院的杨笛一等十几位研究者系统阐述了自然语言处理中的因果推理。科学研究的一个基本目标是了解因果关系。然而&#xff0c;尽管因果在生活和社会科学中扮演了重要角色&#xff0c;它…

【报告】2021物联网行业研究报告(附PDF下载)

来源&#xff1a;兴业证券编辑&#xff1a;Zero导语物联网通过智能感知、识别技术与普适计算等通信感知技术&#xff0c;广泛应用于网络的融合中&#xff0c;也因此被称为继计算机、互联网 之后世界信息产业发展的第三次浪潮。1、云管端的硬件升级云、管、端革新带动物联网爆发…

pyecharts 绘制地图

同个人网站 https://www.serendipper-x.cn/&#xff0c;欢迎访问 &#xff01; # 导入相关包 from pyecharts import options as opts from pyecharts.charts import Map, Geo, Lindata pd.read_csv(rC:\Users\1979\Desktop\处理后的数据\谷物产量&#xff08;公吨&#xff0…

斯坦福大学报告称中国AI论文引用率首超美国!但李国杰院士也发文灵魂拷问...

来源&#xff1a;zhihu中国霸榜AI期刊论文发表&#xff0c;论文引用量「首超」美国&#xff01;然而&#xff0c;中国工程院院士李国杰却戳着国内AI研究的脊梁骨说「顶不了天、落不了地」。近日&#xff0c;如何看待「李国杰院士发文称国内 AI 研究顶不了天、落不了地」这一话题…

刚刚,2021年诺贝尔生理学或医学奖揭晓!

来源&#xff1a;科学网作者&#xff1a;梅进 冯丽妃北京时间10月4日下午5点34分许&#xff0c;2021年诺贝尔生理学或医学奖揭晓。美国科学家David Julius、Ardem Patapoutian获奖&#xff0c;以表彰他们“发现温度和触觉的受体”。2021年的诺贝尔奖单项奖金为1000万瑞典克朗&a…

2021年诺贝尔物理学奖揭晓,复杂科学获得重视

来源&#xff1a;材料科讯部分内容整理&#xff1a;维基百科&#xff0c;诺贝尔奖官网及其推特账号刚刚&#xff0c;诺贝尔奖委员会宣布了2020年诺贝尔物理学奖得主名单&#xff0c;针对本年度诺贝尔物理学奖的预测&#xff0c;可参考以下链接&#xff1a;诺奖120周年了&#x…

【操作系统复习】操作系统的概念、功能和目标

同个人网站 https://www.serendipper-x.cn/&#xff0c;欢迎访问 &#xff01; 文章目录一、概念二、操作系统的功能和目标2.1 作为系统资源的管理者2.2 作为用户和计算机硬件之间的接口2.3 作为最接近硬件的层次一、概念 ✔️ 操作系统&#xff08;Operating System&#xff0…

word 2013 标题设置多级列表

1、问题 要设置标题为多级列表&#xff0c;批量应用 2、解决 1选标题1 2选标题2 。。。以此类推。点确定保存即可 转载于:https://www.cnblogs.com/wdw31210/p/10723696.html

向量将死,哈希是 AI 未来

来源&#xff1a;AI科技评论作者&#xff1a;Hamish Ogilvy编译&#xff1a;冉启行校对&#xff1a;青暮人工智能是建立在向量算法的基础上的&#xff0c;但最新的进展表明&#xff0c;对于某些 AI 应用程序而言&#xff0c;它们可以使用其他二进制来表示&#xff08;例如神经哈…

【操作系统复习】操作系统的特征

同个人网站 https://www.serendipper-x.cn/&#xff0c;欢迎访问 &#xff01; 文章目录一、并发二、共享三、虚拟四、异步一、并发 并发 &#xff1a;指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的&#xff0c;但微观上是交替发生的。 并行&#xff1a…

评分效果

引用的图片 效果展示 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalable0" />&…

为啥辣椒会辣得人嘴巴疼?这个问题竟然和今年诺奖有关

2021年诺贝尔生理学或医学奖得主&#xff1a;戴维朱利叶斯&#xff08;David Julius&#xff09;和阿尔代姆帕塔普蒂安&#xff08;Ardem Patapoutian&#xff09;来源&#xff1a;科研圈2021 年 10 月 4 日北京时间 17 时 30 分许&#xff0c;美国生理学家戴维朱利叶斯&#x…

瞭望|事关未来10~15年工业操作系统主导权之争,工业互联网下一步怎么走?...

来源&#xff1a;工信头条刊于《瞭望》2021年第39期文&#xff1a;李玉玲 王菲工业互联网事关未来10&#xff5e;15年工业操作系统主导权之争&#xff0c;事关我国制造业竞争优势的巩固与强化。近年来&#xff0c;我国工业互联网建设加速推进&#xff0c;产业规模不断扩大。专…

Node.js对MongoDB进行增删改查操作

MongoDB简介 MongoDB是一个开源的、文档型的NoSQL数据库程序。MongoDB将数据存储在类似JSON的文档中&#xff0c;操作起来更灵活方便。NoSQL数据库中的文档(documents)对应于SQL数据库中的一行。将一组文档组合在一起称为集合(collections)&#xff0c;它大致相当于关系数据库中…

【操作系统复习】操作系统的发展与分类

同个人网站 https://www.serendipper-x.cn/&#xff0c;欢迎访问 &#xff01; 操作系统的发展与分类一、手工操作阶段二、批处理阶段 —— 单道批处理系统三、批处理阶段 —— 多道批处理系统四、分时操作系统五、实时操作系统六、其他操作系统一、手工操作阶段 过程&#xf…

诺奖得主本庶佑:CNS这些顶刊观点有九成不正确,不要盲从迷信,搞科研做到六个C更重要...

来源&#xff1a;科研大匠整理翻译&#xff1a;思庐哲学诺奖可说是国人心中一直的痛。目前&#xff0c;在诺贝尔奖获奖国家中&#xff0c;美国堪称当之无愧的领头羊。截止发文&#xff0c;美国人已经获得了384枚诺贝尔奖&#xff01;因此&#xff0c;近代以来&#xff0c;我们一…

常见面试题

python题 1.类方法&#xff08;classmethod&#xff09;&#xff1a;1.在python中.类方法 classmethod 是一个函数修饰符&#xff0c;它表示接下来的是一个类方法&#xff0c;而对于平常我们见到的则叫做实例方法。 类方法的第一个参数cls&#xff0c;而实例方法的第一个参数是…