Redis笔记(四)实验部分:redisCluster的原生安装与官方工具安装

原生安装

通过原生安装虽然步骤繁琐但可以 达到理解架构的目的,下面将先简要的说明下安装的四个步骤:

  1. 配置开启节点
cluster-enabled yes  
cluster-config-file nodes-${port}.conf

使用六个配置启动:
redis-server redis-7000.conf
redis-server redis-7001.conf
redis-server redis-7002.conf
redis-server redis-7003.conf
redis-server redis-7004.conf
redis-server redis-7005.conf

  1. meet
    使用命令来连接两个节点 cluster meet ip port
redis-cli-h 127.0.0.1 -p 7000 cluster meet 127.0.0.17001
redis-cli-h 127.0.0.1 -p 7000 cluster meet 127.0.0.17002
redis-cli-h 127.0.0.1 -p 7000 cluster meet 127.0.0.17003
redis-cli-h 127.0.0.1-p 7000 cluster meet 127.0.0.17004
redis-cli-h 127.0.0.1 -p 7000 cluster meet 127.0.0.17005
  1. 指派槽
cluster addslots slot[slot.…]

将16384个节点进行分配:

redis-cli-h 127.0.0.1 -p 7000 cluster addslots{0..5461}
redis-cli-h 127.0.0.1 -p 7001 cluster addslots{5462...10922}
redis-cli-h 127.0.0.1 -p 7002 cluster addslots{10923..16383}
  1. 设置主从
cluster replicate node-id
redis-cli-h 127.0.0.1 -p 7003 cluster replicate  ${node-id-7000}
redis-cli-h 127.0.0.1 -p 7004 cluster replicate  ${node-id-7001}
redis-cli-h 127.0.0.1 -p  7005 cluster replicate  ${node-id-7002}

下面将开始进行安装:

原生安装-1.准备节点

vim redis-7000.conf
port 7000
daemonize yes 
dir "/opt/soft/redis/data"
logfile "7000.1og"
dbfilename "dump-7000.rdb"
cluster-enabled yes 
cluster-config-file nodes-7000.conf 
cluster-require-full-coverage no

其中最后一行表示不需要 所有节点都上线集群也能正常提供服务

sed 's/7000/7001/g' redis-7000.conf > redis-7001.conf
sed 's/7000/7002/g' redis-7000.conf > redis-7002.conf
sed 's/7000/7003/g' redis-7000.conf > redis-7003.conf
sed 's/7000/7004/g' redis-7000.conf > redis-7004.conf
sed 's/7000/7005/g' redis-7000.conf > redis-7005.conf

启动:

 redis-server redis-7000.conf
 redis-server redis-7001.conf
 redis-server redis-7002.conf
 redis-server redis-7003.conf
 redis-server redis-7004.conf
 redis-server redis-7005.conf

查看进程:

[root@rocketmq-nameserver1 config-cluster]#  ps -ef | grep redis
root      42122      1  0 22:34 ?        00:00:00 redis-server *:7000 [cluster]
root      42138      1  0 22:34 ?        00:00:00 redis-server *:7001 [cluster]
root      42144      1  0 22:34 ?        00:00:00 redis-server *:7002 [cluster]
root      42151      1  0 22:34 ?        00:00:00 redis-server *:7003 [cluster]
root      42176      1  0 22:34 ?        00:00:00 redis-server *:7004 [cluster]
root      42182      1  0 22:34 ?        00:00:00 redis-server *:7005 [cluster]
root      42361  25387  0 22:36 pts/1    00:00:00 grep --color=auto redis

可以看到后面多了个 cluster 表示以集群方式启动

原生安装-2.节点握手

让7000 和 70001握手 并查看状态

redis-cli -p 7000 cluster meet 192.168.5.129 7001
[zookeeper@rocketmq-nameserver1 ~]$ redis-cli -p 7000 cluster nodes
de9e56bf4568052131c1f82748d534fc3227d2f4 192.168.5.129:7001 master - 0 1593693527519 0 connected
9a5befc01fb662838dae3fa950eee7ed5685410e 192.168.5.129:7000 myself,master - 0 0 1 connected

继续和其它节点握手

 redis-cli -p 7000 cluster meet 192.168.5.129 7002
 redis-cli -p 7000 cluster meet 192.168.5.129 7003
 redis-cli -p 7000 cluster meet 192.168.5.129 7004
 redis-cli -p 7000 cluster meet 192.168.5.129 7005

可以查看任意一个节点 回发现六个节点之间都已经meet
在这里插入图片描述

原生安装-3.分配槽

编写一个脚本进行分配槽

mkdir script
cd script
vim addslots.sh
start=$1
end=$2
port=$3
for slot in `seq ${start} ${end}`
do
   echo "slot:${slot}"
   redis-cli -p ${port} cluster addslots ${slot}
done

执行脚本

sh addslots.sh 0 5461 7000

查看是否成功

[root@rocketmq-nameserver1 script]#  redis-cli -p 7000 cluster info
cluster_state:ok
cluster_slots_assigned:5462
cluster_slots_ok:5462
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:1
cluster_current_epoch:5
cluster_my_epoch:1
cluster_stats_messages_sent:11890
cluster_stats_messages_received:11890

