搭建Redis集群

只适用于5.*的redis版本,低于的版本 看其他的把,不要浪费时间。

目前redis为官网最新版本5.0.3

打开官网https://redis.io/

当前最小版本为5.0.3  版本   下载最新版本http://download.redis.io/releases/redis-5.0.3.tar.gz

redis集群搭建
在开始redis集群搭建之前,我们先简单回顾一下redis单机版的搭建过程

下载redis压缩包,然后解压压缩文件;
进入到解压缩后的redis文件目录(此时可以看到Makefile文件),编译redis源文件;
把编译好的redis源文件安装到/usr/local/redis目录下,如果/local目录下没有redis目录,会自动新建redis目录;
进入/usr/local/redis/bin目录,直接./redis-server启动redis(此时为前端启动redis);
将redis启动方式改为后端启动,具体做法:把解压缩的redis文件下的redis.conf文件复制到/usr/local/redis/bin目录下,然后修改该redis.conf文件->daemonize:no 改为daemonize:yse;
在/bin目录下通过./redis-server redis.conf启动redis(此时为后台启动)。
综上redis单机版安装启动完成。
具体详细带图步骤请参考 -> redis入门
请原谅我的啰嗦,ok,接着咱们回到本次话题----redis集群搭建!

Redis Cluster(Redis集群)简介

redis是一个开源的key value存储系统,受到了广大互联网公司的青睐。redis3.0版本之前只支持单例模式,在3.0版本及以后才支持集群,我这里用的是redis3.0.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个节点。

集群搭建需要的环境


Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群。
要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器。因为我没有那么多服务器,也启动不了那么多虚拟机,所在这里搭建的是伪分布式集群,即一台服务器虚拟运行6个redis实例,修改端口号为(7001-7006),当然实际生产环境的Redis集群搭建和这里是一样的。
 

安装过程

在Reids安装目录下,分别创建 目录 mkdir 7000 7001 7002 7003 7004 7005

----------------------redis.conf----------------------

vim    /usr/local/redis/redis-5.0.3/redis.conf设置下面几个值即可

#后台运行

daemonize yes

#开启集群

cluster-enabled true

#根据你启用的节点来命名,最好和端口保持一致,这个是用来保存其他节点的名称,状态等信息的

cluster-config-file  nodes-7000.conf

#单位毫秒如果一个master节点在多少毫秒内不可达,那么久被认为宕机了

cluster-node-timeout 15000

#监听端口,根据你实际监听的端口

port 7000

#aof机制

appendonly yes

#绑定的ip

bind 192.168.1.226

然后把redis.conf分别 拷贝到/usr/local/redis/redis-5.0.3/7000 到  /usr/local/redis/redis-5.0.3/7005几个文件夹中

然后分别到对应的目录下 把redis.conf  执行 vim 

 :%s/7000/7002/g

把7000替换为7002

全局替换  和 目录保持一致, 比如目录是 7003则 替换为7003

----------------------redis.conf----------------------

 

在Redis安装目录下分别执行./redis-server  ../7000/redis.conf

将六个节点分别执行

ps-ef|grep redis 看下是否启动成功6个节点

执行命令

redis-cli --cluster create 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 --cluster-replicas 1

redis 5.x的集群创建不需要ruby环境了

 --cluster-replicas 1 命令的意思是创建master的时候同时创建一个slave

会创建一个3master 3slaver的集群

yes 后

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

redis01/redis-cli -p 7001 -c 

注意:一定要加上-c,不然节点之间是无法自动跳转的!如下图可以看到,存储的数据(key-value)是均匀分配到不同的节点的:

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值