linux下redis集群搭建

详细可以参看《redis官网文档》或者《redis中文网》,按照步骤操作就可以了

redis单机版安装,详细参看《linux下安装redis》

进入到redis的目录下,创建cluster-test目录,进入cluster-test目录,创建7000,7001,7002,7003,7004,7005目录

mkdir cluster-test
cd cluster-test/
mkdir 7000 7001 7002 7003 7004 7005

按照如下配置修改redis.conf,并放入对应的目录中

//默认ip为127.0.0.1 直接注释掉 配置文件56行
bind 127.0.0.1
//端口7000,7002,7003  配置文件92行
port  7000                                              
// daemonize 的参数为yes,表示后台运行 配置文件136行
daemonize    yes                               
//pidfile文件对应7000,7001,7002  我是一台虚拟机创建6个redis实例,所以需要改配置文件,配置文件158行
pidfile  /var/run/redis_7000.pid 
//aof日志开启,默认是no  有需要就开启,它会每次写操作都记录一条日志 配置文件672行
appendonly  yes   
//开启集群  把注释#去掉 配置文件814行
cluster-enabled  yes  
//集群的配置 配置文件首次启动自动生成 7000,7001,7002  配置文件822行
cluster-config-file  nodes_7000.conf 
//请求超时  默认15秒,可自行设置 配置文件828行
cluster-node-timeout  15000

启动redis集群

./redis-server cluster-test/7000/redis.conf
./redis-server cluster-test/7001/redis.conf
./redis-server cluster-test/7002/redis.conf
./redis-server cluster-test/7003/redis.conf
./redis-server cluster-test/7004/redis.conf
./redis-server cluster-test/7005/redis.conf

查看redis启动的进程

ps -ef|grep redis

 

搭建集群

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

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

首先进入redis的tar包解压的目录(我的是在/opt/redis-4.0.10/src下)

cd /opt/redis-4.0.10/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
 

这个命令在这里用于创建一个新的集群, 选项–replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。之后跟着的其他参数则是这个集群实例的地址列表,3个master3个slave redis-trib 会打印出一份预想中的配置给你看, 如果你觉得没问题的话, 就可以输入 yes , redis-trib 就会将这份配置应用到集群当中,让各个节点开始互相通讯,最后可以得到如下信息:

 

输入yes 成功后,如下所示

另外,如果执行命令的时候报错;这个工具是用 ruby 实现的,所以需要安装 ruby

yum -y install ruby ruby-devel rubygems rpm-build

再执行

gem install redis

如果执行gem install redis出错,可以参看《执行gem install redis时提示redis requires Ruby version >= 2.2.2.错误解决方法》

集群测试

可以看到,set的时候,会把参数塞到不同的槽位上(节点上)