Redis集群环境搭建

一、Redis Cluster(Redis集群) 简介

redis3.0版本之前只支持单例,在3.0版本及以后才支持集群

redis集群采用p2p模式,是完全去中心化的,不存在中心节点或者代理节点。

redis集群是没有统一的入口的,客户端(Client)连接集群的时候连接集群中的任意节点(node)即可,集群内部的节点是相互通信的(PING-PONG机制)

每个节点都是一个redis实例。

为了实现集群高可用,即判断节点是否健康(能否正常使用),redis-cluster 有这么一个投票容错机制:如果集群中超过半数的节点投票认为某个节点挂了,

那么这个节点就挂了(fail)。这是判断节点是否挂了的方法。

那么如何判断集群是否挂了呢? 如果集群中任意一个节点挂了,而且该节点没有从节点(备份节点),那么这个集群就挂了。

这是判断集群是否挂了的方法。

那么为什么任意一个节点挂了(没有从节点)这个集群就挂了呢?  因为集群内置了16384个slot(哈希槽),并且把所有的物理节点映射到了16384[0-16383]

个slot上,或者说把这些slot均等的分发给了各个节点。当需要在Redis集群存放一个数据(key - value)时,redis会先对这个key进行crc16算法,然后得到一个结果。

再把这个结果对16384进行求余,这个余数会对应[0-16383]的其中一个槽,进而决定key-value存储到哪个节点中。所以一旦某个节点挂了,该节点对应的slot就无法使用,

那么就会导致集群无法正常工作。

综上所述,每个redis集群理论上最多可以有16384个节点。

二、集群搭建需要的环境

2.1 Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群。

2.2 要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器。

现在模拟的是为分布式集群(一台服务器上运行6个redis实例,修改端口号为(7001-7006))

2.3 安装ruby

三、集群搭建具体步骤(注意要关闭防火墙)

3.1 在 /usr/local目录下新建 redis-cluster目录,用于存放集群节点

3.2 把redis目录下的bin目录下的所有文件复制到/usr/local/redis-cluster/redis01 目录下,不用担心这里没有redis01 目录,会自动创建的。

3.3 删除redis01 目录下的快照文件dump.rdb,并且修改该目录下的redis.cnf文件,具体修改两处地方:一是端口号修改为7001,二是开启集群创建模式,打开注释即可。

修改端口号为7001,默认是6379

将 cluster-enabled yes 的注释打开

 

3.4 将 redis-cluster/redis01文件复制5份到redis-cluster目录下(redis02-redis06),创建redis实例,模拟Redis集群的6个节点。

然后将其余5个文件夹下的redis.conf里面的端口号分别修改为7002-7006.

分别修改redis.conf 文件端口号为 7002-7006

 

3.5 接着启动所有的redis节点,由于一个一个启动太麻烦了,所以在这里创建一个批量启动redis节点的脚本文件。命令为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 ..

3.6 创建好启动脚本之后,需要修改该脚本的权限,使之能够执行,

chmod 755 start-all.sh

3.7 执行start-all.sh 脚本,启动6个节点

3.8 OK.至此6个redis节点启动成功,接下来正式开启搭建集群,以上都是准备条件

其实,以上步骤也就一句话的事情:创建6个redis实例(6个节点)并启动。

要搭建集群的话,需要使用一个工具(脚本文件),这个工具在redis解压文件的源代码里。因为这个工具是一个ruby脚本文件,所以这个工具

的运行需要ruby的运行环境,就相当于java语言的运行需要在jvm上。所以需要安装ruby。

yum install ruby

然后需要把ruby相关的包安装到服务器,我这里用的是redis-3.2.0.gem。redis版本和ruby的版本最好保持一致。

将ruby包安装到服务器:需要先下载再安装。

下载:

wget https://rubygems.org/downloads/redis-3.2.0.gem

安装:

gem install redis-3.2.0.gem

3.9 上一步已经把ruby工具所需要的运行环境和ruby包安装好了,接下来需要把这个ruby脚本工具复制到/usr/local/redis-cluster 目录下。

那么这个ruby脚本工具在哪里呢?之前提到过,在redis解压文件的源代码里,即redis/src 目录下的redis-trib.rb文件。

3.10 将该ruby工具(redis-trib.sh)复制到redis-cluster目录下

cp redis-trib.rb /usr/local/redis-cluster

 然后使用该脚本文件搭建集群

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

 注意:此处大家应该根据自己的服务器ip输入对应的ip地址。

