redis 集群

redis 集群
通信:ping-pong(半数不通单节点master fail)
连接:redis节点彼此互联,连接其中一个节点连接上redis集群
存储:
16384个槽分摊到不同的master主机
每台主机的槽=16384除以主机个数
key经crc16算法得出结果,对16384求余得到槽
容错:集群是否fail?
1.如果one master fail slave not replace
2.半数的master fail,无论是否slave 则集群 fail
集群搭建:
环境准备:
1.安装ruby(集群管理工具(redis-trib.rb))
yum install ruby
yum install rubygems
2.安装redis和ruby的接口文件
redis-***.gem 上传到linux
安装:gem install redis-***.gem
3.拷贝redis-trib.rb(文件所在位置(redis-3.0.0--->src))文件到redis-cluster文件夹
删除原文件,创建文件夹:rm -rf redis-cluster;(del old) mkdir redis-cluster;
redis-3.0.0目录src ll *.rb(find)
cp redis-trib.rb /usr/local/redis/redis-cluster(copy)

集群搭建

集群中服务器只有0号库,不是16个库。
条件准备:
3台master,3台slave(more 6)
端口设计:7001-7006,同台机器端口号不同即可
1.cp bin ./redis-cluster/7001 -r
2.删除持久化文件 rm -rf appendonly.aof dump.rdb
3.修改redis.conf, /cluster n cluster-enabled yes

  修改端口   port 7001

4.复制7002-7006机器
cp 7001/ 7002 -r …
5.修改redis.conf 中的port
6.vi start-all.sh
cd 7001
./redis-server ./redis.conf
cd ..
cd 7002
./redis-server ./redis.conf
cd ..
cd 7003
./redis-server ./redis.conf
cd ..
cd 7004
./redis-server ./redis.conf
cd ..
cd 7005
./redis-server ./redis.conf
cd ..
cd 7006
./redis-server ./redis.conf
cd ..

chmod u+x start-all.sh(修改权限)
7../start-all.sh(启动服务)
8.ps -aux|grep redis kill -9 端口

创建集群:
./redis-trib.rb create --replicas 1 ip:port ..... (6台机器,3台master,3台slave)
命令 创造副本

连接集群:
./redis-cli -h host -p port -c
-c 代表连接集群,进行数据操作,不关心数据存放

查看集群: cluster info
查看集群节点:cluster nodes
进行测试:one master kill ,查看slave是否replace kill -9 端口

添加主节点:
关闭所有节点:
vi shutdown-all.sh
cd 7001
./redis-cli -p 7001 shutdown
cd ..
cd 7002
./redis-cli -p 7002 shutdown
cd ..
cd 7003
./redis-cli -p 7003 shutdown
cd ..
cd 7004
./redis-cli -p 7004 shutdown
cd ..
cd 7005
./redis-cli -p 7005 shutdown
cd ..
cd 7006
./redis-cli -p 7006 shutdown
cd ..
chmod u+x shutdown-all.sh


删除所有节点缓存


重新启动所有服务 ./start-all.sh
  cp 7001/ 7007 -r(copy) 修改端口,删除缓存文件,启动主机

建立集群master 和slave,各个机器之间的关联

  ./redis-trib.rb  create --replicas 1 192.168.80.128:7001 192.168.80.128:7002 192.168.80.128:7003 192.168.80.128:7004 192.168.80.128:7005 192.168.80.128:7006   (ip和ip之间为空格)

连接集群:

  ./redis-cli -h 192.168.80.128 -p 7001 -c

  其中-c 表示连接到集群

  cluster nodes    (查看集群节点信息)

添加节点:

  复制7007 同时修改相对应的端口

  ./redis-service redis.conf

  ./redis-trib.rb add-node 127.0.0.1:7007(新增节点) 127.0.0.1 7001(存在节点)

添加报错:

  [ERR] Node 192.168.80.128:7007 is not empty. Either the node already knows other nodes (check with       CLUSTER NODES) or contains some key in database 0.

解决方法:

  首先关闭集群,编写shutdown.sh

     将每个机器的三个缓存文件删掉

     重启服务,连接集群,添加节点

新增节点分配节点:

  ./redis-trib.rb reshard 127.0.0.1:7001(连接一台机器其他都连接

     输入被输入节点的id

      500    

  all  (每个节点分配)

转载于:https://www.cnblogs.com/glblog/p/5742575.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值