请选择 进入手机版 | 继续访问电脑版

[Redis] Redis集群新增、删除节点以及动态增长 内存的方法

[复制链接]
查看73 | 回复8 | 2021-9-14 01:51:57 | 显示全部楼层 |阅读模式
目次

一、新增服务节点到集群中

1、创建设置 文件

在主机127.0.0.5上创建新端口的设置 文件,如之前有端口直接复制之前的设置 文件即可。复制完然后修改下设置 文件里的端口、内存大小、pid的路径等。

  1. cp redis7001.conf redis7002.conf
复制代码

Redis集群新增、删除节点以及动态增长
内存的方法

2、启动新的端口

  1. cd ../bin/
  2. ./redis-server ../etc/redis7002.conf
复制代码

 

Redis集群新增、删除节点以及动态增长
内存的方法

该操作在127.0.0.6上同样再操作一次。

3、将新增的两个端口增长 到现有集群中

  1. ./redis-cli --cluster add-node 127.0.0.3:7002 127.0.0.1:7002
  2. ./redis-cli --cluster add-node 127.0.0.4:7002 127.0.0.1:700
复制代码
  1. 21430f4be50444f20854193613fe1f4346fae577 127.0.0.3:7002@17002 slave 2ef3474dcb875522cd1b03465506065de2ada8e7 0 1630463304000 18 connected
  2. b7e55a3d3eda2777c077c606c090bcfaf6b674fd 127.0.0.1:7002@17002 master - 0 1630463306333 17 connected 0-99 200-399 600-699 800-899 5461-10922
  3. 2ef3474dcb875522cd1b03465506065de2ada8e7 127.0.0.2:7002@17002 master - 0 1630463305000 18 connected 100-199 400-599 700-799 900-999 10923-16383
  4. 4d0c6a957452191e755c1bb0856307c9da838f79 127.0.0.1:7002@17002 slave b7e55a3d3eda2777c077c606c090bcfaf6b674fd 0 1630463307336 10 connected
  5. 1f42f45cd136239d95fc15bda9938821c33138cc 127.0.0.5:7002@17002 master  connected 0
  6. 3bc21c09f3318342600205b1b5e6ea129e3608f3 127.0.0.6:6002@17002 myself,master - connected 0
复制代码

利用 下令 cluster nodes 查看集群状态,发现两个节点默认均为master。这是还没有对节点举行 分配的缘故因由 。

4、设置从节点

我们设置 127.0.0.6:7002 为从节点,登录该节点

  1. redis-cli -c -h 192.168.8.196 -p 5008
复制代码

指定5008从节点的主节点ID,这里我们填写127.0.0.5:6002的服务节点ID,节点ID为上面查出来第一列的值

  1. cluster replicate 1f42f45cd136239d95fc15bda9938821c33138cc
复制代码

查看当前集群节点信息 cluster nodes

  1. 21430f4be50444f20854193613fe1f4346fae577 127.0.0.3:7002@17002 slave 2ef3474dcb875522cd1b03465506065de2ada8e7 0 1630463304000 18 connected
  2. b7e55a3d3eda2777c077c606c090bcfaf6b674fd 127.0.0.1:7002@17002 master - 0 1630463306333 17 connected 0-99 200-399 600-699 800-899 5461-10922
  3. 2ef3474dcb875522cd1b03465506065de2ada8e7 127.0.0.2:7002@17002 master - 0 1630463305000 18 connected 100-199 400-599 700-799 900-999 10923-16383
  4. 4d0c6a957452191e755c1bb0856307c9da838f79 127.0.0.1:7002@17002 slave b7e55a3d3eda2777c077c606c090bcfaf6b674fd 0 1630463307336 10 connected
  5. 1f42f45cd136239d95fc15bda9938821c33138cc 127.0.0.5:7002@17002 master 0 connected 0
  6. 3bc21c09f3318342600205b1b5e6ea129e3608f3 127.0.0.6:6002@17002 myself,slave 1f42f45cd136239d95fc15bda9938821c33138cc  0 1630463307336 0 connected
复制代码

5、设置主节点master

由于 新增节点时并未分配卡槽,必要 我们手动对集群举行 重新分片迁徙 数据,必要 重新分片下令 reshard

  1. ./redis-cli --cluster reshard 127.0.0.5:7002
复制代码