中途有个地方需要手动输入yes即可。

至此,Redis集群搭建成功!搭建注意最后一段文字,显示了每个节点所分配的slots(哈希槽),这里总共有6个节点,其中3个是从节点,

所以3个主节点分别映射了0-5460,5461-10922,10933-16383 slots

3.11 最后连接集群节点,连接任意一个即可

redis01/redis-cli -p 7001 -c

注意:一定要加上 -c,不然节点之间是无法自动跳转的。这样,存储的数据(key-value)是均匀分配到不同的节点的。

 3.12 最后加上两条redis集群基本命令

1、查看当前集群信息

cluster info

2、查看集群里有多少个节点

cluster nodes

 

 

 

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/ssqq5200936/p/10920492.html

时间: 2024-08-25 10:51:54

Redis集群环境搭建的相关文章

2.Redis集群环境搭建

转载请出自出处:http://www.cnblogs.com/hd3013779515/ 一.基本概念 1.redis集群是一个可以在多个节点之间进行数据共享的设施.redis集群提供了以下两个好处1.1 将数据自动切分(split)到多个节点1.2 当集群中的某一个节点故障时,redis还可以继续处理客户端的请求. 2.一个 Redis 集群包含 16384 个哈希槽(hash slot),数据库中的每个数据都属于这16384个哈希槽中的一个.集群使用公式 CRC16(key) % 16384

【redis】 linux 下redis 集群环境搭建

Redis集群部署文档(centos6系统) (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下) 127.0.0.1:7000127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 1:下载redis.官网下载3.0.0版本,之前2.几的版本不支持集群模式 下载地址:https://github.com

Redis集群环境搭建(实验)

环境信息: 集群中至少有奇数个主节点,所以至少三个主节点, 每个节点至少一个备份节点,所以共6个节点(master和slave各3个) 节点信息: (我这里准备了3台主机,每台主机运行一个master和一个slave) 节点1:192.168.2.100:6379     master 节点2:192.168.2.100:6380     slave 节点3:192.168.2.200:6379     master 节点4:192.168.2.200:6380     slave 节点5:19

redis集群环境搭建的错误

安装redis集群需要版本号在3.0以上 redis-cluster安装前需要安装ruby环境 搭建集群需要使用到官方提供的ruby脚本. 需要安装ruby的环境. yum -y install ruby yum -y install rubygems redis集群管理工具redis-trib.rb [[email protected] ~]# cd redis-3.0.0 [[email protected] redis-3.0.0]# cd src [[email protected] s

redis集群环境的搭建和错误分析

redis集群环境的搭建和错误分析 redis集群时,出现的几个异常问题

Linux下Redis集群环境的搭建

一.安装redis(使用redis3.0版本) 1.需要gcc环境,如果没有执行命令安装gcc yum install gcc-c++ 2.下载redis3.0的源码包并上传至服务器 3.解压源码包 tar -zxvf redis-3.0.0.tar.gz 4.进入解压目录编译 make 5.安装redis make install PREFIX=/usr/local/redis 二.启动redis 1.从redis-3.0.0文件中复制redis-conf到redis的安装目录中 2.然后修改

Redis笔记整理(二):Java API使用与Redis分布式集群环境搭建

[TOC] Redis笔记整理(二):Java API使用与Redis分布式集群环境搭建 Redis Java API使用(一):单机版本Redis API使用 Redis的Java API通过Jedis来进行操作,因此首先需要Jedis的第三方库,因为使用的是Maven工程,所以先给出Jedis的依赖: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactI

Redis之集群环境搭建

原文:Redis之集群环境搭建 前面文章介绍了Redis的主从复制,虽然该模式能够在一定程度上提高系统的稳定性,但是在数据访问量比较大的情况下,单个master应付起来还是比较吃力的,这时我们可以考虑将redis集群部署,本文就来重点给大家介绍下Redis的集群部署操作. Redis之主从复制2 Redis之主从复制1 Redis集群 一.Redis集群相关概念 1.Redis集群介绍 Redis 集群是一个提供在多个Redis间节点间共享数据的程序集. Redis集群并不支持处理多个keys的

Redis集群的搭建与实践

Redis集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接.其redis-cluster架构图如下: 其结构特点: 1.所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. 2.节点的fail是通过集群中超过半数的节点检测失效时才生效