目錄
- 一、新增服務(wù)節(jié)點(diǎn)到集群中
- 1、創(chuàng)建配置文件
- 2、啟動(dòng)新的端口
- 3、將新增的兩個(gè)端口增加到現(xiàn)有集群中
- 4、設(shè)置從節(jié)點(diǎn)
- 5、設(shè)置主節(jié)點(diǎn)master
- 二、刪除節(jié)點(diǎn)
- 1、刪除從節(jié)點(diǎn)
- 2、刪除主節(jié)點(diǎn)
- 三、動(dòng)態(tài)擴(kuò)容內(nèi)存
- 1、動(dòng)態(tài)將7002端口內(nèi)存從5G提升至10G
一、新增服務(wù)節(jié)點(diǎn)到集群中
1、創(chuàng)建配置文件
在主機(jī)127.0.0.5上創(chuàng)建新端口的配置文件,如之前有端口直接復(fù)制之前的配置文件即可。復(fù)制完然后修改下配置文件里的端口、內(nèi)存大小、pid的路徑等。
cp redis7001.conf redis7002.conf
2、啟動(dòng)新的端口
cd ../bin/
./redis-server ../etc/redis7002.conf
該操作在127.0.0.6上同樣再操作一次。
3、將新增的兩個(gè)端口增加到現(xiàn)有集群中
./redis-cli --cluster add-node 127.0.0.3:7002 127.0.0.1:7002
./redis-cli --cluster add-node 127.0.0.4:7002 127.0.0.1:700
21430f4be50444f20854193613fe1f4346fae577 127.0.0.3:7002@17002 slave 2ef3474dcb875522cd1b03465506065de2ada8e7 0 1630463304000 18 connected
b7e55a3d3eda2777c077c606c090bcfaf6b674fd 127.0.0.1:7002@17002 master - 0 1630463306333 17 connected 0-99 200-399 600-699 800-899 5461-10922
2ef3474dcb875522cd1b03465506065de2ada8e7 127.0.0.2:7002@17002 master - 0 1630463305000 18 connected 100-199 400-599 700-799 900-999 10923-16383
4d0c6a957452191e755c1bb0856307c9da838f79 127.0.0.1:7002@17002 slave b7e55a3d3eda2777c077c606c090bcfaf6b674fd 0 1630463307336 10 connected
1f42f45cd136239d95fc15bda9938821c33138cc 127.0.0.5:7002@17002 master connected 0
3bc21c09f3318342600205b1b5e6ea129e3608f3 127.0.0.6:6002@17002 myself,master - connected 0
使用命令 cluster nodes 查看集群狀態(tài),發(fā)現(xiàn)兩個(gè)節(jié)點(diǎn)默認(rèn)均為master。這是還沒有對(duì)節(jié)點(diǎn)進(jìn)行分配的原因。
4、設(shè)置從節(jié)點(diǎn)
我們?cè)O(shè)置 127.0.0.6:7002 為從節(jié)點(diǎn),登錄該節(jié)點(diǎn)
redis-cli -c -h 192.168.8.196 -p 5008
指定5008從節(jié)點(diǎn)的主節(jié)點(diǎn)ID,這里我們填寫127.0.0.5:6002的服務(wù)節(jié)點(diǎn)ID,節(jié)點(diǎn)ID為上面查出來第一列的值
cluster replicate 1f42f45cd136239d95fc15bda9938821c33138cc
查看當(dāng)前集群節(jié)點(diǎn)信息 cluster nodes
21430f4be50444f20854193613fe1f4346fae577 127.0.0.3:7002@17002 slave 2ef3474dcb875522cd1b03465506065de2ada8e7 0 1630463304000 18 connected
b7e55a3d3eda2777c077c606c090bcfaf6b674fd 127.0.0.1:7002@17002 master - 0 1630463306333 17 connected 0-99 200-399 600-699 800-899 5461-10922
2ef3474dcb875522cd1b03465506065de2ada8e7 127.0.0.2:7002@17002 master - 0 1630463305000 18 connected 100-199 400-599 700-799 900-999 10923-16383
4d0c6a957452191e755c1bb0856307c9da838f79 127.0.0.1:7002@17002 slave b7e55a3d3eda2777c077c606c090bcfaf6b674fd 0 1630463307336 10 connected
1f42f45cd136239d95fc15bda9938821c33138cc 127.0.0.5:7002@17002 master 0 connected 0
3bc21c09f3318342600205b1b5e6ea129e3608f3 127.0.0.6:6002@17002 myself,slave 1f42f45cd136239d95fc15bda9938821c33138cc 0 1630463307336 0 connected
5、設(shè)置主節(jié)點(diǎn)master
因?yàn)樾略龉?jié)點(diǎn)時(shí)并未分配卡槽,需要我們手動(dòng)對(duì)集群進(jìn)行重新分片遷移數(shù)據(jù),需要重新分片命令 reshard
./redis-cli --cluster reshard 127.0.0.5:7002
執(zhí)行之后會(huì)出現(xiàn)下面幾個(gè)選項(xiàng)
How many slots do you want to move (from 1 to 16384)? 4096
#它提示我們需要遷移多少slot到7007上,我們平分16384個(gè)哈希槽給4個(gè)節(jié)點(diǎn):16384/4 = 4096,我們需要移動(dòng)4096個(gè)槽點(diǎn)到7007上。
#ps:這里分配可以根據(jù)你新增的節(jié)點(diǎn)內(nèi)存和已存在的節(jié)點(diǎn)進(jìn)行考慮,新增節(jié)點(diǎn)內(nèi)存大可以相對(duì)分配的多點(diǎn)
What is the receiving node ID? 63aa476d990dfa9f5f40eeeaa0315e7f9948554d
#這里添加接收節(jié)點(diǎn)的ID,我們填寫127.0.0.5:7002服務(wù)節(jié)點(diǎn)的ID
1.Please enter all the source node IDs.
2.Type ‘a(chǎn)ll' to use all the nodes as source nodes for the hash slots.
3.Type ‘done' once you entered all the source nodes IDs.
4.Source node #1:
#redis-trib 會(huì)向你詢問重新分片的源節(jié)點(diǎn)(source node),即,要從特點(diǎn)的哪個(gè)節(jié)點(diǎn)中取出 4096 個(gè)哈希槽,還是從全部節(jié)點(diǎn)提取4096個(gè)哈希槽, 并將這些槽移動(dòng)到7007節(jié)點(diǎn)上面。
#如果我們不打算從特定的節(jié)點(diǎn)上取出指定數(shù)量的哈希槽,那么可以向redis-trib輸入 all,這樣的話, 集群中的所有主節(jié)點(diǎn)都會(huì)成為源節(jié)點(diǎn),redis-trib從各個(gè)源節(jié)點(diǎn)中各取出一部分哈希槽,湊夠4096個(gè),然后移動(dòng)到7007節(jié)點(diǎn)上:
1.Source node #1:all
然后開始從別的主節(jié)點(diǎn)遷移哈希槽,并且確認(rèn)。
....省略分配內(nèi)容
1.Do you want to proceed with the proposed reshard plan (yes/no)? yes
#注意這里一定要輸入yes,輸入Y或者其他會(huì)終止操作。
#確認(rèn)之后,redis-trib就開始執(zhí)行分片操作,將哈希槽一個(gè)一個(gè)從源主節(jié)點(diǎn)移動(dòng)到127.0.0.5:7002目標(biāo)主節(jié)點(diǎn)。
重新分片結(jié)束后我們可以check以下節(jié)點(diǎn)的分配情況。
./redis-trib.rb check 127.0.0.1:7001
...省略節(jié)點(diǎn)內(nèi)容
#可以看到7007節(jié)點(diǎn)分片的哈希槽片不是連續(xù)的,間隔的移動(dòng)。
至此主節(jié)點(diǎn)就添加完畢了
二、刪除節(jié)點(diǎn)
1、刪除從節(jié)點(diǎn)
先登錄 127.0.0.5:7002 節(jié)點(diǎn),使用 cluster nodes 查看集群節(jié)點(diǎn)信息。
21430f4be50444f20854193613fe1f4346fae577 127.0.0.3:7002@17002 slave 2ef3474dcb875522cd1b03465506065de2ada8e7 0 1630463304000 18 connected
b7e55a3d3eda2777c077c606c090bcfaf6b674fd 127.0.0.1:7002@17002 master - 0 1630463306333 17 connected 0-99 200-399 600-699 800-899 5461-10922
2ef3474dcb875522cd1b03465506065de2ada8e7 127.0.0.2:7002@17002 master - 0 1630463305000 18 connected 100-199 400-599 700-799 900-999 10923-16383
4d0c6a957452191e755c1bb0856307c9da838f79 127.0.0.1:7002@17002 slave b7e55a3d3eda2777c077c606c090bcfaf6b674fd 0 1630463307336 10 connected
1f42f45cd136239d95fc15bda9938821c33138cc 127.0.0.5:7002@17002 myself,master - 0 1630463305000 18 connected 100-199 400-599 700-799 900-999 10923-16383
3bc21c09f3318342600205b1b5e6ea129e3608f3 127.0.0.6:6002@17002 slave 1f42f45cd136239d95fc15bda9938821c33138cc 0 1630463307336 0 connected
將127.0.0.6:7002的節(jié)點(diǎn)ID記錄下來(3bc21c09f3318342600205b1b5e6ea129e3608f3)
執(zhí)行下面命令
./redis-cli --cluster del-node 127.0.0.6 3bc21c09f3318342600205b1b5e6ea129e3608f3
出現(xiàn)以上信息代表刪除成功。
2、刪除主節(jié)點(diǎn)
因?yàn)橹鞴?jié)點(diǎn)分配了 slot槽, 所以這里我們必須先把 7002的slot槽放到其他的可用節(jié)點(diǎn)中去,然后再進(jìn)行移除節(jié)點(diǎn)操作才行,不然會(huì)出現(xiàn)數(shù)據(jù)丟失問題。
(1)先把數(shù)據(jù)遷移到其他主節(jié)點(diǎn)中。
./redis-cli --cluster reshard 127.0.0.5:7002
可以看到127.0.0.5:7002中有4461個(gè)slot槽,如果想要平均分配,就需要根據(jù)現(xiàn)有多少master主節(jié)點(diǎn)進(jìn)行平均,然后重復(fù)執(zhí)行以上命令。我下面操作是直接將所有slot槽分配到一個(gè)節(jié)點(diǎn)上。
1、How many slots do you want to move (from 1 to 16384)? 4461
2、What is the receiving node ID? b7e55a3d3eda2777c077c606c090bcfaf6b674fd
#這一步是問要將這些slot槽分配到哪個(gè)節(jié)點(diǎn)上,我分配到了127.0.0.1:7002上,所以填寫它的ID
3、Please enter all the source node IDs.
3.1、Type 'all' to use all the nodes as source nodes for the hash slots.
3.2、Type 'done' once you entered all the source nodes IDs.
3.3、Source node #1:
#這里需要數(shù)據(jù)源,其實(shí)就是 127.0.0.5:7002 節(jié)點(diǎn)的ID,因?yàn)槟闶前?7002 節(jié)點(diǎn)的數(shù)據(jù)放到其它地方去, 輸入 7002 的ID
#回車之后會(huì)出現(xiàn)再次輸入id
#其實(shí)是讓你還可以選擇源節(jié)點(diǎn),但是我這里只要把 7002 節(jié)點(diǎn)分到其它地方就行,如果沒有再把其它主節(jié)點(diǎn)分?jǐn)偟男枰?,此處輸?done即可,否則輸入其它節(jié)點(diǎn)的ID,最后輸入 done
4.Do you want to proceed with the proposed reshard plan (yes/no)? yes
#注意這里一定要輸入yes,輸入Y或者其他會(huì)終止操作。
#這里就分配完slot槽了
執(zhí)行完成之后,輸入 cluster nodes 查看節(jié)點(diǎn)信息
可以看到 7002 已經(jīng)沒有槽分配了
接下來就可以按照刪除從節(jié)點(diǎn)的方法刪除主節(jié)點(diǎn)了。
./redis-cli --cluster del-node 127.0.0.6 主節(jié)點(diǎn)ID
再次查看集群信息,發(fā)現(xiàn)主節(jié)點(diǎn)也刪掉了。
三、動(dòng)態(tài)擴(kuò)容內(nèi)存
在業(yè)務(wù)運(yùn)行時(shí),redis內(nèi)存不夠了怎么辦,無非兩種辦法,要么刪除無用的key,要么就是增加節(jié)點(diǎn)內(nèi)存,當(dāng)刪除key之后還是無法滿足需求,就只能增加內(nèi)存。redis提供了不停服務(wù)增加內(nèi)存的命令 CONFIG SET parameter value
1、CONFIG SET 命令可以動(dòng)態(tài)地調(diào)整 Redis 服務(wù)器的配置(configuration)而無須重啟。
2、你可以使用它修改配置參數(shù),或者改變 Redis 的持久化(Persistence)方式。
3、CONFIG SET 可以修改的配置參數(shù)可以使用命令 CONFIG GET * 來列出,所有被 CONFIG SET 修改的配置參數(shù)都會(huì)立即生效。
1、動(dòng)態(tài)將7002端口內(nèi)存從5G提升至10G
1、先獲取當(dāng)前最大內(nèi)存
redis 127.0.0.1:7002> config get maxmemory
1) "maxmemory"
2) "5000000000"
2、設(shè)置新的最大內(nèi)存
redis 127.0.0.1:6379> config set maxmemory 10G
OK
#其實(shí)set 10G是不規(guī)范的,最好的是換算下填寫10737418240
3、查看修改后的值
redis 127.0.0.1:6379> CONFIG GET maxmemory
1) "maxmemory"
2) "10000000000"
附:可以動(dòng)態(tài)設(shè)置的值
127.0.0.1:6379> CONFIG GET *
1) "dbfilename"
2) "dump.rdb"
3) "requirepass"
4) "123456"
5) "masterauth"
6) ""
7) "unixsocket"
8) ""
9) "logfile"
10) "/diskc/redis-2.8.19/log/6379_slave.log"
11) "pidfile"
12) "/var/run/redis.pid"
13) "maxmemory"
14) "10000000000"
15) "maxmemory-samples"
16) "3"
17) "timeout"
18) "0"
19) "tcp-keepalive"
20) "0"
21) "auto-aof-rewrite-percentage"
22) "100"
23) "auto-aof-rewrite-min-size"
24) "67108864"
25) "hash-max-ziplist-entries"
26) "512"
27) "hash-max-ziplist-value"
28) "64"
29) "list-max-ziplist-entries"
30) "512"
31) "list-max-ziplist-value"
32) "64"
33) "set-max-intset-entries"
34) "512"
35) "zset-max-ziplist-entries"
36) "128"
37) "zset-max-ziplist-value"
38) "64"
39) "hll-sparse-max-bytes"
40) "3000"
41) "lua-time-limit"
42) "5000"
43) "slowlog-log-slower-than"
44) "100000"
45) "latency-monitor-threshold"
46) "0"
47) "slowlog-max-len"
48) "128"
49) "port"
50) "6379"
51) "tcp-backlog"
52) "511"
53) "databases"
54) "16"
55) "repl-ping-slave-period"
56) "10"
57) "repl-timeout"
58) "60"
59) "repl-backlog-size"
60) "1048576"
61) "repl-backlog-ttl"
62) "3600"
63) "maxclients"
64) "15000"
65) "watchdog-period"
66) "200"
67) "slave-priority"
68) "100"
69) "min-slaves-to-write"
70) "0"
71) "min-slaves-max-lag"
72) "10"
73) "hz"
74) "10"
75) "repl-diskless-sync-delay"
76) "5"
77) "no-appendfsync-on-rewrite"
78) "no"
79) "slave-serve-stale-data"
80) "yes"
81) "slave-read-only"
82) "yes"
83) "stop-writes-on-bgsave-error"
84) "yes"
85) "daemonize"
86) "yes"
87) "rdbcompression"
88) "yes"
89) "rdbchecksum"
90) "yes"
91) "activerehashing"
92) "yes"
93) "repl-disable-tcp-nodelay"
94) "no"
95) "repl-diskless-sync"
96) "no"
97) "aof-rewrite-incremental-fsync"
98) "yes"
99) "aof-load-truncated"
100) "yes"
101) "appendonly"
102) "no"
103) "dir"
104) "/diskc/redis-2.8.19"
105) "maxmemory-policy"
106) "volatile-lru"
107) "appendfsync"
108) "everysec"
109) "save"
110) "900 1 300 10 60 10000"
111) "loglevel"
112) "notice"
113) "client-output-buffer-limit"
114) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"
115) "unixsocketperm"
116) "0"
117) "slaveof"
118) ""
119) "notify-keyspace-events"
120) ""
121) "bind"
122) ""
到此這篇關(guān)于Redis集群新增、刪除節(jié)點(diǎn)以及動(dòng)態(tài)增加內(nèi)存的方法的文章就介紹到這了,更多相關(guān)Redis集群新增刪除節(jié)點(diǎn)及動(dòng)態(tài)增加內(nèi)存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Redis有序集合類型的操作_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- Redis集群增加節(jié)點(diǎn)與刪除節(jié)點(diǎn)的方法詳解
- redis事務(wù)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- redis與memcached的區(qū)別_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- 了解redis中RDB結(jié)構(gòu)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理