10-Redis-cluster

个人专题目录


NoSql入门和概述

Redis入门介绍

Redis数据类型

解析配置文件 redis.conf

Redis的持久化

Redis的事务

Redis的发布订阅

Redis的复制(Master/Slave)

Redis的Java客户端Jedis

https://github.com/caoxinyu/RedisClient

https://github.com/MicrosoftArchive/redis/releases

redis_cloud模式研究一下

架构细节:

1. 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
  2. 节点的fail是通过集群中超过半数的节点检测失效时才生效.

  1. 客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

  2. redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<-

redis-cluster选举:容错

  1. 领着选举过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉.

  2. 什么时候整个集群不可用(cluster_state:fail),当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误

    • 如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成进群的slot映射[0-16383]不完成时进入fail状态.
    • 如果进群超过半数以上master挂掉,无论是否有slave集群进入fail状态.

包括:

1、包含redis cloud集群的压测的qps

安装问题可见:https://blog.csdn.net/banqgg/article/details/79309636

相关文章:http://www.aboutyun.com/thread-15315-1-1.html

  1. redis集群要求必须最好3个master节点

  2. redis集群总槽数16384,slot

redis集群安装

1、安装ruby环境,

在线安装:yum install ruby

离线安装:

可参考:http://www.cnblogs.com/xuliangxing/p/7132656.html

下载ruby地址:https://cache.ruby-lang.org/pub/ruby/,这里下载版本:ruby-2.5.0.tar.gz,最好2.5版本

解压ruby-2.5.0.tar.gz包,然后进入目录

安装执行 ./configure --prefix=/usr/local/ruby,完成后执行make && make install

2、安装rubygems

在线安装:yum install rubygems

离线安装:

可参考:http://www.cnblogs.com/xuliangxing/p/7133544.html

下载ruby地址:https://rubygems.org/pages/download,这里下载版本:rubygems-2.7.7.tgz

解压并进入目录,执行命令:ruby setup.rb

如果报错:59:in `require': cannot load such file -- zlib

需要下载zlib安装:

下载:http://www.zlib.net/fossils/

安装:

tar -vxf zlib-1.2.11.tar.gz

cd zlib-1.2.11/

./configure --prefix=/usr/local/zlib

make

make install

用zlib编译ruby

切到ruby的解压包目录

1 $ cd /opt/ruby-2.5.0/ext/zlib

备注:/home/cmfchina/ruby/ruby-2.4.1这个目录是ruby安装包后解压的目录,就是前面提到的ruby离线安装

2 $ ruby extconf.rb --with-zlib-include=/usr/local/zlib/include/ --with-zlib-lib=/usr/local/zlib/lib //会生成一个Makefile文件

备注:/usr/local/zlib是我的zlib安装目录

3 替换Makefile中top_srcdir为../..,sed -i s#$(top_srcdir)#../..# Makefile

4 直接在/home/cmfchina/ruby/ruby-2.4.1/ext/zlib目录下执行make

5 直接在/home/cmfchina/ruby/ruby-2.4.1/ext/zlib目录下执行make install

需要下载openssl安装:

下载:https://www.openssl.org/source/old/1.0.2/

tar -xvf openssl-1.0.2n.tar.gz

./config -fPIC --prefix=/usr/local/openssl enable-shared

./config -t

make && make install

用openssl编译ruby

切到ruby的解压包目录

1 $ cd /opt/ruby-2.5.0/ext/openssl

2 备注:/opt/ruby-2.5.0这个目录是ruby安装包后解压的目录,就是前面提到的ruby离线安装

3 $ruby extconf.rb --with-openssl-include=/usr/local/openssl/include/ --with-openssl-lib=/usr/local/openssl/lib //会生成一个Makefile文件

4 备注:/usr/local/openssl是我的openssl安装目录

5 替换Makefile中top_srcdir为../..,sed -i 's#$(top_srcdir)#../..#g' Makefile 6 直接在/home/cmfchina/ruby/ruby-2.4.1/ext/openssl目录下执行make 7 直接在/home/cmfchina/ruby/ruby-2.4.1/ext/openssl目录下执行make install

安装redis.gem

下载:https://rubygems.org/gems/redis/versions

安装:gem install redis-3.3.0.gem

安装启动redis-cluster

下载:http://download.redis.io/releases/

1、解压redsi包:tar -zxvf redis-4.0.11.tar.gz

2、安装redis,到redis的解压包下,make && make install

3、切到集群(空闲)目录下新建6个目录 mkdir redis7001 ...7006

4、从安装目录中Redis的安装目录usr/local/bin,将redis-cli、redis-server复制到redis7001 ...7006下

5、从解压包中将redis.conf复制到redis7001中,修改配置文件

bind 0.0.0.0 //设置为所有主机都可访问

port 7001 //服务启动端口

daemonize yes//redis后台运行

pidfile /var/run/redis_7001.pid //pidfile文件对应7001,7002...

appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志

cluster-enabled yes //开启集群 把注释#去掉

cluster-config-file nodes_7001.conf//集群的配置 配置文件首次启动自动生成7001,7002 cluster-node-timeout 15000/请求超时 默认15秒,可自行设置

6、将配置文件复制到其他包下,同上修改配置文件

7、分别将这6个redis服务启动起来(命令redis-server redis.conf)

8、使6个几点变为集群,解压的文件/opt/redis-4.0.11/src目录下找到文件为:redis-trib.rb,执行命令

./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

redis客户端连接:

redis-cli -c -h 127.0.0.1 -p 7001

redis集群命令:

cluster info :打印集群的信息
cluster nodes :列出集群当前已知的所有节点( node),以及这些节点的相关信息。
节点
cluster meet   :将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
cluster forget  :从集群中移除 node_id 指定的节点。
cluster replicate  :将当前节点设置为 node_id 指定的节点的从节点。
cluster saveconfig :将节点的配置文件保存到硬盘里面。
槽(slot)
cluster addslots  [slot ...] :将一个或多个槽( slot)指派( assign)给当前节点。
cluster delslots  [slot ...] :移除一个或多个槽对当前节点的指派。
cluster flushslots :移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
cluster setslot  node  :将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给
另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
cluster setslot  migrating  :将本节点的槽 slot 迁移到 node_id 指定的节点中。
cluster setslot  importing  :从 node_id 指定的节点中导入槽 slot 到本节点。
cluster setslot  stable :取消对槽 slot 的导入( import)或者迁移( migrate)。
键
cluster keyslot  :计算键 key 应该被放置在哪个槽上。
cluster countkeysinslot  :返回槽 slot 目前包含的键值对数量。
cluster getkeysinslot   :返回 count 个 slot 槽中的键  

你可能感兴趣的:(10-Redis-cluster)