[root@rocketmq-nameserver1 script]# redis-cli -p 7000 cluster nodes
edfb21813a07e8c299a5275b22e7bc5657e74d82 192.168.5.129:7005 master - 0 1593699382606 0 connected
9a5befc01fb662838dae3fa950eee7ed5685410e 192.168.5.129:7000 myself,master - 0 0 1 connected 0-5461
9c9acb49bdf52002114871d7922837e67cd0a2e7 192.168.5.129:7003 master - 0 1593699385869 3 connected
de9e56bf4568052131c1f82748d534fc3227d2f4 192.168.5.129:7001 master - 0 1593699383695 2 connected
ba837b339958ba25a0b77629213cb2235780ca9b 192.168.5.129:7004 master - 0 1593699384788 4 connected
e3321db7f53e2d526561832bb27c76b7cbf7b9f9 192.168.5.129:7002 master - 0 1593699382606 5 connected
[root@rocketmq-nameserver1 script]# redis-cli -p 7000 cluster nodes
edfb21813a07e8c299a5275b22e7bc5657e74d82 192.168.5.129:7005 master - 0 1593699413100 0 connected
9a5befc01fb662838dae3fa950eee7ed5685410e 192.168.5.129:7000 myself,master - 0 0 1 connected 0-5461
9c9acb49bdf52002114871d7922837e67cd0a2e7 192.168.5.129:7003 master - 0 1593699415113 3 connected
de9e56bf4568052131c1f82748d534fc3227d2f4 192.168.5.129:7001 master - 0 1593699417129 2 connected
ba837b339958ba25a0b77629213cb2235780ca9b 192.168.5.129:7004 master - 0 1593699416123 4 connected
e3321db7f53e2d526561832bb27c76b7cbf7b9f9 192.168.5.129:7002 master - 0 1593699414108 5 connected
[root@rocketmq-nameserver1 script]# 

给7001 和7002 也分配槽

sh addslots.sh 5462 10922 7001
sh addslots.sh 10923 16383 7002

查看集群信息

redis-cli -p 7000 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:5
cluster_my_epoch:1
cluster_stats_messages_sent:12585
cluster_stats_messages_received:12585

原生安装-4.分配主从

先查看各个节点的状态:

# redis-cli -p 7000 cluster nodes
edfb21813a07e8c299a5275b22e7bc5657e74d82 192.168.5.129:7005 master - 0 1593700133805 0 connected
9a5befc01fb662838dae3fa950eee7ed5685410e 192.168.5.129:7000 myself,master - 0 0 1 connected 0-5461
9c9acb49bdf52002114871d7922837e67cd0a2e7 192.168.5.129:7003 master - 0 1593700131627 3 connected
de9e56bf4568052131c1f82748d534fc3227d2f4 192.168.5.129:7001 master - 0 1593700132719 2 connected 5462-10922
ba837b339958ba25a0b77629213cb2235780ca9b 192.168.5.129:7004 master - 0 1593700134895 4 connected
e3321db7f53e2d526561832bb27c76b7cbf7b9f9 192.168.5.129:7002 master - 0 1593700130536 5 connected 10923-16383

下面分别将 7003 配置为 7000的从节点
7004 配置为 7001的从节点
7005 配置为 7002的从节点

注意后面的参数就是 上面查询到的节点的id

redis-cli -p 7003 cluster replicate 9a5befc01fb662838dae3fa950eee7ed5685410e 
redis-cli -p 7004 cluster replicate de9e56bf4568052131c1f82748d534fc3227d2f4
redis-cli -p 7005 cluster replicate e3321db7f53e2d526561832bb27c76b7cbf7b9f9

再次查看节点关系

[root@rocketmq-nameserver1 script]# redis-cli -p 7000 cluster nodes
edfb21813a07e8c299a5275b22e7bc5657e74d82 192.168.5.129:7005 slave e3321db7f53e2d526561832bb27c76b7cbf7b9f9 0 1593700774330 5 connected
9a5befc01fb662838dae3fa950eee7ed5685410e 192.168.5.129:7000 myself,master - 0 0 1 connected 0-5461
9c9acb49bdf52002114871d7922837e67cd0a2e7 192.168.5.129:7003 slave 9a5befc01fb662838dae3fa950eee7ed5685410e 0 1593700770309 3 connected
de9e56bf4568052131c1f82748d534fc3227d2f4 192.168.5.129:7001 master - 0 1593700773324 2 connected 5462-10922
ba837b339958ba25a0b77629213cb2235780ca9b 192.168.5.129:7004 slave de9e56bf4568052131c1f82748d534fc3227d2f4 0 1593700769302 4 connected
e3321db7f53e2d526561832bb27c76b7cbf7b9f9 192.168.5.129:7002 master - 0 1593700772319 5 connected 10923-16383

也可以槽的形式查看

[root@rocketmq-nameserver1 script]# redis-cli -p 7000 cluster slots
1) 1) (integer) 0
   2) (integer) 5461
   3) 1) "192.168.5.129"
      2) (integer) 7000
   4) 1) "192.168.5.129"
      2) (integer) 7003
2) 1) (integer) 5462
   2) (integer) 10922
   3) 1) "192.168.5.129"
      2) (integer) 7001
   4) 1) "192.168.5.129"
      2) (integer) 7004
3) 1) (integer) 10923
   2) (integer) 16383
   3) 1) "192.168.5.129"
      2) (integer) 7002
   4) 1) "192.168.5.129"
      2) (integer) 7005

官方工具安装

ruby环境准备-说明

ruby环境准备-操作

redis-trib构建集群

该部分内容可以参考:
搭建一个Redis集群并整合Spring Boot

原生命令和redis-trib.rb对比

  1. 原生命令安装
    理解Redis Cluster架构。
    生产环境不使用。
  2. 官方工具安装
    高效、准确。
    生产环境可以使用。
  3. 其他
    可视化部署
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章