Java小强个人技术博客站点    手机版
当前位置: 首页 >> 软件 >> Centos7上Redis主从集群,增加节点

Centos7上Redis主从集群,增加节点

22802 软件 | 2022-1-25

REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。

Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。

Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。


这增加两个节点7004和8004,一个主一个从

mkdir 7004 8004
echo 7004 8004 | xargs -t -n 1 cp redis.conf

修改配置文件

printf '%s\n' 7004 8004 | xargs -I{} -t sed -i 's/6379/{}/g' {}/redis.conf

启动新加入的两个节点

printf '%s\n' 7004 8004 | xargs -I{} -t redis-server /root/redis/{}/redis.conf
ps -ef | grep redis

将7004加入到集群中去

redis-cli --cluster add-node 192.168.3.22:7004 192.168.3.22:7001
>>> Adding node 192.168.3.22:7004 to cluster 192.168.3.22:7001
>>> Performing Cluster Check (using node 192.168.3.22:7001)
M: e332154d4c091ebe757e32931e03d11c3005a342 192.168.3.22:7001
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 431d6bc41d9a105720d338dec227835d556d22b2 192.168.3.22:8003
   slots: (0 slots) slave
   replicates 248616ebb7959cda67dc975282ee81c56eb26d18
M: 454222018bec479ffc33209296287ad95cbd8f30 192.168.3.22:7002
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: c757128a130008a4d92a47322b48ca9745613ecb 192.168.3.22:8002
   slots: (0 slots) slave
   replicates 454222018bec479ffc33209296287ad95cbd8f30
S: 0e4edb04379ca7fd152c89de72229ebb77030673 192.168.3.22:8001
   slots: (0 slots) slave
   replicates e332154d4c091ebe757e32931e03d11c3005a342
M: 248616ebb7959cda67dc975282ee81c56eb26d18 192.168.3.22:7003
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 192.168.3.22:7004 to make it join the cluster.
[OK] New node added correctly.

查看节点信息

redis-cli -p 7001 cluster nodes
0d6f140607b0b2eedec2b8042c0994ad6d0beb17 192.168.3.22:7004@17004 master - 0 1643114198000 0 connected
431d6bc41d9a105720d338dec227835d556d22b2 192.168.3.22:8003@18003 slave 248616ebb7959cda67dc975282ee81c56eb26d18 0 1643114199542 3 connected
e332154d4c091ebe757e32931e03d11c3005a342 192.168.3.22:7001@17001 myself,master - 0 1643114198000 1 connected 0-5460
454222018bec479ffc33209296287ad95cbd8f30 192.168.3.22:7002@17002 master - 0 1643114199000 2 connected 5461-10922
c757128a130008a4d92a47322b48ca9745613ecb 192.168.3.22:8002@18002 slave 454222018bec479ffc33209296287ad95cbd8f30 0 1643114199000 2 connected
0e4edb04379ca7fd152c89de72229ebb77030673 192.168.3.22:8001@18001 slave e332154d4c091ebe757e32931e03d11c3005a342 0 1643114198505 1 connected
248616ebb7959cda67dc975282ee81c56eb26d18 192.168.3.22:7003@17003 master - 0 1643114199644 3 connected 10923-16383

可以看到7004已经成为了master节点,但是注意,此时7004并没有被分配插槽,所以不会被分配数据,使用reshard分配插槽

redis-cli --cluster reshard 192.168.3.22:7001
# 输出内容
How many slots do you want to move (from 1 to 16384)?
# 询问要移动多少个插槽,这里移动3000个,输入3000
What is the receiving node ID?
# 谁来接收该插槽,这里输入7004的ID(0d6f140607b0b2eedec2b8042c0994ad6d0beb17)
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
Source node #1:
# 这里问从哪里作为数据源进行拷贝,这里从7001拷贝,输入7001的ID(e332154d4c091ebe757e32931e03d11c3005a342)
Source node #2:
# 这里不再从其他节点拷贝了,输入done
Do you want to proceed with the proposed reshard plan (yes/no)?
# 输入yes即可


再次查看节点信息

redis-cli -p 7001 cluster nodes
0d6f140607b0b2eedec2b8042c0994ad6d0beb17 192.168.3.22:7004@17004 master - 0 1643115501537 7 connected 0-2999
431d6bc41d9a105720d338dec227835d556d22b2 192.168.3.22:8003@18003 slave 248616ebb7959cda67dc975282ee81c56eb26d18 0 1643115501000 3 connected
e332154d4c091ebe757e32931e03d11c3005a342 192.168.3.22:7001@17001 myself,master - 0 1643115500000 1 connected 3000-5460
454222018bec479ffc33209296287ad95cbd8f30 192.168.3.22:7002@17002 master - 0 1643115502184 2 connected 5461-10922
c757128a130008a4d92a47322b48ca9745613ecb 192.168.3.22:8002@18002 slave 454222018bec479ffc33209296287ad95cbd8f30 0 1643115500000 2 connected
0e4edb04379ca7fd152c89de72229ebb77030673 192.168.3.22:8001@18001 slave e332154d4c091ebe757e32931e03d11c3005a342 0 1643115501967 1 connected
248616ebb7959cda67dc975282ee81c56eb26d18 192.168.3.22:7003@17003 master - 0 1643115501000 3 connected 10923-16383

