redis集群搭建
环境
- CentOS7 操作系统
- 已安装好的Redis,具体安装看上一篇
集群搭建
同台机器集群搭建
创建文件夹
我们设计集群中 Redis 节点的端口号为 9000-9005,端口号即集群下各实例文件夹。数据存放在 端口号/data 文件夹中。1
2
3# mkdir /opt/redis_cluster
# cd /opt/redis_cluster
# mkdir -p 9000/data 9001/data 9002/data 9003/data 9004/data 9005/data复制一个redis.conf文件到9000目录下,并修改
从源码包中复制配置文件并修改1
2# cp /opt/redis-4.0.11/redis.conf /opt/redis_cluster/9000
# vi /opt/redis_cluster/9000/redis.conf重点修改以下配置
1
2
3
4
5
6
7
8
9
10port 9000(每个节点的端口号)
daemonize yes
#bind 127.0.0.1(绑定当前机器 IP,可以不配置)
dir /opt/redis_cluster/9000/data/(数据文件存放位置)
pidfile /var/run/redis_9000.pid(pid 9000和port要对应)
cluster-enabled yes(启动集群模式)
cluster-config-file nodes9000.conf(9001和port要对应)
cluster-node-timeout 15000
appendonly yes
protected-mode no(保护模式设置为no,如果启用了,则只能够通过lookback ip(127.0.0.1)访问Redis cache)把配置好的复制5份
1
2
3
4
5# cp -rf /opt/redis_cluster/9000/* /opt/redis_cluster/9001
# cp -rf /opt/redis_cluster/9000/* /opt/redis_cluster/9002
# cp -rf /opt/redis_cluster/9000/* /opt/redis_cluster/9003
# cp -rf /opt/redis_cluster/9000/* /opt/redis_cluster/9004
# cp -rf /opt/redis_cluster/9000/* /opt/redis_cluster/9005挨个修改实例的配置文件
通过搜索会发现其实只有四个点需要修改,我们全局替换下吧,进入相应的节点文件夹,做替换就好了,不放心再手工检查下1
2# vi /opt/redis_cluster/9001/redis.conf
:%s/9001/9002启动
1
2
3
4
5
6# /usr/local/bin/redis-server /opt/redis_cluster/9000/redis.conf
# /usr/local/bin/redis-server /opt/redis_cluster/9001/redis.conf
# /usr/local/bin/redis-server /opt/redis_cluster/9002/redis.conf
# /usr/local/bin/redis-server /opt/redis_cluster/9003/redis.conf
# /usr/local/bin/redis-server /opt/redis_cluster/9004/redis.conf
# /usr/local/bin/redis-server /opt/redis_cluster/9005/redis.conf检查是否启动成功
1
2# ps -ef |grep redis
# /usr/local/bin/redis-cli -h 127.0.0.1 -p 9000连接成功,set值会报(error) CLUSTERDOWN Hash slot not served错误,原因是实例之间无法相互发现,我们继续
安装集群所需软件
由于 Redis 集群是用ruby实现的集群管理,所以安装ruby相关软件1
2
3# yum install ruby
# yum install rubygems
# gem install redis此处需要安装大于等于2.2的ruby版本
配置集群
通过redis-trib.rb命令创建集群,如果/usr/local/bin/目录没有,从源码包拷贝一个即可1
# /usr/local/bin/redis-trib.rb create --replicas 1 127.0.0.1:9000 127.0.0.1:9001 127.0.0.1:9002 127.0.0.1:9003 127.0.0.1:9004 127.0.0.1:9005
交互过程中输入yes,同意即可,–replicas 1表示主从复制比例为 1:1,即一个主节点对应一个从节点
验证
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25# /usr/local/bin/redis-cli -h 127.0.0.1 -p 9000
127.0.0.1:9000> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:1122
cluster_stats_messages_pong_sent:1060
cluster_stats_messages_sent:2182
cluster_stats_messages_ping_received:1060
cluster_stats_messages_pong_received:1102
cluster_stats_messages_received:2162
127.0.0.1:9000> cluster nodes
4f8c920acc559c11153c5aaf856820ca39c443cb 10.200.1.11:9000@19000 myself,master - 0 1544424469000 1 connected 0-5460
ec2af1f981c08bf01131545369c0600b91c5172c 10.200.1.11:9004@19004 slave 4f8c920acc559c11153c5aaf856820ca39c443cb 0 1544424468000 5 connected
bcc85b3502c107f18557d11889739a2b6f0ed896 10.200.1.11:9003@19003 slave aadb89ee25e9849e758529c477f9af6ede99850a 0 1544424467000 4 connected
923d1b67ee012927bf4de345143d5f93670c97b5 10.200.1.11:9001@19001 master - 0 1544424468909 2 connected 5461-10922
aadb89ee25e9849e758529c477f9af6ede99850a 10.200.1.11:9002@19002 master - 0 1544424469920 3 connected 10923-16383
70fad7237c2e8bb308167f7e8b7a7b670d333564 10.200.1.11:9005@19005 slave 923d1b67ee012927bf4de345143d5f93670c97b5 0 1544424468000 6 connected
127.0.0.1:9000>通过命令,可以详细的看出集群信息和各个节点状态,主从信息以及连接数、槽信息等
测试
1
2
3
4
5
6
7
8
9
10# /usr/local/bin/redis-cli -c -h 10.200.1.11 -p 9000
10.200.1.11:9000> set name test
-> Redirected to slot [5798] located at 10.200.1.11:9001
OK
10.200.1.11:9001> get name
"test"
10.200.1.11:9001> keys *
1) "name"
2) "cache:test3"
10.200.1.11:9001>
-c 表示集群模式
不同机器的集群搭建
和同一台机器搭建唯一的区别是通过redis-trib.rb命令创建集群,随便在一个实例上执行即可