Redis集群部署配置


      测试环境:服务器系统为centos6.5,redis版本为3.2.2,使用一台机器,模拟6个redis实例来创建redis集群,其中3主3从


  1. 分别建立redis的安装目录,并复制redis.conf到安装目录下。

    wKioL1d8pBOiq69_AAAnOH8gA7s281.png-wh_50


2.修改每个目录下的redis.conf配置文件


port 7000   #端口

daemonize yes    

cluster-enabled yes   #开启集群模式

cluster-config-file nodes-7000.conf  #集群配置文件 

cluster-node-timeout 5000   #超时时间

appendonly yes

dir /rs-base/servers/redis-2.x/cluster/7000

3.分别启动实例

wKiom1d8pF-zYIaGAAAXqNXyrFw809.png-wh_50

wKiom1d8pGLRGf-BAAAbMD7qzY4505.png-wh_50

查看是否都已经启动成功


4.现在我们已经有了六个正在运行中的 Redis 实例, 接下来我们需要使用这些实例来创建集群, 并为每个节点编写配置文件。

通过使用 Redis 集群命令行工具redis-trib,编写节点配置文件的工作可以非常容易地完成redis-trib位于Redis 源码的src文件夹中,它是一个 Ruby 程序,这个程序通过向实例发送特殊命令来完成创建新集群,检查集群,或者对集群进行重新分片(reshared)等工作。

执行以下命令来创建集群:

/redis-trib.rb create --replicas 1  127.0.0.1:7000 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

(注意:这个命令在redis减压后的src目录下  --replicas的参数是每个master节点分配的slave个数)

执行后提示: /usr/bin/env: ruby: No such file or directory

   系统中没有安装ruby,所以报上面的错误。

   先安装ruby:

[root@localhost yum.repos.d]# yum install ruby

[root@localhost yum.repos.d]# yum install rubygems

[root@localhost yum.repos.d]# gem install redis

再次创建集群:

[root@localhost src]# ./redis-trib.rb create --replicas 1  127.0.0.1:7000 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

Redis自动选择主从

5.测试集群

在其中任意一个节点 使用redis-cli -c -p 7000,  set aaa bbb 

再到其他节点使用get aaa 是否可以获得value,

模拟其中一个主节点故障,杀死一个redis进程,再到其他节点使用get和set没有异常,并且它的从节点会变成主节点,

6.检查集群:通过check cluster的一个节点,就知道整个集群的状况,可以看出来谁是主,谁是从。 

./redis-trib.rb check 127.0.0.1:7000

增加节点:redis-trib.rb add-node 想要的增加的ip:port  集群中已经存在的IP:port 

./redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000

如果报这个错

 

需要删除你redis.conf里面cluster-config-file 所在的文件

如果打算让新节点成为 127.0.0.1:7005 的从节点, 只要用客户端连接上新节点, 然后执行以下命令:

redis 127.0.0.1:7006> cluster replicate 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e

(id为7005的id)

用以下命令查看是否已经别成7005的从节点  (id为主节点的id)

redis-cli -p 7000 cluster nodes | grep slave | grep 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e