一、参考文档
Redis 官方集群指南: http://redis.io/topics/cluster-tutorial
Redis 官方集群规范: http://redis.io/topics/cluster-spec
Redis 集群指南(中文翻译,紧供参考): http://redisdoc.com/topic/cluster-tutorial.html
Redis 集群规范(中文翻译,紧供参考): http://redisdoc.com/topic/cluster-spec.html
二、Redis 集群的安装(Redis 4.0.6 + CentOS 7.3.x)
要让 Redis4.x 集群正常工作至少需要 3 个 Master 节点, 要想实现高可用, 每个 Master 节点要配备至少 1 个 Slave 节点。 根据以上特点和要求, 进行如下的集群实施规划:使用 6 台服务器(物理机或虚拟机) 部署 3 个 Master + 3 个 Slave;
主机名 | IP | 服务端口(默认6379) | 集群端口(服务端口数+10000) | 主/从 |
host1 | 10.70.27.2 | 7000 | 17000 | Master |
host2 | 10.70.27.4 | 7000 | 17000 | Master |
host3 | 10.70.27.5 | 7000 | 17000 | Master |
host4 | 10.70.27.8 | 7000 | 17000 | Slave |
host5 | 10.70.27.10 | 7000 | 17000 | Slave |
host4 | 10.70.27.12 | 7000 | 17000 | Slave |
防火墙中打开相应的端口
[plain] view plain
在这6台机器上,如果有防火墙开启了的话,记得把下面的端口打开
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000-j ACCEPT
找任意上面的一台机器上去生成redis4的可执行文件,比如在host1上。
安装目录: /usr/local/redis4
用户: root
编译和安装所需的包:
[plain] view plain copy
- # yum install gcc tcl
下载(或上传) Redis4 最新稳定版(当前最新版 redis-4.0.6.tar.gz)
[plain] view plain copy
- # cd /usr/local/src
- # wget http://download.redis.io/releases/redis-4.0.6.tar.gz
创建安装目录:
[plain] view plain copy
- # mkdir /usr/local/redis4
解压:
[plain] view plain copy
- # tar -zxvf redis-4.0.6.tar.gz
- # cd redis-4.0.6
安装(使用 PREFIX 指定安装目录):
[plain] view plain copy
- # make PREFIX=/usr/local/redis4 install
安装完成后, 可以看到/usr/local/redis4 目录下有一个 bin 目录, bin 目录里就是 redis 的命令脚本:
[plain] view plain copy
- redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server
在6个机器上 创建集群配置目录
/usr/local/redis4
/usr/local/redis4/conf
/usr/local/redis4/bin
然后
1: 把host1上的 /usr/local/src/redis-4.0.6/redis.conf 拷贝到这六个机器的/usr/local/redis4/conf 下面。
2: 把host1上的 /usr/local/redis4/bin 目录下的所有内容 拷贝到这六个机器的/usr/local/redis4/bin下面。
对6个节点修改它们的配置文件,下面选项如下:
6 个节点的 redis.conf 配置文件内容(作为参考),注意修改下红色字体部分的内容即可,其他都相同:
在本次安装中,我们包含了最少选项的集群配置文件示例如下:
[plain] view plain copy
- port 7000
- cluster-enabled yes
- cluster-config-file nodes.conf
- cluster-node-timeout 5000
- appendonly yes
使用如下命令启动这 6 个 Redis 节点实例:
# /usr/local/redis4/bin/redis-server /usr/local/redis4/conf/redis.conf
启动之后用 PS 命令查看实例启动情况:
# ps -ef | grep redis
root 5443 1 0 22:49 ? 00:00:00 /usr/local/redis4/bin/redis-server *:7000 [cluster]
注意: 启动完毕后, 6 个 Redis 实例尚未构成集群。
接下来准备创建集群
安装 ruby 和 rubygems注:如果是Redis4.0.6,则ruby需要2.2.2版本及其以上。
安装步骤如下:
# yum install centos-release-scl-rh
//会在/etc/yum.repos.d/目录下多出一个CentOS-SCLo-scl-rh.repo源
# yum install rh-ruby24-ruby.x86_64 -y
# scl enable rh-ruby24 bash
# ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]
gem 安装 redis ruby 接口:
[plain] view plain copy
- # gem install redis
- [root@VM_27_2_centos etc]# gem install redis
Fetching: redis-4.0.1.gem (100%)
Successfully installed redis-4.0.1
Parsing documentation for redis-4.0.1
Installing ri documentation for redis-4.0.1
Done installing documentation for redis after 0 seconds
1 gem installed
执行 Redis 集群创建命令(只需要在其中一个节点上执行一次则可)
[plain] view plain copy
- # cd /usr/local/src/redis-4.0.6/src/
- # cp redis-trib.rb /usr/local/bin/redis-trib.rb
- # /usr/local/bin/redis-trib.rb create --replicas 1 10.70.27.2:7000 10.70.27.4:7000 10.70.27.5:7000 10.70.27.8:7000 10.70.27.10:7000 10.70.27.12:7000
结果为:
[plain] view plain copy
- >>> Creating cluster
- Connecting to node
- ......
- Can I set the above configuration? (type 'yes' to accept): yes
- (输入 yes 并按下回车确认之后,集群就会将配置应用到各个节点,并连接起(join)各个节点,也就是
- 让各个节点开始互相通讯)
- >>> Nodes configuration updated
- >>> Assign a different config epoch to each node
- >>> Sending CLUSTER MEET messages to join the cluster
- Waiting for the cluster to join....
- >>> Performing Cluster Check
- .....
一切正常的情况下输出以下信息
[plain] view plain copy
- [OK] All nodes agree about slots configuration.
- >>> Check for open slots...
- >>> Check slots coverage...
- [OK] All 16384 slots covered.
最后一行信息表示集群中的 16384 个槽都有至少一个主节点在处理, 集群运作正常。
集群创建过程说明:
(1) 给定 redis-trib.rb 程序的命令是 create , 这表示我们希望创建一个新的集群;
(2) 这里的 --replicas 1 表示每个主节点下有一个从节点;
(3) 之后跟着的其它参数则是实例的地址列表,程序使用这些地址所指示的实例来创建新集群;总的来说,以上命令的意思就是让 redis-trib 程序创建一个包含三个主节点和三个从节点的集群。接着, redis-trib 会打印出一份预想中的配置给你看,如果你觉得没问题的话(注意核对主从关系是否是你想要的),就可以输入 yes , redis-trib 就会将这份配置应用到集群当中。
使用 redis-cli 命令进入集群环境
[plain] view plain copy
- # /opt/app/redis4_cluster/bin/redis-cli -c -h 10.70.27.2 -p 7000
- > set name bigtree
- OK
- # /opt/app/redis4_cluster/bin/redis-cli -c -h 10.70.27.2 -p 7000
- > get name
更多的redis-cli 命令见
https://www.cnblogs.com/yanwei-wang/p/5527453.html
三、将 Redis 配置成服务
可以参考这个文档去服务化redis 进程http://blog.csdn.net/bigtree_3721/article/details/78883920
四、温馨提示
大家可以到链接http://download.csdn.net/detail/l1028386804/9849374下载Redis集群配置文件
参考文档: http://blog.csdn.net/l1028386804/article/details/72633608
注意:
1:redis在单机模式下redis.conf配置文件中默认的数据库数量是16个;在集群模式下这个配置是不起作用的,集群客户端是不支持多数据库db的,只有一个数据库默认是SELECT 0。
2:集群slave从节点默认是不支持读写操作的,但是在执行过readonly命令后可以执行读操作。
即在redis.conf中,做如下设置:
slave-read-only yes