Redis 集群搭建
这里在一台服务器(192.168.31.237)上搭建3主3从,以 7001,7002,7003,7004,7005,7006 端口区分每个节点为例
1. 下载编译
- Redis下载 download.redis.io/releases/re…
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
- 创建目录
[root@zivs3 opt]# mkdir -p /opt/redis-cluster/redis-7001
[root@zivs3 opt]# mkdir -p /var/redis/{data,logs,pid}
- redis-cluster redis集群目录
- /var/redis/data redis数据文件目录(dump.rdb, appendonly.aof, nodes.conf)
- /var/redis/logs resis日志文件
- /var/redis/pid resis启动进程
- 解压redis
# 将redis-4.0.10.tar.gz解压到/opt/redis-cluster目录下
[root@zivs3 tools]# tar -zxvf redis-4.0.10.tar.gz -C /opt/redis-cluster
- 编译
redis 用C开发的需要提前先安装
gcc编译环境
[root@zivs3 tools]# cd /opt/redis-cluster/redis-4.0.10
[root@zivs3 redis-4.0.10]# make install PREFIX=/opt/redis-cluster/redis-7001
此时在
/opt/redis-cluster/redis-7001目录中会出现一个bin目录
2. 服务配置
- 执行下面命令将
/opt/redis-cluster/redis-4.0.10目录下的redis.conf文件复制到/opt/redis-cluster/redis-7001目录下 [这是redis配置文件]
[root@zivs3 redis-4.0.10]# cp redis.conf /opt/redis-cluster/redis-7001
- 修改配置文件,下面为需要配置的项:
# host
bind 192.168.31.237
# 端口号 (每个节点对应一个端口号)
port 7001
# 开启后台运行
daemonize yes
# 进程文件(每个节点区分文件名)
pidfile /var/redis/pid/redis_7001.pid
# 日志文件(每个节点区分文件名)
logfile /var/redis/logs/redis_7001.log
# rdb文件名(每个节点区分文件名)
dbfilename dump_7001.rdb
# rbd,aof,nodes.conf 文件路径
dir /var/redis/data
# 开启redis集群
cluster-enabled yes
# 集群nodes.conf文件(每个节点区分文件名)
cluster-config-file nodes-7001.conf
此时一台redis服务已经配好,接下来就是服务copy,修改配置
# 服务copy
[root@zivs3 redis-cluster]# cp -r redis-7001 redis-7002
#服务配置
[root@zivs3 redis-cluster]# sed -i 's#7001#7002#g' ./redis-7002/redis.conf
# 以此类推
# ...
3. 服务启动
- 建立批量启动脚本
[root@zivs3 redis-cluster]# vim start-all-redis.sh
cd /opt/redis-cluster/redis-7001
./bin/redis-server redis.conf &
cd /opt/redis-cluster/redis-7002
./bin/redis-server redis.conf &
cd /opt/redis-cluster/redis-7003
./bin/redis-server redis.conf &
cd /opt/redis-cluster/redis-7004
./bin/redis-server redis.conf &
cd /opt/redis-cluster/redis-7005
./bin/redis-server redis.conf &
cd /opt/redis-cluster/redis-7006
./bin/redis-server redis.conf &
- 启动
redis服务
[root@zivs3 redis-cluster]# ./start-all-redis.sh
- 查看
redis启动进程
[root@zivs3 redis-cluster]# ps -ef | grep redis
root 3240 1 0 16:55 ? 00:00:00 ./bin/redis-server 192.168.31.237:7004 [cluster]
root 3241 1 0 16:55 ? 00:00:00 ./bin/redis-server 192.168.31.237:7005 [cluster]
root 3242 1 0 16:55 ? 00:00:00 ./bin/redis-server 192.168.31.237:7001 [cluster]
root 3243 1 0 16:55 ? 00:00:00 ./bin/redis-server 192.168.31.237:7002 [cluster]
root 3244 1 0 16:55 ? 00:00:00 ./bin/redis-server 192.168.31.237:7006 [cluster]
root 3260 1 0 16:55 ? 00:00:00 ./bin/redis-server 192.168.31.237:7003 [cluster]
root 3956 2524 0 17:06 pts/2 00:00:00 grep --color=auto redis
- 批量
kill redis进程
ps -ef | grep redis | grep -v grep | awk '{print $2}' | xargs kill -9
4. 创建集群
- 创建集群
./redis-trib.rb create --replicas 1 192.168.31.237:7001 192.168.31.237:7002 192.168.31.237:7003 192.168.31.237:7004 192.168.31.237:7005 192.168.31.237:7006
集群创建成功输入如下信息,告诉你
master节点信息,master和slave之间的映射关系
[root@zivs3 redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.31.237:7001 192.168.31.237:7002 192.168.31.237:7003 192.168.31.237:7004 192.168.31.237:7005 192.168.31.237:7006
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.31.237:7001
192.168.31.237:7002
192.168.31.237:7003
Adding replica 192.168.31.237:7005 to 192.168.31.237:7001
Adding replica 192.168.31.237:7006 to 192.168.31.237:7002
Adding replica 192.168.31.237:7004 to 192.168.31.237:7003
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 28fbdaac692dcec385943061a400011962a05f91 192.168.31.237:7001
slots:0-5460 (5461 slots) master
M: c9064df8348c3cd8c063f1708d8609dbb1a4dbea 192.168.31.237:7002
slots:5461-10922 (5462 slots) master
M: f509567d93cf062308aa398394e9db95a4a6c385 192.168.31.237:7003
slots:10923-16383 (5461 slots) master
S: a0bb58a8ecae6727bdde68d14f4a3a178a961ec6 192.168.31.237:7004
replicates f509567d93cf062308aa398394e9db95a4a6c385
S: 64428eb3225ac294eb63237c9029cdbe2aa5422d 192.168.31.237:7005
replicates 28fbdaac692dcec385943061a400011962a05f91
S: 144740e2866320a5eb93bbf4c5417eac741823ec 192.168.31.237:7006
replicates c9064df8348c3cd8c063f1708d8609dbb1a4dbea
Can I set the above configuration? (type 'yes' to accept): yes
>>> 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 (using node 192.168.31.237:7001)
M: 28fbdaac692dcec385943061a400011962a05f91 192.168.31.237:7001
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: f509567d93cf062308aa398394e9db95a4a6c385 192.168.31.237:7003
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: 64428eb3225ac294eb63237c9029cdbe2aa5422d 192.168.31.237:7005
slots: (0 slots) slave
replicates 28fbdaac692dcec385943061a400011962a05f91
M: c9064df8348c3cd8c063f1708d8609dbb1a4dbea 192.168.31.237:7002
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: a0bb58a8ecae6727bdde68d14f4a3a178a961ec6 192.168.31.237:7004
slots: (0 slots) slave
replicates f509567d93cf062308aa398394e9db95a4a6c385
S: 144740e2866320a5eb93bbf4c5417eac741823ec 192.168.31.237:7006
slots: (0 slots) slave
replicates c9064df8348c3cd8c063f1708d8609dbb1a4dbea
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
- 集群连接
[root@zivs3 redis-cluster]# ./redis-cli -c -h 192.168.31.237 -p 7002
192.168.31.237:7002> set zkey zivs.zheng
OK
192.168.31.237:7002> get zkey
"zivs.zheng"
注意:`./redis-cli -c -h 192.168.31.237 -p 7002` 需要加上 `-c` 否则连接的是当前节点,而不是集群。
- 查看集群信息
192.168.31.237:7002> 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:2
cluster_stats_messages_ping_sent:989
cluster_stats_messages_pong_sent:921
cluster_stats_messages_sent:1910
cluster_stats_messages_ping_received:921
cluster_stats_messages_pong_received:987
cluster_stats_messages_received:1908
- 查看集群节点
192.168.31.237:7002> cluster nodes
0bc6b597eaa54b14c795bf1e8a5773f4420c4b43 192.168.31.237:7005@17005 slave 1bab945951f8853fd840dc289d8486c35e1f20d7 0 1531991432142 5 connected
ec2b2be8177cbd7241bf61d6190e31555569e512 192.168.31.237:7001@17001 master - 0 1531991433150 1 connected 0-5460
daf135724c4016b92fcf024582ab074310e0532e 192.168.31.237:7004@17004 slave e0c54e8e03a7cf12f22abdd677ea466edb02c107 0 1531991431000 4 connected
e9cb87de61e04df264eccadf38b42a197344de9a 192.168.31.237:7006@17006 slave ec2b2be8177cbd7241bf61d6190e31555569e512 0 1531991432000 6 connected
e0c54e8e03a7cf12f22abdd677ea466edb02c107 192.168.31.237:7002@17002 myself,master - 0 1531991429000 2 connected 5461-10922
1bab945951f8853fd840dc289d8486c35e1f20d7 192.168.31.237:7003@17003 master - 0 1531991431000 3 connected 10923-16383