实行 之后会出现下面几个选项

  1. How many slots do you want to move (from 1 to 16384)? 4096
  2. #它提示我们需要迁移多少slot到7007上,我们平分16384个哈希槽给4个节点:16384/4 = 4096,我们需要移动4096个槽点到7007上。
  3. #ps:这里分配可以根据你新增的节点内存和已存在的节点进行考虑,新增节点内存大可以相对分配的多点
  4. What is the receiving node ID? 63aa476d990dfa9f5f40eeeaa0315e7f9948554d
  5. #这里添加接收节点的ID,我们填写127.0.0.5:7002服务节点的ID
  6. 1.Please enter all the source node IDs.
  7. 2.Type ‘all' to use all the nodes as source nodes for the hash slots.
  8. 3.Type ‘done' once you entered all the source nodes IDs.
  9. 4.Source node #1:
  10. #redis-trib 会向你询问重新分片的源节点(source node),即,要从特点的哪个节点中取出 4096 个哈希槽,还是从全部节点提取4096个哈希槽, 并将这些槽移动到7007节点上面。
  11. #如果我们不打算从特定的节点上取出指定数量的哈希槽,那么可以向redis-trib输入 all,这样的话, 集群中的所有主节点都会成为源节点,redis-trib从各个源节点中各取出一部分哈希槽,凑够4096个,然后移动到7007节点上:
  12. 1.Source node #1:all
  13. 然后开始从别的主节点迁移哈希槽,并且确认。
  14. ....省略分配内容
  15. 1.Do you want to proceed with the proposed reshard plan (yes/no)? yes
  16. #注意这里一定要输入yes,输入Y或者其他会终止操作。
  17. #确认之后,redis-trib就开始执行分片操作,将哈希槽一个一个从源主节点移动到127.0.0.5:7002目标主节点。
复制代码

重新分片竣事 后我们可以check以下节点的分配环境 。

  1. ./redis-trib.rb check 127.0.0.1:7001
  2. ...省略节点内容
  3. #可以看到7007节点分片的哈希槽片不是连续的,间隔的移动。
复制代码

至此主节点就添加完毕了

二、删除节点

1、删除从节点

先登录 127.0.0.5:7002 节点,利用 cluster nodes 查看集群节点信息。

  1. 21430f4be50444f20854193613fe1f4346fae577 127.0.0.3:7002@17002 slave 2ef3474dcb875522cd1b03465506065de2ada8e7 0 1630463304000 18 connected
  2. b7e55a3d3eda2777c077c606c090bcfaf6b674fd 127.0.0.1:7002@17002 master - 0 1630463306333 17 connected 0-99 200-399 600-699 800-899 5461-10922
  3. 2ef3474dcb875522cd1b03465506065de2ada8e7 127.0.0.2:7002@17002 master - 0 1630463305000 18 connected 100-199 400-599 700-799 900-999 10923-16383
  4. 4d0c6a957452191e755c1bb0856307c9da838f79 127.0.0.1:7002@17002 slave b7e55a3d3eda2777c077c606c090bcfaf6b674fd 0 1630463307336 10 connected
  5. 1f42f45cd136239d95fc15bda9938821c33138cc 127.0.0.5:7002@17002 myself,master - 0 1630463305000 18 connected 100-199 400-599 700-799 900-999 10923-16383
  6. 3bc21c09f3318342600205b1b5e6ea129e3608f3 127.0.0.6:6002@17002 slave 1f42f45cd136239d95fc15bda9938821c33138cc  0 1630463307336 0 connected
复制代码

将127.0.0.6:7002的节点ID记录下来(3bc21c09f3318342600205b1b5e6ea129e3608f3)

实行 下面下令

  1. ./redis-cli --cluster del-node 127.0.0.6 3bc21c09f3318342600205b1b5e6ea129e3608f3
复制代码

Redis集群新增、删除节点以及动态增长
内存的方法

出现以上信息代表删除成功。

2、删除主节点

由于 主节点分配了 slot槽, 以是 这里我们必须先把 7002的slot槽放到其他的可用节点中去,然后再举行 移除节点操作才行,不然会出现数据丢失题目 。

(1)先把数据迁徙 到其他主节点中。

  1. ./redis-cli --cluster reshard 127.0.0.5:7002
复制代码

Redis集群新增、删除节点以及动态增长
内存的方法

可以看到127.0.0.5:7002中有4461个slot槽,假如 想要均匀 分配,就必要 根据现有多少master主节点举行 均匀 ,然后重复实行 以上下令 。我下面操作是直接将全部 slot槽分配到一个节点上。

  1. 1、How many slots do you want to move (from 1 to 16384)? 4461
  2. 2、What is the receiving node ID? b7e55a3d3eda2777c077c606c090bcfaf6b674fd
  3. #这一步是问要将这些slot槽分配到哪个节点上,我分配到了127.0.0.1:7002上,所以填写它的ID
  4. 3、Please enter all the source node IDs.
  5. 3.1、Type 'all' to use all the nodes as source nodes for the hash slots.
  6. 3.2、Type 'done' once you entered all the source nodes IDs.
  7. 3.3、Source node #1:
  8. #这里需要数据源,其实就是 127.0.0.5:7002 节点的ID,因为你是把 7002 节点的数据放到其它地方去, 输入 7002 的ID
  9. #回车之后会出现再次输入id
  10. #其实是让你还可以选择源节点,但是我这里只要把 7002 节点分到其它地方就行,如果没有再把其它主节点分摊的需要,此处输入 done即可,否则输入其它节点的ID,最后输入 done
  11. 4.Do you want to proceed with the proposed reshard plan (yes/no)? yes
  12. #注意这里一定要输入yes,输入Y或者其他会终止操作。
  13. #这里就分配完slot槽了
复制代码

实行 完成之后,输入 cluster nodes 查看节点信息
可以看到 7002 已经没有槽分配了
接下来就可以按照删除从节点的方法删除主节点了。

  1. ./redis-cli --cluster del-node 127.0.0.6 主节点ID
复制代码

再次查看集群信息,发现主节点也删掉了。

三、动态扩容内存

在业务运行时,redis内存不够了怎么办,无非两种办法,要么删除无用的key,要么就是增长 节点内存,当删除key之后还是无法满足 需求,就只能增长 内存。redis提供了不停服务增长 内存的下令 CONFIG SET parameter value
1、CONFIG SET 下令 可以动态地调整 Redis 服务器的设置 (configuration)而无须重启。
2、你可以利用 它修改设置 参数,或者改变 Redis 的持久化(Persistence)方式。
3、CONFIG SET 可以修改的设置 参数可以利用 下令 CONFIG GET * 来列出,全部 被 CONFIG SET 修改的设置 参数都会立刻 见效 。

1、动态将7002端口内存从5G提拔 至10G

1、先获取当前最大内存

  1. redis 127.0.0.1:7002> config get maxmemory
  2. 1) "maxmemory"
  3. 2) "5000000000"
复制代码

2、设置新的最大内存

  1. redis 127.0.0.1:6379> config set maxmemory 10G
  2. OK
  3. #其实set 10G是不规范的,最好的是换算下填写10737418240
复制代码

3、查看修改后的值

  1. redis 127.0.0.1:6379> CONFIG GET maxmemory
  2. 1) "maxmemory"
  3. 2) "10000000000"
复制代码

