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. 其他
    可視化部署
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章