濮阳杆衣贸易有限公司

主頁 > 知識庫 > Redis集群新增、刪除節(jié)點以及動態(tài)增加內存的方法

Redis集群新增、刪除節(jié)點以及動態(tài)增加內存的方法

熱門標簽:十堰營銷電銷機器人哪家便宜 日本中國地圖標注 魔獸2青云地圖標注 山東外呼銷售系統(tǒng)招商 鄭州人工智能電銷機器人系統(tǒng) 宿遷便宜外呼系統(tǒng)平臺 貴州電銷卡外呼系統(tǒng) 超呼電話機器人 北京400電話辦理收費標準

一、新增服務節(jié)點到集群中

1、創(chuàng)建配置文件

在主機127.0.0.5上創(chuàng)建新端口的配置文件,如之前有端口直接復制之前的配置文件即可。復制完然后修改下配置文件里的端口、內存大小、pid的路徑等。

cp redis7001.conf redis7002.conf

2、啟動新的端口

cd ../bin/
./redis-server ../etc/redis7002.conf

 

該操作在127.0.0.6上同樣再操作一次。

3、將新增的兩個端口增加到現(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)兩個節(jié)點默認均為master。這是還沒有對節(jié)點進行分配的原因。

4、設置從節(jié)點

我們設置 127.0.0.6:7002 為從節(jié)點,登錄該節(jié)點

redis-cli -c -h 192.168.8.196 -p 5008

指定5008從節(jié)點的主節(jié)點ID,這里我們填寫127.0.0.5:6002的服務節(jié)點ID,節(jié)點ID為上面查出來第一列的值

cluster replicate 1f42f45cd136239d95fc15bda9938821c33138cc

查看當前集群節(jié)點信息 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、設置主節(jié)點master

因為新增節(jié)點時并未分配卡槽,需要我們手動對集群進行重新分片遷移數(shù)據(jù),需要重新分片命令 reshard

./redis-cli --cluster reshard 127.0.0.5:7002

執(zhí)行之后會出現(xiàn)下面幾個選項

How many slots do you want to move (from 1 to 16384)? 4096

#它提示我們需要遷移多少slot到7007上,我們平分16384個哈希槽給4個節(jié)點:16384/4 = 4096,我們需要移動4096個槽點到7007上。
#ps:這里分配可以根據(jù)你新增的節(jié)點內存和已存在的節(jié)點進行考慮,新增節(jié)點內存大可以相對分配的多點

What is the receiving node ID? 63aa476d990dfa9f5f40eeeaa0315e7f9948554d
#這里添加接收節(jié)點的ID,我們填寫127.0.0.5:7002服務節(jié)點的ID
1.Please enter all the source node IDs.
2.Type ‘all' 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 會向你詢問重新分片的源節(jié)點(source node),即,要從特點的哪個節(jié)點中取出 4096 個哈希槽,還是從全部節(jié)點提取4096個哈希槽, 并將這些槽移動到7007節(jié)點上面。
#如果我們不打算從特定的節(jié)點上取出指定數(shù)量的哈希槽,那么可以向redis-trib輸入 all,這樣的話, 集群中的所有主節(jié)點都會成為源節(jié)點,redis-trib從各個源節(jié)點中各取出一部分哈希槽,湊夠4096個,然后移動到7007節(jié)點上:
1.Source node #1:all  
然后開始從別的主節(jié)點遷移哈希槽,并且確認。
....省略分配內容
1.Do you want to proceed with the proposed reshard plan (yes/no)? yes 
#注意這里一定要輸入yes,輸入Y或者其他會終止操作。 
#確認之后,redis-trib就開始執(zhí)行分片操作,將哈希槽一個一個從源主節(jié)點移動到127.0.0.5:7002目標主節(jié)點。

重新分片結束后我們可以check以下節(jié)點的分配情況。

./redis-trib.rb check 127.0.0.1:7001
...省略節(jié)點內容
#可以看到7007節(jié)點分片的哈希槽片不是連續(xù)的,間隔的移動。

至此主節(jié)點就添加完畢了

二、刪除節(jié)點

1、刪除從節(jié)點

先登錄 127.0.0.5:7002 節(jié)點,使用 cluster nodes 查看集群節(jié)點信息。

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é)點ID記錄下來(3bc21c09f3318342600205b1b5e6ea129e3608f3)

執(zhí)行下面命令

./redis-cli --cluster del-node 127.0.0.6 3bc21c09f3318342600205b1b5e6ea129e3608f3

出現(xiàn)以上信息代表刪除成功。

2、刪除主節(jié)點

因為主節(jié)點分配了 slot槽, 所以這里我們必須先把 7002的slot槽放到其他的可用節(jié)點中去,然后再進行移除節(jié)點操作才行,不然會出現(xiàn)數(shù)據(jù)丟失問題。