附:可以动态设置的值

  1. 127.0.0.1:6379> CONFIG GET *
  2. 1) "dbfilename"
  3. 2) "dump.rdb"
  4. 3) "requirepass"
  5. 4) "123456"
  6. 5) "masterauth"
  7. 6) ""
  8. 7) "unixsocket"
  9. 8) ""
  10. 9) "logfile"
  11. 10) "/diskc/redis-2.8.19/log/6379_slave.log"
  12. 11) "pidfile"
  13. 12) "/var/run/redis.pid"
  14. 13) "maxmemory"
  15. 14) "10000000000"
  16. 15) "maxmemory-samples"
  17. 16) "3"
  18. 17) "timeout"
  19. 18) "0"
  20. 19) "tcp-keepalive"
  21. 20) "0"
  22. 21) "auto-aof-rewrite-percentage"
  23. 22) "100"
  24. 23) "auto-aof-rewrite-min-size"
  25. 24) "67108864"
  26. 25) "hash-max-ziplist-entries"
  27. 26) "512"
  28. 27) "hash-max-ziplist-value"
  29. 28) "64"
  30. 29) "list-max-ziplist-entries"
  31. 30) "512"
  32. 31) "list-max-ziplist-value"
  33. 32) "64"
  34. 33) "set-max-intset-entries"
  35. 34) "512"
  36. 35) "zset-max-ziplist-entries"
  37. 36) "128"
  38. 37) "zset-max-ziplist-value"
  39. 38) "64"
  40. 39) "hll-sparse-max-bytes"
  41. 40) "3000"
  42. 41) "lua-time-limit"
  43. 42) "5000"
  44. 43) "slowlog-log-slower-than"
  45. 44) "100000"
  46. 45) "latency-monitor-threshold"
  47. 46) "0"
  48. 47) "slowlog-max-len"
  49. 48) "128"
  50. 49) "port"
  51. 50) "6379"
  52. 51) "tcp-backlog"
  53. 52) "511"
  54. 53) "databases"
  55. 54) "16"
  56. 55) "repl-ping-slave-period"
  57. 56) "10"
  58. 57) "repl-timeout"
  59. 58) "60"
  60. 59) "repl-backlog-size"
  61. 60) "1048576"
  62. 61) "repl-backlog-ttl"
  63. 62) "3600"
  64. 63) "maxclients"
  65. 64) "15000"
  66. 65) "watchdog-period"
  67. 66) "200"
  68. 67) "slave-priority"
  69. 68) "100"
  70. 69) "min-slaves-to-write"
  71. 70) "0"
  72. 71) "min-slaves-max-lag"
  73. 72) "10"
  74. 73) "hz"
  75. 74) "10"
  76. 75) "repl-diskless-sync-delay"
  77. 76) "5"
  78. 77) "no-appendfsync-on-rewrite"
  79. 78) "no"
  80. 79) "slave-serve-stale-data"
  81. 80) "yes"
  82. 81) "slave-read-only"
  83. 82) "yes"
  84. 83) "stop-writes-on-bgsave-error"
  85. 84) "yes"
  86. 85) "daemonize"
  87. 86) "yes"
  88. 87) "rdbcompression"
  89. 88) "yes"
  90. 89) "rdbchecksum"
  91. 90) "yes"
  92. 91) "activerehashing"
  93. 92) "yes"
  94. 93) "repl-disable-tcp-nodelay"
  95. 94) "no"
  96. 95) "repl-diskless-sync"
  97. 96) "no"
  98. 97) "aof-rewrite-incremental-fsync"
  99. 98) "yes"
  100. 99) "aof-load-truncated"
  101. 100) "yes"
  102. 101) "appendonly"
  103. 102) "no"
  104. 103) "dir"
  105. 104) "/diskc/redis-2.8.19"
  106. 105) "maxmemory-policy"
  107. 106) "volatile-lru"
  108. 107) "appendfsync"
  109. 108) "everysec"
  110. 109) "save"
  111. 110) "900 1 300 10 60 10000"
  112. 111) "loglevel"
  113. 112) "notice"
  114. 113) "client-output-buffer-limit"
  115. 114) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"
  116. 115) "unixsocketperm"
  117. 116) "0"
  118. 117) "slaveof"
  119. 118) ""
  120. 119) "notify-keyspace-events"
  121. 120) ""
  122. 121) "bind"
  123. 122) ""
复制代码

 到此这篇关于Redis集群新增、删除节点以及动态增长 内存的方法的文章就先容 到这了,更多干系 Redis集群新增删除节点及动态增长 内存内容请搜刮 脚本之家从前 的文章或继续欣赏 下面的干系 文章渴望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar 简0 | 2021-9-14 04:30:33 | 显示全部楼层
今天过得很不爽!
回复

使用道具 举报

avatar 湘军 | 2021-9-17 15:50:49 | 显示全部楼层
admin楼主写的很经典!
回复

使用道具 举报

avatar 我是的十八簿 | 2021-9-20 04:36:02 | 显示全部楼层
admin楼主很有艺术范!
回复

使用道具 举报

avatar 杨柳657 | 2021-9-26 11:23:00 | 显示全部楼层
admin楼主病的不轻啊!
回复

使用道具 举报

avatar ty实话实说2017 | 2021-10-4 16:41:56 | 显示全部楼层
怪事年年有,今年特别多!
回复

使用道具 举报

avatar 形腿望舞 | 2021-10-13 12:35:48 | 显示全部楼层
上次给admin楼主开的药,你都吃完了?
回复

使用道具 举报

写得实在太好了,我唯一能做的就是默默顶贴!
回复

使用道具 举报

avatar 换即势 | 昨天 22:32 | 显示全部楼层
顶顶更健康!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则