redis集群搭建

在redis3.0以前,提供了Sentinel工其来监控各Master的状态,如果Master异常, 则会做主从切换,将slave作为master,将master作 为slave.其配置也是稍微的复杂,并且各方面表现一般。现在redis3.0 已经支持集群的容错功能,并且非常简单。下面我们来进行学习下redis3.0如何搭建集群。集群搭建:至少要三个master

STEP1.  创建一个文件夹redis-cluster,然后在其下面分别创建6个文件夹,如下:

[root@localhost /]# mkdir -p /usr/local/redis-cluster

[root@localhost /]# cd /usr/local/redis-cluster

[root@localhost redis-cluster]#  mkdir 7001 7002 7003 7004 7005 7006

 

STEP2.  把之前的redis. conf配置文件分别copy到700*下,进行修改各个文件内容,也就是对700*下的每一个copy的redis.conf文件进行修改!如下:

  (1) daemonize yes

  (2) port 700* (分别对每个机器的端口号进行设置)

  (3) bind 192.168.1.39 (必须要绑定当前机器的ip,不然会无限悲剧下去哇..深坑勿入! ! ! )

       (4) dir /usr/local/redis-cluster/700*/ (指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据,深坑勿入! ! ! ) 

  (5) cluster-enabled yes ( 启动集群模式,开始玩耍)

  (6) cluster-config-file nodes700*.conf (这里700x最好和port对应上)

  (7) cluster-node -timeout 5000

  (8) appendonly yes

 

STEP3.  把修改后的配置文件,分别copy到各个文件夹下,注意每个文件要修改端口号,并且nodes文件也要不相同! (可以使用 :%s/7001/700*/g来全局替换)

 

STEP4. 由于redis集群需要使用ruby命令,所以我们需要安装ruby

[root@localhost /]#  yum install ruby

[root@localhost /]#  yum install rubygems

[root@localhost /]#  gem install redis ( 安装redis和ruby的接口)

 

STEP5.  分别启动6个redis实例,然后检查是否启动成功

[root@localhost /]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/700*/redis.conf

[root@localhost /]# ps-el|grep redis  (查看是否启动成功)

 

STEP6.  首先到redis3.0的安装目录下,然后执行redis-trib.rb命令。

[root@localhost /]# cd /usr/local/redis3.0/src

[root@localhost src]# ./redis-trib.rb create --replicas 1 192.168.1.39:7001 192.168.1.39:7002 192.168.1.39:7003 192.168.1.39:7004 192.168.1.39:7005 192.1 68.1.39:7006

 

STEP7.  到此为止我们集群搭建成功!进行验证:

[root@localhost /]# cd /usr/local/redis3.0/src

[root@localhost src]# ./redis-cli -c -h 192.168.1.39 -p 700* (启动任意一个客户端)

192.168.1.39:700*>cluster info   (查看集群信息)

192.168.1.39:700*>cluster nodes   (查看节点列表)

192.168.1.39:700*>set test test  (进行数据操作验证)

 

STEP8:关闭集群则需要逐个进行关闭,使用命令:

[root@localhost /]# /usr/local/redis/src/redis-cli -c -h 192.168.1.39 -p 700* shutdown

 

By the way:

  (1) 当出现集群无法启动时,删除临时的数据文件,再次重新启动每一个redis服务,然后重新构造集群环境。

  (2)Redis集群中的命令

  //集群(cluster)

  CLUSTER INFO打印集群的信息

  CLUSTER NOOES列出集群当前已知的所有节点( node) , 以及这些节点的相关信息。

  //节点(node)

  CLUSTER MEET <ip> <port> 將ip和port所指定的节点添加到集群当中,让它成力集群的一份子.

  CLUSTER FORGET <node_id> 从集群中移除node_ id指定的节点. 

  CLUSTER REPLICATE <node_id> 当前节点设置为node_ id指定的节点的从节点。

  CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面.

  //槽(slot)

  CLUSTER ADOSLOTS <slot> [slot... ] 将一个或多个槽( slot )指派( assign )给当前节点。

  CLUSTER DELSLOTS <slot> [slot ..] 移除一个或多个槽対当前节点的指派。

  CLUSTER FLUSHSLOTS移除指派给当前节点的所有槽,让当前节点変一个没有指派任何槽的节点。

  CLUSTER SETSLOT <slot> NODE <node_id> 将槽slot 指派给node_ id 指定的节点,如果槽已経指派给另一个节点,那幺先让另一个节点刪除该槽 ,然后再迸行指派。

  CLUSTER SETSLOT <slot> MIGRATING <node_ id> 將本节点的槽slot 迁移到node_ id指定的节点中.

  CLUSTER SETSLOT <slot> IMPORTING <node_ id> 从node_ id指定的节点中导入槽slot到本节点。

  CLUSTER SETSLOT <slot> STABLE 取消対槽slot 的导入( import )或者迁移( migrate ).

   //键(key)

  CLUSTER KEYSLOT <key> 计算键key应该被放置在哪个槽上。

  CLUSTER COUNTKEYSINSLOT <slot> 返回槽slot目前包含的键值对数量

  CLUSTER GETKEYSINSLOT <slot> <count> 返回count个slot槽中的键

  (3)redis-trib.rb官方群操作命令: https://redis.io/topics/cluster-tutorial

posted @ 2019-02-18 22:47  programmLover  阅读(154)  评论(0)    收藏  举报