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

浙公网安备 33010602011771号