Redis集群的操作
Posted Bwz_Learning
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis集群的操作相关的知识,希望对你有一定的参考价值。
1、原始集群
1.1 启动Redis集群
[root@cent03 ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7001/redis.conf
[root@cent03 ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7002/redis.conf
[root@cent03 ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7003/redis.conf
[root@cent03 ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7004/redis.conf
[root@cent03 ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7005/redis.conf
[root@cent03 ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7006/redis.conf
1.2 查看服务器运行状态
[root@cent03 ~]# ps -ef | grep redis
root 2322 1 0 04:48 ? 00:00:00 /usr/local/redis/bin/redis-server 192.168.2.105:7001 [cluster]
root 2326 1 0 04:48 ? 00:00:00 /usr/local/redis/bin/redis-server 192.168.2.105:7002 [cluster]
root 2330 1 0 04:48 ? 00:00:00 /usr/local/redis/bin/redis-server 192.168.2.105:7003 [cluster]
root 2334 1 0 04:48 ? 00:00:00 /usr/local/redis/bin/redis-server 192.168.2.105:7004 [cluster]
root 2339 1 0 04:48 ? 00:00:00 /usr/local/redis/bin/redis-server 192.168.2.105:7005 [cluster]
root 2344 1 0 04:48 ? 00:00:00 /usr/local/redis/bin/redis-server 192.168.2.105:7006 [cluster]
root 2349 2299 0 04:49 pts/0 00:00:00 grep redis
1.3 查看集群状态
# -c 表示集群模式
[root@cent03 ~]# /usr/local/redis/bin/redis-cli -c -h 192.168.2.105 -p 7001
192.168.2.105:7001> cluster nodes
aae7ff08b8cc4bb5473044a52f926b6e82c96840 192.168.2.105:7001 myself,slave 1b362004cf174d9ecb72c0650117781618c52a70 0 0 1 connected
1b362004cf174d9ecb72c0650117781618c52a70 192.168.2.105:7004 master - 0 1477568990462 8 connected 0-5460
987b27c96774f9c9bbbbf7bf3ccfe4e4b2e4c3e7 192.168.2.105:7005 slave f9a0fbd03254b0010bca6782867dfa65f21a2448 0 1477568991974 5 connected
f9a0fbd03254b0010bca6782867dfa65f21a2448 192.168.2.105:7002 master - 0 1477568991471 2 connected 5461-10922
cabff9be14080ae12bfad0b199ae737639ec57bd 192.168.2.105:7003 master - 0 1477568990967 3 connected 10923-16383
286b1ed602c9e74f23b8bd8d66db50308b256d3e 192.168.2.105:7006 slave cabff9be14080ae12bfad0b199ae737639ec57bd 0 1477568990967 6 connected
192.168.2.105:7001> 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:8
cluster_my_epoch:8
cluster_stats_messages_sent:998
cluster_stats_messages_received:351
2、新集群操作
2.1 我们新建俩个服务,按照之前搭建的集群方式新增俩个节点:(一主一从 master、slave) Master:7007 Slave:7008
步骤一:创建7007/7008文件夹。拷贝redis.conf文件到对于的7007,7008目录下要进行修改配置文件。
[root@cent03 redis-cluster]# mkdir 7007
[root@cent03 redis-cluster]# mkdir 7008
[root@cent03 redis-cluster]# cd 7001
[root@cent03 7001]# cp redis.conf /usr/local/redis-cluster/7007/
[root@cent03 7001]# cp redis.conf /usr/local/redis-cluster/7008/
[root@cent03 7001]# vim/usr/local/redis-cluster/7007/redis.conf
修改内容如下:
port:7007
dir /usr/local/redis-cluster/7007/
cluster-config-file nodes-7007.conf
[root@cent03 7001]# vim/usr/local/redis-cluster/7008/redis.conf
修改内容如下:
port:7008
dir /usr/local/redis-cluster/7008/
cluster-config-file nodes-7008.conf
步骤二:启动7007和7008俩个服务并查看服务状态。
[root@cent03 7001]#/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7007/redis.conf
[root@cent03 7001]#/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7008/redis.conf
[root@cent03 7001]# ps -el | grep redis
2.2 学习redis-trib命令使用
[root@cent03 ~]# cd /usr/local/redis-3.0.0-rc2/src/
[root@cent03 src]# ./redis-trib.rb
Usage: redis-trib <command> <options> <arguments ...>
call host:port command arg arg .. arg
set-timeout host:port milliseconds
del-node host:port node_id
fix host:port
reshard host:port
--slots <arg>
--yes
--from <arg>
--to <arg>
help (show this help)
add-node new_host:new_port existing_host:existing_port
--slave
--master-id <arg>
check host:port
import host:port
--from <arg>
create host1:port1 ... hostN:portN
--replicas <arg>
For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.
1. create:创建一个集群环境host1:port1 ... hostN:portN(集群中的主从节点比例)
2. call:可以执行redis命令
3. add-node:将一个节点添加到集群里,第一个参数为新节点的ip:port,第二个参数为集群中任意一个已经存在的节点的ip:port
4. del-node:移除一个节点
5. reshard:重新分片
6. check:检查集群状态
3、新增一个主节点7007(master)
步骤一:使用add-node命令:绿色为新增节点,红色为已知存在节点
/usr/local/redis-3.0.0-rc2/src/redis-trib.rb add-node 192.168.2.105:7007 192.168.2.105:7001
>>> Adding node 192.168.2.105:7007 to cluster 192.168.2.105:7004
Connecting to node 192.168.2.105:7004: OK
Connecting to node 192.168.2.105:7005: OK
Connecting to node 192.168.2.105:7002: OK
Connecting to node 192.168.2.105:7006: OK
Connecting to node 192.168.2.105:7001: OK
Connecting to node 192.168.2.105:7003: OK
>>> Performing Cluster Check (using node 192.168.2.105:7004)
M: 1b362004cf174d9ecb72c0650117781618c52a70 192.168.2.105:7004
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: 987b27c96774f9c9bbbbf7bf3ccfe4e4b2e4c3e7 192.168.2.105:7005
slots: (0 slots) slave
replicates f9a0fbd03254b0010bca6782867dfa65f21a2448
M: f9a0fbd03254b0010bca6782867dfa65f21a2448 192.168.2.105:7002
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: 286b1ed602c9e74f23b8bd8d66db50308b256d3e 192.168.2.105:7006
slots: (0 slots) slave
replicates cabff9be14080ae12bfad0b199ae737639ec57bd
S: aae7ff08b8cc4bb5473044a52f926b6e82c96840 192.168.2.105:7001
slots: (0 slots) slave
replicates 1b362004cf174d9ecb72c0650117781618c52a70
M: cabff9be14080ae12bfad0b199ae737639ec57bd 192.168.2.105:7003
slots:10923-16383 (5461 slots) master
1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
Connecting to node 192.168.2.105:7007: OK
>>> Send CLUSTER MEET to node 192.168.2.105:7007 to make it join the cluster.
[OK] New node added correctly.
步骤二:查看集群状态:
/usr/local/redis/bin/redis-cli -c -h 192.168.2.105 -p 7001
192.168.2.105:7001> cluster nodes
192.168.2.105:7001> cluster nodes
aae7ff08b8cc4bb5473044a52f926b6e82c96840 192.168.2.105:7001 myself,slave 1b362004cf174d9ecb72c0650117781618c52a70 0 0 1 connected
c25aca95364e13b58e57d831126ed77656ba1d76 192.168.2.105:7007 master - 0 1477571648229 9 connected 0-65 5461-5527 10923-10988
1b362004cf174d9ecb72c0650117781618c52a70 192.168.2.105:7004 master - 0 1477571648734 8 connected 66-5460
987b27c96774f9c9bbbbf7bf3ccfe4e4b2e4c3e7 192.168.2.105:7005 slave f9a0fbd03254b0010bca6782867dfa65f21a2448 0 1477571649238 5 connected
f9a0fbd03254b0010bca6782867dfa65f21a2448 192.168.2.105:7002 master - 0 1477571649238 2 connected 5528-10922
cabff9be14080ae12bfad0b199ae737639ec57bd 192.168.2.105:7003 master - 0 1477571648229 3 connected 10989-16383
286b1ed602c9e74f23b8bd8d66db50308b256d3e 192.168.2.105:7006 slave cabff9be14080ae12bfad0b199ae737639ec57bd 0 1477571647225 6 connected
注意:当添加节点成功以后,新增的节点不会有任何数据,因为它没有分配任何的slot(hash槽)。我们需要为新节点手工分配slot。
4、为7007分配slot槽
步骤一:使用redis-trib 命令,找到集群中的任意一个主节点(红色位置表现集群中的任意一个主节点),对其进行重新分片工作。
[root@cent03 7001]#/usr/local/redis-3.0.0-rc2/src/redis-trib.rb reshard 192.168.2.105:7004
Connecting to node 192.168.2.105:7004: OK
Connecting to node 192.168.2.105:7007: OK
Connecting to node 192.168.2.105:7005: OK
Connecting to node 192.168.2.105:7002: OK
Connecting to node 192.168.2.105:7006: OK
Connecting to node 192.168.2.105:7001: OK
Connecting to node 192.168.2.105:7003: OK
>>> Performing Cluster Check (using node 192.168.2.105:7004)
M: 1b362004cf174d9ecb72c0650117781618c52a70 192.168.2.105:7004
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: c25aca95364e13b58e57d831126ed77656ba1d76 192.168.2.105:7007
slots: (0 slots) master
0 additional replica(s)
S: 987b27c96774f9c9bbbbf7bf3ccfe4e4b2e4c3e7 192.168.2.105:7005
slots: (0 slots) slave
replicates f9a0fbd03254b0010bca6782867dfa65f21a2448
M: f9a0fbd03254b0010bca6782867dfa65f21a2448 192.168.2.105:7002
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: 286b1ed602c9e74f23b8bd8d66db50308b256d3e 192.168.2.105:7006
slots: (0 slots) slave
replicates cabff9be14080ae12bfad0b199ae737639ec57bd
S: aae7ff08b8cc4bb5473044a52f926b6e82c96840 192.168.2.105:7001
slots: (0 slots) slave
replicates 1b362004cf174d9ecb72c0650117781618c52a70
M: cabff9be14080ae12bfad0b199ae737639ec57bd 192.168.2.105:7003
slots:10923-16383 (5461 slots) master
1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
(提示一)
How many slots do youwant to move (from 1 to 16384)?200
(提示二)
What is the receivingnode ID? 382634a4025778c040b7213453fd42a709f79e28
Please enter all thesource node IDs.
Type 'all' to use all the nodes as sourcenodes for the hash slots.
Type 'done' once you entered all the sourcenodes IDs.
Source node #1:all
Ready to move 200slots.
Sourcenodes:
M: 614d0def75663f2620b6402a017014b57c912dad192.168.2.105:7001
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: 8aac82b63d42a1989528cd3906579863a5774e77192.168.2.105:7002
slots:5461-10922 (5462 slots) master
1 additional replica(s)
M: 83df08875c7707878756364039df0a4c8658f272192.168.2.105:7003
slots:10923-16383 (5461 slots) master
1 additional replica(s)
Destinationnode:
M: 382634a4025778c040b7213453fd42a709f79e28192.168.2.105:7007
slots: (0 slots) master
0 additional replica(s)
Resharding plan:(分片执行计划日志)
Moving slot 5461 from8aac82b63d42a1989528cd3906579863a5774e77
...
Moving slot 0 from 614d0def75663f2620b6402a017014b57c912dad
...
Moving slot 10923 from83df08875c7707878756364039df0a4c8658f272
...
(提示三)
Do you want toproceed with the proposed reshard plan (yes/no)?yes
Moving slot 65 from 192.168.2.105:7001to 192.168.2.105:7007:
...
Moving slot 10923 from 192.168.2.105:7003to 192.168.2.105:7007:
...
Moving slot 5527 from 192.168.2.105:7002to 192.168.2.105:7007: