安装了一下 redis的相关集群配置 发现问题还是挺多的。
注:本文中使用的服务器为阿里云centos7版本
1.安装redis 单机版
//安装redis
yum -y install redis 启动命令 redis-server &
架构细节:
(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 会根据节点数量大致均等的将哈希槽映射到不同的节点
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:7006
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
说明:
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桌面管理工具 上面网盘中已经有
博文中参考文档为https://www.cnblogs.com/xuliangxing/p/7146868.html
2. 淘淘商城文档