(1)先把數(shù)據(jù)遷移到其他主節(jié)點中。

./redis-cli --cluster reshard 127.0.0.5:7002

可以看到127.0.0.5:7002中有4461個slot槽,如果想要平均分配,就需要根據(jù)現(xiàn)有多少master主節(jié)點進行平均,然后重復執(zhí)行以上命令。我下面操作是直接將所有slot槽分配到一個節(jié)點上。

1、How many slots do you want to move (from 1 to 16384)? 4461
2、What is the receiving node ID? b7e55a3d3eda2777c077c606c090bcfaf6b674fd
#這一步是問要將這些slot槽分配到哪個節(jié)點上,我分配到了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ù)源,其實就是 127.0.0.5:7002 節(jié)點的ID,因為你是把 7002 節(jié)點的數(shù)據(jù)放到其它地方去, 輸入 7002 的ID
#回車之后會出現(xiàn)再次輸入id
#其實是讓你還可以選擇源節(jié)點,但是我這里只要把 7002 節(jié)點分到其它地方就行,如果沒有再把其它主節(jié)點分攤的需要,此處輸入 done即可,否則輸入其它節(jié)點的ID,最后輸入 done
4.Do you want to proceed with the proposed reshard plan (yes/no)? yes 
#注意這里一定要輸入yes,輸入Y或者其他會終止操作。 
#這里就分配完slot槽了

執(zhí)行完成之后,輸入 cluster nodes 查看節(jié)點信息
可以看到 7002 已經沒有槽分配了
接下來就可以按照刪除從節(jié)點的方法刪除主節(jié)點了。

./redis-cli --cluster del-node 127.0.0.6 主節(jié)點ID

再次查看集群信息,發(fā)現(xiàn)主節(jié)點也刪掉了。

三、動態(tài)擴容內存

在業(yè)務運行時,redis內存不夠了怎么辦,無非兩種辦法,要么刪除無用的key,要么就是增加節(jié)點內存,當刪除key之后還是無法滿足需求,就只能增加內存。redis提供了不停服務增加內存的命令 CONFIG SET parameter value
1、CONFIG SET 命令可以動態(tài)地調整 Redis 服務器的配置(configuration)而無須重啟。
2、你可以使用它修改配置參數(shù),或者改變 Redis 的持久化(Persistence)方式。
3、CONFIG SET 可以修改的配置參數(shù)可以使用命令 CONFIG GET * 來列出,所有被 CONFIG SET 修改的配置參數(shù)都會立即生效。

1、動態(tài)將7002端口內存從5G提升至10G

1、先獲取當前最大內存

redis 127.0.0.1:7002> config get maxmemory
1) "maxmemory"
2) "5000000000"

2、設置新的最大內存

redis 127.0.0.1:6379> config set maxmemory 10G
OK
#其實set 10G是不規(guī)范的,最好的是換算下填寫10737418240

3、查看修改后的值

redis 127.0.0.1:6379> CONFIG GET maxmemory
1) "maxmemory"
2) "10000000000"

附:可以動態(tài)設置的值

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) ""

 到此這篇關于Redis集群新增、刪除節(jié)點以及動態(tài)增加內存的方法的文章就介紹到這了,更多相關Redis集群新增刪除節(jié)點及動態(tài)增加內存內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Redis有序集合類型的操作_動力節(jié)點Java學院整理
  • Redis集群增加節(jié)點與刪除節(jié)點的方法詳解
  • redis事務_動力節(jié)點Java學院整理
  • redis與memcached的區(qū)別_動力節(jié)點Java學院整理
  • 了解redis中RDB結構_動力節(jié)點Java學院整理

標簽:北京 臺州 江蘇 果洛 吉安 朝陽 楊凌 大慶

巨人網(wǎng)絡通訊聲明:本文標題《Redis集群新增、刪除節(jié)點以及動態(tài)增加內存的方法》,本文關鍵詞  Redis,集群,新增,刪除,節(jié)點,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Redis集群新增、刪除節(jié)點以及動態(tài)增加內存的方法》相關的同類信息!
  • 本頁收集關于Redis集群新增、刪除節(jié)點以及動態(tài)增加內存的方法的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    方山县| 班玛县| 忻城县| 随州市| 五华县| 时尚| 兰考县| 通山县| 汉沽区| 上思县| 家居| 若羌县| 定远县| 长汀县| 长武县| 营口市| 贵定县| 深水埗区| 建始县| 白河县| 庆元县| 孟州市| 林芝县| 大洼县| 渭南市| 宁夏| 务川| 讷河市| 盈江县| 固安县| 花莲县| 株洲市| 崇阳县| 崇信县| 山阴县| 西乌| 峨眉山市| 龙游县| 桃源县| 曲靖市| 民勤县|