redis集群搭建(linux 3.0 和5.0)

安装了一下 redis的相关集群配置 发现问题还是挺多的。

注:本文中使用的服务器为阿里云centos7版本 

1.安装redis 单机版 

//安装redis 

yum -y install redis  启动命令 redis-server &

 

2. redis集群

    2.1. 集群原理   

    2.1.1.   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 会根据节点数量大致均等的将哈希槽映射到不同的节点

 

2.1.2.   redis-cluster投票:容错

 

 

 

3.1. ruby环境(redis版本为3.x.x)

 

使用到的Redis版本为3.x.x (其他版本可能略有不同)

redis集群管理工具redis-trib.rb依赖ruby环境,首先需要安装ruby环境:

 

安装ruby

yum install ruby

yum install rubygems

 

安装ruby和redis的接口程序 具体资料(链接:https://pan.baidu.com/s/1UthfYzctmKMkoeJephg1ZQ 密码:kzjc)

拷贝redis-3.0.0.gem至/usr/local下(或者 /usr/local/develope/redisGem下)

执行:

gem install /usr/local/redis-3.0.0.gem(install后为gem文件放置路径)

redis 节点配置

同一台服务器用不同端口表示不同的redis服务器

在/usr/local/develope/(个人习惯)下创建redis-cluster目录,其下创建7001、7002。。7006目录 如图

·

将/etc目录下 redis-cli redis-server redis.conf 分别复制到上图所创建目录中7001 7002.....7006

redis.conf 文件文件没有可以使vim 创建一个 命令 vim redis.conf创建 

redis.conf常用配置

#端口配置
port 7001 
#启动守护进程
appendonly yes 
#启动集群
cluster-enabled yes
cluster-config-file "nodes.conf"
#设置超时
cluster-node-timeout 5000
logfile "./out.log"
#指定访问ip地址 

bind 0.0.0.0 

分别在7001.7002 ...7006 文件夹中 修改 redis.conf   修改port 为7001 7002..7006

上述步骤完成后 进行启动每个 redis 启动命令 为 ./redis-server ./redis.conf &(注意两点1,分别在7001--7006文件夹进行启动  2.启动命令 一定要加上& 命令为:./redis-server ./redis.conf &  配置后台启动 否则退出窗口 redis服务就停止了 )

启动完成后可以使用 netstat -tnulp | grep redis和ps  aux | grep redis查看redis运行情况 

这样的 就6个redis都启动了  yeah 

实际上,Redis集群的操作在后文你可以看到是通过Ruby脚本来完成的,因此我们需要安装Ruby相关的RPM包,以及Redis和Ruby的接口包。我们要用到之前安装的Ruby (同样链接:https://pan.baidu.com/s/1UthfYzctmKMkoeJephg1ZQ 密码:kzjc 这里面可以下载到)

解压redis-3.0.0.tar.gz目录下的src中可以找到 

上传到 redis-cluster目录下 (7001---7006 文件夹都在这里面)

redis-cluster 目录下

执行redis-trib.rb,此脚本是ruby脚本,它依赖ruby环境。

 

./redis-trib.rb  create --replicas  1  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  127.0.0.1:70061  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  127.0.0.1:7006

说明:

redis集群至少需要3个主节点,每个主节点有一个从节点总共6个节点

replicas指定为1表示每个主节点有一个从节点

 

注意:

如果执行时报如下错误:

[ERR]Node XXXXXX is not empty. Either the node already knows other nodes (check withCLUSTER NODES) or contains some key in database 0

解决方法是删除生成的配置文件nodes.conf,如果不行则说明现在创建的结点包括了旧集群的结点信息,需要删除redis的持久化文件后再重启redis,比如:appendonly.aof、dump.rdb

启动成功后的输出 (由于已经启动过 没有保存相关日志 所以借个图用下 )

 

 

redis-cluster重新执行 

./redis-trib.rb create --replicas 1 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 127.0.0.1:7006

输出日志 为 ()

选择yes节点配置更新后结果如下

 

 

集群创建成功登陆任意redis结点查询集群中的节点情况。

客户端以集群方式登陆:

 

cluster info 查询集群状态信息

完工后测试下 

大功告成  另外 redis桌面管理工具 上面网盘中已经有 

redis-cluster(5.0版本)集群安装

下载文件(linux)

$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
$ tar xzf redis-5.0.5.tar.gz
$ cd redis-5.0.5
$ make

创建文件夹 redis-cluster

复制6份redis-5.0.5 到redis-cluster 

修改 每个文件名称 搭建3主 3从 这里直接使用 7001到7006 进行命令 完成后结果如图(单节点的话只需要一个节点就可以

使用原始的配置文件 在目录下进行启动入在 7001 目录下 进行启动  ./src/redis-server & 后台模式运行)

依次进入到每个文件进行修改redis.conf 将port替换为对应的每个文件夹名称  (如下为示例配置文件 可以修改 或者增加其他配置)

#端口配置
port 7001
#启动守护进程
appendonly yes
#启动集群
cluster-enabled yes
cluster-config-file "nodes.conf"
#设置超时
cluster-node-timeout 5000
logfile "./out.log"
#指定访问ip地址 
bind 0.0.0.0
 

配置修改完成后

依次对每个redis进行启动  

cd 7001

./src/redis-server ./redis.conf & (后台模式启动) (启动失败的话 查看 输出的日志  注意配置中不能有空格)

ps aux | grep redis 检查Redis是否启动 

发现6个Redis 已经全部启动了 

进行集群化配置

Redis3.0.0是通过redis-trib.rb进行集群化配置 redis5.0.0中通过 redis-cli --cluster 命令就可以

进入到7001目录下

集群化命令 [root@iZbp12hyscnjnyd7lo0iglZ 7001]# ./src/redis-cli --cluster create 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 127.0.0.1:7006 --cluster-replicas 1 

进行分配hash槽 输入yes

hash槽分配完成 查看下集群的状态

连接到客户端 当前在7001目录下

执行 ./src/redis-cli -p 7001 -c

连接上Redis进行 查看127.0.0.1:7001> cluster info

发现集群状态正常

同样输入cluster nodes 可以查看集群下所有的节点

redis5.0 cluster 集群安装结束

博文中参考文档为https://www.cnblogs.com/xuliangxing/p/7146868.html

2. 淘淘商城文档

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值