原生安裝
通過原生安裝雖然步驟繁瑣但可以 達到理解架構的目的,下面將先簡要的說明下安裝的四個步驟:
- 配置開啓節點
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
- 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
- 指派槽
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}
- 設置主從
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對比
- 原生命令安裝
理解Redis Cluster架構。
生產環境不使用。 - 官方工具安裝
高效、準確。
生產環境可以使用。 - 其他
可視化部署