可以看到7004已经分配0-2999的插槽。


把8004分配给7004作为从节点

redis-cli --cluster add-node 192.168.3.22:8004 192.168.3.22:7001 --cluster-slave --cluster-master-id 0d6f140607b0b2eedec2b8042c0994ad6d0beb17

删除一个节点

redis-cli --cluster del-node 192.168.3.22:8004 69cdee589bdc6db5af5a0a2545e129bf3d5fd4c2


查看帮助信息

redis-cli --cluster help
Cluster Manager Commands:
  create         host1:port1 ... hostN:portN
                 --cluster-replicas <arg>
  check          host:port
                 --cluster-search-multiple-owners
  info           host:port
  fix            host:port
                 --cluster-search-multiple-owners
                 --cluster-fix-with-unreachable-masters
  reshard        host:port
                 --cluster-from <arg>
                 --cluster-to <arg>
                 --cluster-slots <arg>
                 --cluster-yes
                 --cluster-timeout <arg>
                 --cluster-pipeline <arg>
                 --cluster-replace
  rebalance      host:port
                 --cluster-weight <node1=w1...nodeN=wN>
                 --cluster-use-empty-masters
                 --cluster-timeout <arg>
                 --cluster-simulate
                 --cluster-pipeline <arg>
                 --cluster-threshold <arg>
                 --cluster-replace
  add-node       new_host:new_port existing_host:existing_port
                 --cluster-slave
                 --cluster-master-id <arg>
  del-node       host:port node_id
  call           host:port command arg arg .. arg
                 --cluster-only-masters
                 --cluster-only-replicas
  set-timeout    host:port milliseconds
  import         host:port
                 --cluster-from <arg>
                 --cluster-from-user <arg>
                 --cluster-from-pass <arg>
                 --cluster-from-askpass
                 --cluster-copy
                 --cluster-replace
  backup         host:port backup_directory
  help           

For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.

Cluster Manager Options:
  --cluster-yes  Automatic yes to cluster commands prompts


推荐您阅读更多有关于“ 集群 CentOS redis 主从 哨兵 ”的文章

上一篇:Centos7上Redis主从集群数据迁移 下一篇:Centos7上Redis主从集群

猜你喜欢

发表评论:

评论:

回复 Java小强 评论于 2022-01-25 22:06
开放防火墙
firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd --zone=public --add-port=7002/tcp --permanent
firewall-cmd --zone=public --add-port=7003/tcp --permanent
firewall-cmd --zone=public --add-port=7004/tcp --permanent
firewall-cmd --zone=public --add-port=8001/tcp --permanent
firewall-cmd --zone=public --add-port=8002/tcp --permanent
firewall-cmd --zone=public --add-port=8003/tcp --permanent
firewall-cmd --zone=public --add-port=8004/tcp --permanent
firewall-cmd --reload
回复 Java小强 评论于 2022-01-25 21:13
8004分配后节点信息
redis-cli -p 7001 cluster nodes
0d6f140607b0b2eedec2b8042c0994ad6d0beb17 192.168.3.22:7004@17004 master - 0 1643115916000 7 connected 0-2999
431d6bc41d9a105720d338dec227835d556d22b2 192.168.3.22:8003@18003 slave 248616ebb7959cda67dc975282ee81c56eb26d18 0 1643115916000 3 connected
e332154d4c091ebe757e32931e03d11c3005a342 192.168.3.22:7001@17001 myself,master - 0 1643115917000 1 connected 3000-5460
69cdee589bdc6db5af5a0a2545e129bf3d5fd4c2 192.168.3.22:8004@18004 slave 0d6f140607b0b2eedec2b8042c0994ad6d0beb17 0 1643115916000 7 connected
454222018bec479ffc33209296287ad95cbd8f30 192.168.3.22:7002@17002 master - 0 1643115917000 2 connected 5461-10922
c757128a130008a4d92a47322b48ca9745613ecb 192.168.3.22:8002@18002 slave 454222018bec479ffc33209296287ad95cbd8f30 0 1643115917696 2 connected
0e4edb04379ca7fd152c89de72229ebb77030673 192.168.3.22:8001@18001 slave e332154d4c091ebe757e32931e03d11c3005a342 0 1643115917000 1 connected
248616ebb7959cda67dc975282ee81c56eb26d18 192.168.3.22:7003@17003 master - 0 1643115917593 3 connected 10923-16383