docker3主3从redis集群配置(仅供学习、练习时参考使用)

3主3从redis集群配置,包含容错切换,扩容以及缩容等内容。仅供学习、练习时使用(因为参数以及配置极其简单)。

一、建6个docker容器redis实例
docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:6.0.6 --cluster-enabled yes --appendonly yes --port 6381
docker run -d --name redis-node-2 --net host --privileged=true -v /data/redis/share/redis-node-2:/data redis:6.0.6 --cluster-enabled yes --appendonly yes --port 6382
docker run -d --name redis-node-3 --net host --privileged=true -v /data/redis/share/redis-node-3:/data redis:6.0.6 --cluster-enabled yes --appendonly yes --port 6383
docker run -d --name redis-node-4 --net host --privileged=true -v /data/redis/share/redis-node-4:/data redis:6.0.6 --cluster-enabled yes --appendonly yes --port 6384
docker run -d --name redis-node-5 --net host --privileged=true -v /data/redis/share/redis-node-5:/data redis:6.0.6 --cluster-enabled yes --appendonly yes --port 6385
docker run -d --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:6.0.6 --cluster-enabled yes --appendonly yes --port 6386

命令分步解释

  • docker run 创建并运行docker容器实例
  • –name redis-node-6 容器名字
  • –net host 使用宿主机的IP和端口,默认
  • –privileged=true 获取宿主机root用户权限
  • -v /data/redis/share/redis-node-6:/data 容器卷,宿主机地址:docker内部地址
  • redis:6.0.6 redis镜像和版本号
  • –cluster-enabled yes 开启redis集群
  • –appendonly yes 开启持久化
  • –port 6381 redis端口号
二、构建主从关系
  1. 进入redis-node-1容器
    docker exec -it redis-node-1 /bin/bash
    
  2. 构建主从关系,–cluster-replicas 1 表示为每个master创建一个slave节点

    redis-cli --cluster create 192.168.3.174:6381 192.168.3.174:6382 192.168.3.174:6383 192.168.3.174:6384 192.168.3.174:6385 192.168.3.174:6386 --cluster-replicas 1
    
  3. 结果如下

    root@ubuntu:~# docker exec -it redis-node-1 /bin/bash
    root@ubuntu:/data# redis-cli --cluster create 192.168.3.174:6381 192.168.3.174:6382 192.168.3.174:6383 192.168.3.174:6384 192.168.3.174:6385 192.168.3.174:6386 --cluster-replicas 1
    >>> Performing hash slots allocation on 6 nodes...
    Master[0] -> Slots 0 - 5460
    Master[1] -> Slots 5461 - 10922
    Master[2] -> Slots 10923 - 16383
    Adding replica 192.168.3.174:6385 to 192.168.3.174:6381
    Adding replica 192.168.3.174:6386 to 192.168.3.174:6382
    Adding replica 192.168.3.174:6384 to 192.168.3.174:6383
    >>> Trying to optimize slaves allocation for anti-affinity
    [WARNING] Some slaves are in the same host as their master
    M: 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381
       slots:[0-5460] (5461 slots) master
    M: 30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382
       slots:[5461-10922] (5462 slots) master
    M: 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383
       slots:[10923-16383] (5461 slots) master
    S: 9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384
       replicates 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82
    S: 6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385
       replicates 30834d61fa38d4eeabfe5ebf629e04f854b62630
    S: 09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386
       replicates 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e
    Can I set the above configuration? (type 'yes' to accept): yes
    >>> Nodes configuration updated
    >>> Assign a different config epoch to each node
    >>> Sending CLUSTER MEET messages to join the cluster
    Waiting for the cluster to join
    ....
    >>> Performing Cluster Check (using node 192.168.3.174:6381)
    M: 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381
       slots:[0-5460] (5461 slots) master
       1 additional replica(s)
    M: 30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382
       slots:[5461-10922] (5462 slots) master
       1 additional replica(s)
    S: 6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385
       slots: (0 slots) slave
       replicates 30834d61fa38d4eeabfe5ebf629e04f854b62630
    S: 9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384
       slots: (0 slots) slave
       replicates 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82
    M: 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383
       slots:[10923-16383] (5461 slots) master
       1 additional replica(s)
    S: 09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386
       slots: (0 slots) slave
       replicates 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e
    [OK] All nodes agree about slots configuration.
    >>> Check for open slots...
    >>> Check slots coverage...
    [OK] All 16384 slots covered.
    root@ubuntu:/data# 
    
三、查看集群信息cluster info和cluster nodes
root@ubuntu:/data# redis-cli -p 6381
127.0.0.1:6381> 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:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:176
cluster_stats_messages_pong_sent:163
cluster_stats_messages_sent:339
cluster_stats_messages_ping_received:158
cluster_stats_messages_pong_received:176
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:339
127.0.0.1:6381> CLUSTER NODES
30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382@16382 master - 0 1644832150939 2 connected 5461-10922
6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381@16381 myself,master - 0 1644832150000 1 connected 0-5460
6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385@16385 slave 30834d61fa38d4eeabfe5ebf629e04f854b62630 0 1644832151000 2 connected
9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384@16384 slave 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 0 1644832151957 1 connected
3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383@16383 master - 0 1644832151000 3 connected 10923-16383
09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386@16386 slave 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 0 1644832149000 3 connected
127.0.0.1:6381> 
四、防止路由失效加参数-c并新增两个key
127.0.0.1:6381> get keys
(nil)
127.0.0.1:6381> set k1 v1
(error) MOVED 12706 192.168.3.174:6383
127.0.0.1:6381> set k2 v2
OK
127.0.0.1:6381> set k3 v3
OK
127.0.0.1:6381> set k4 v4
(error) MOVED 8455 192.168.3.174:6382
127.0.0.1:6381> exit
root@ubuntu:/data# ls        
appendonly.aof  dump.rdb  nodes.conf
root@ubuntu:/data# pwd    
/data
root@ubuntu:/data# redis-cli -p 6381 -c
127.0.0.1:6381> get keys
(nil)
127.0.0.1:6381> set k1 v1
-> Redirected to slot [12706] located at 192.168.3.174:6383
OK
192.168.3.174:6383> get k1
"v1"
192.168.3.174:6383> get k2
-> Redirected to slot [449] located at 192.168.3.174:6381
"v2"
五、查看集群信息redis-cli --cluster check
root@ubuntu:/data# redis-cli --cluster check 192.168.3.174:6381
192.168.3.174:6381 (6531fb8e...) -> 2 keys | 5461 slots | 1 slaves.
192.168.3.174:6382 (30834d61...) -> 0 keys | 5462 slots | 1 slaves.
192.168.3.174:6383 (3d1cae66...) -> 1 keys | 5461 slots | 1 slaves.
[OK] 3 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.3.174:6381)
M: 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: 30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385
   slots: (0 slots) slave
   replicates 30834d61fa38d4eeabfe5ebf629e04f854b62630
S: 9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384
   slots: (0 slots) slave
   replicates 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82
M: 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386
   slots: (0 slots) slave
   replicates 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
root@ubuntu:/data# 
六、 容错切换迁移

主6381和从6384机切换,先停止主机6381,6381主机停了,对应的真实从机6384上位,再次查看集群信息

#6381停止以前的集群信息
127.0.0.1:6381> CLUSTER NODES
30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382@16382 master - 0 1644832150939 2 connected 5461-10922
6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381@16381 myself,master - 0 1644832150000 1 connected 0-5460
6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385@16385 slave 30834d61fa38d4eeabfe5ebf629e04f854b62630 0 1644832151000 2 connected
9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384@16384 slave 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 0 1644832151957 1 connected
3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383@16383 master - 0 1644832151000 3 connected 10923-16383
09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386@16386 slave 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 0 1644832149000 3 connected

#停止redis-node-1
root@ubuntu:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
3e0cb5ae04e1        redis:6.0.6         "docker-entrypoint.s…"   2 hours ago         Up 2 hours                              redis-node-6
4945a5bd8406        redis:6.0.6         "docker-entrypoint.s…"   2 hours ago         Up 2 hours                              redis-node-5
94e50bdcb8b5        redis:6.0.6         "docker-entrypoint.s…"   2 hours ago         Up 2 hours                              redis-node-4
9a93e4388ab5        redis:6.0.6         "docker-entrypoint.s…"   2 hours ago         Up 2 hours                              redis-node-3
52e1c08dbf74        redis:6.0.6         "docker-entrypoint.s…"   2 hours ago         Up 2 hours                              redis-node-2
ef3c4f8cf40a        redis:6.0.6         "docker-entrypoint.s…"   2 hours ago         Up 2 hours                              redis-node-1
root@ubuntu:~# docker stop redis-node-1
redis-node-1
root@ubuntu:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
3e0cb5ae04e1        redis:6.0.6         "docker-entrypoint.s…"   2 hours ago         Up 2 hours                              redis-node-6
4945a5bd8406        redis:6.0.6         "docker-entrypoint.s…"   2 hours ago         Up 2 hours                              redis-node-5
94e50bdcb8b5        redis:6.0.6         "docker-entrypoint.s…"   2 hours ago         Up 2 hours                              redis-node-4
9a93e4388ab5        redis:6.0.6         "docker-entrypoint.s…"   2 hours ago         Up 2 hours                              redis-node-3
52e1c08dbf74        redis:6.0.6         "docker-entrypoint.s…"   2 hours ago         Up 2 hours                              redis-node-2

#重新进入容器,然后查看容器信息(看到redis-node-1 master已经被redis-node-4从机取代)
root@ubuntu:~# docker exec -it redis-node-2 /bin/bash
root@ubuntu:/data# redis-cli -p 6382 -c
127.0.0.1:6382> cluster nodes
30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382@16382 myself,master - 0 1644838035000 2 connected 5461-10922
6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381@16381 master,fail - 1644837372241 1644837368169 1 disconnected
09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386@16386 slave 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 0 1644838034000 3 connected
9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384@16384 master - 0 1644838035000 7 connected 0-5460
3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383@16383 master - 0 1644838035991 3 connected 10923-16383
6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385@16385 slave 30834d61fa38d4eeabfe5ebf629e04f854b62630 0 1644838037015 2 connected
七、恢复容错
#直接启动redis-node-1,查看集群信息,此时redis-node-1为redis-node-4的从机
root@ubuntu:~# docker start redis-node-1 
redis-node-1
root@ubuntu:~# docker exec -it redis-node-1 /bin/bash
root@ubuntu:/data# redis-cli -p 6381 -c
127.0.0.1:6381> cluster nodes
6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385@16385 slave 30834d61fa38d4eeabfe5ebf629e04f854b62630 0 1644839801000 2 connected
3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383@16383 master - 0 1644839802849 3 connected 10923-16383
9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384@16384 master - 0 1644839801000 7 connected 0-5460
09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386@16386 slave 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 0 1644839802000 3 connected
6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381@16381 myself,slave 9be29344da240777cfb590fd51597e5e73af5788 0 1644839800000 7 connected
30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382@16382 master - 0 1644839800000 2 connected 5461-10922

#想要恢复成redis-node-4为redis-node-1的从机,就需要先停止redis-node-4,让redis-node-1成为master,然后再启动redis-node-4
root@ubuntu:~# docker stop redis-node-4
redis-node-4
root@ubuntu:~# docker start redis-node-4
redis-node-4
root@ubuntu:~# docker exec -it redis-node-1 /bin/bash
root@ubuntu:/data# redis-cli -p 6381 -c
127.0.0.1:6381> cluster nodes
6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385@16385 slave 30834d61fa38d4eeabfe5ebf629e04f854b62630 0 1644840115000 2 connected
3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383@16383 master - 0 1644840116715 3 connected 10923-16383
9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384@16384 slave 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 0 1644840114000 9 connected
09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386@16386 slave 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 0 1644840116000 3 connected
6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381@16381 myself,master - 0 1644840114000 9 connected 0-5460
30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382@16382 master - 0 1644840115702 2 connected 5461-10922
八、扩容(再扩一主一从)
#新增6387和6388两个节点
docker run -d --name redis-node-7 --net host --privileged=true -v /data/redis/share/redis-node-7:/data redis:6.0.6 --cluster-enabled yes --appendonly yes --port 6387
docker run -d --name redis-node-8 --net host --privileged=true -v /data/redis/share/redis-node-8:/data redis:6.0.6 --cluster-enabled yes --appendonly yes --port 6388
#进入6387,将新增的6387节点(空槽号)作为master节点加入原集群(6381 就是原来集群节点里面的领路人,相当于6387拜拜6381的码头从而找到组织加入集群)
root@ubuntu:~# docker exec -it redis-node-7 /bin/bash
root@ubuntu:/data# redis-cli --cluster add-node 192.168.3.174:6387 192.168.3.174:6381
>>> Adding node 192.168.3.174:6387 to cluster 192.168.3.174:6381
>>> Performing Cluster Check (using node 192.168.3.174:6381)
M: 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: 30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385
   slots: (0 slots) slave
   replicates 30834d61fa38d4eeabfe5ebf629e04f854b62630
M: 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384
   slots: (0 slots) slave
   replicates 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82
S: 09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386
   slots: (0 slots) slave
   replicates 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e
[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.174:6387 to make it join the cluster.
[OK] New node added correctly.


#检查集群情况第1次(6387没有槽号,是master节点)
root@ubuntu:/data# redis-cli --cluster check 192.168.3.174:6381
192.168.3.174:6381 (6531fb8e...) -> 0 keys | 5461 slots | 1 slaves.
192.168.3.174:6387 (cd1c83fc...) -> 0 keys | 0 slots | 0 slaves.
192.168.3.174:6382 (30834d61...) -> 0 keys | 5462 slots | 1 slaves.
192.168.3.174:6383 (3d1cae66...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.3.174:6381)
M: 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: cd1c83fcd01b02b1e154b902c8064df9a0b5b17b 192.168.3.174:6387
   slots: (0 slots) master
M: 30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385
   slots: (0 slots) slave
   replicates 30834d61fa38d4eeabfe5ebf629e04f854b62630
M: 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384
   slots: (0 slots) slave
   replicates 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82
S: 09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386
   slots: (0 slots) slave
   replicates 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.


#重新分派槽号
root@ubuntu:/data# redis-cli --cluster reshard 192.168.3.174:6381
>>> Performing Cluster Check (using node 192.168.3.174:6381)
M: 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: cd1c83fcd01b02b1e154b902c8064df9a0b5b17b 192.168.3.174:6387
   slots: (0 slots) master
M: 30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385
   slots: (0 slots) slave
   replicates 30834d61fa38d4eeabfe5ebf629e04f854b62630
M: 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384
   slots: (0 slots) slave
   replicates 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82
S: 09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386
   slots: (0 slots) slave
   replicates 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
#这里填写的4096是进行了均分,每个节点得到4096(16384/4),  
How many slots do you want to move (from 1 to 16384)? 4096
#这里填写的是接收槽点的节点ID(当前案例是6387节点的ID)
What is the receiving node ID? cd1c83fcd01b02b1e154b902c8064df9a0b5b17b
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: all

Ready to move 4096 slots.
  Source nodes:
    M: 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381
       slots:[0-5460] (5461 slots) master
       1 additional replica(s)
    M: 30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382
       slots:[5461-10922] (5462 slots) master
       1 additional replica(s)
    M: 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383
       slots:[10923-16383] (5461 slots) master
       1 additional replica(s)
  Destination node:
    M: cd1c83fcd01b02b1e154b902c8064df9a0b5b17b 192.168.3.174:6387
       slots: (0 slots) master
  Resharding plan:
    Moving slot 5461 from 30834d61fa38d4eeabfe5ebf629e04f854b62630
    Moving slot 5462 from 30834d61fa38d4eeabfe5ebf629e04f854b62630
    Moving slot 5463 from 30834d61fa38d4eeabfe5ebf629e04f854b62630
	....
	Moving slot 12287 from 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e
Do you want to proceed with the proposed reshard plan (yes/no)? yes
Moving slot 5461 from 192.168.3.174:6382 to 192.168.3.174:6387: 
Moving slot 5462 from 192.168.3.174:6382 to 192.168.3.174:6387: 
Moving slot 5463 from 192.168.3.174:6382 to 192.168.3.174:6387: 
....
Moving slot 12287 from 192.168.3.174:6383 to 192.168.3.174:6387: 

#检查集群情况(第2次),为什么6387是3个新的区间,以前的还是连续?重新分配成本太高
#所以前3家各自匀出来一部分,从6381/6382/6383三个旧节点分别匀出1364个坑位给新节点6387
root@ubuntu:/data# redis-cli --cluster check 192.168.3.174:6381
192.168.3.174:6381 (6531fb8e...) -> 0 keys | 4096 slots | 1 slaves.
192.168.3.174:6387 (cd1c83fc...) -> 0 keys | 4096 slots | 0 slaves.
192.168.3.174:6382 (30834d61...) -> 0 keys | 4096 slots | 1 slaves.
192.168.3.174:6383 (3d1cae66...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 0 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.3.174:6381)
M: 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381
   slots:[1365-5460] (4096 slots) master
   1 additional replica(s)
M: cd1c83fcd01b02b1e154b902c8064df9a0b5b17b 192.168.3.174:6387
   slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
M: 30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385
   slots: (0 slots) slave
   replicates 30834d61fa38d4eeabfe5ebf629e04f854b62630
M: 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: 9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384
   slots: (0 slots) slave
   replicates 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82
S: 09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386
   slots: (0 slots) slave
   replicates 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

#为主节点6387分配从节点6388
#命令:redis-cli --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新master节点ID
root@ubuntu:/data# redis-cli --cluster add-node 192.168.3.174:6388 192.168.3.174:6387 --cluster-slave --cluster-master-id cd1c83fcd01b02b1e154b902c8064df9a0b5b17b
>>> Adding node 192.168.3.174:6388 to cluster 192.168.3.174:6387
>>> Performing Cluster Check (using node 192.168.3.174:6387)
M: cd1c83fcd01b02b1e154b902c8064df9a0b5b17b 192.168.3.174:6387
   slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
S: 09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386
   slots: (0 slots) slave
   replicates 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e
M: 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
M: 30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
M: 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381
   slots:[1365-5460] (4096 slots) master
   1 additional replica(s)
S: 9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384
   slots: (0 slots) slave
   replicates 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82
S: 6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385
   slots: (0 slots) slave
   replicates 30834d61fa38d4eeabfe5ebf629e04f854b62630
[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.174:6388 to make it join the cluster.
Waiting for the cluster to join

>>> Configure node as replica of 192.168.3.174:6387.
[OK] New node added correctly.


#检查集群情况(第3次),目前集群已经变成4主4从
root@ubuntu:/data# redis-cli --cluster check 192.168.3.174:6381
192.168.3.174:6381 (6531fb8e...) -> 0 keys | 4096 slots | 1 slaves.
192.168.3.174:6387 (cd1c83fc...) -> 0 keys | 4096 slots | 1 slaves.
192.168.3.174:6382 (30834d61...) -> 0 keys | 4096 slots | 1 slaves.
192.168.3.174:6383 (3d1cae66...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 0 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.3.174:6381)
M: 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381
   slots:[1365-5460] (4096 slots) master
   1 additional replica(s)
S: 5fc8962a9c7e673aecbbf009618818fb8a3eb576 192.168.3.174:6388
   slots: (0 slots) slave
   replicates cd1c83fcd01b02b1e154b902c8064df9a0b5b17b
M: cd1c83fcd01b02b1e154b902c8064df9a0b5b17b 192.168.3.174:6387
   slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
   1 additional replica(s)
M: 30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385
   slots: (0 slots) slave
   replicates 30834d61fa38d4eeabfe5ebf629e04f854b62630
M: 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: 9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384
   slots: (0 slots) slave
   replicates 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82
S: 09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386
   slots: (0 slots) slave
   replicates 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
九、缩容(从集群中去掉一主一从节点)
#将6388删除,从集群中将6387的从节点6388删除
#命令:redis-cli --cluster del-node ip:从机端口 从机6388节点ID
root@ubuntu:/data# redis-cli --cluster del-node 192.168.3.174:6388 5fc8962a9c7e673aecbbf009618818fb8a3eb576
>>> Removing node 5fc8962a9c7e673aecbbf009618818fb8a3eb576 from cluster 192.168.3.174:6388
>>> Sending CLUSTER FORGET messages to the cluster...
>>> Sending CLUSTER RESET SOFT to the deleted node.


#查看集群信息(6388从机在集群中已经不存在)
root@ubuntu:/data# redis-cli --cluster check 192.168.3.174:6381
192.168.3.174:6381 (6531fb8e...) -> 0 keys | 4096 slots | 1 slaves.
192.168.3.174:6387 (cd1c83fc...) -> 0 keys | 4096 slots | 0 slaves.
192.168.3.174:6382 (30834d61...) -> 0 keys | 4096 slots | 1 slaves.
192.168.3.174:6383 (3d1cae66...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 0 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.3.174:6381)
M: 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381
   slots:[1365-5460] (4096 slots) master
   1 additional replica(s)
M: cd1c83fcd01b02b1e154b902c8064df9a0b5b17b 192.168.3.174:6387
   slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
M: 30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385
   slots: (0 slots) slave
   replicates 30834d61fa38d4eeabfe5ebf629e04f854b62630
M: 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: 9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384
   slots: (0 slots) slave
   replicates 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82
S: 09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386
   slots: (0 slots) slave
   replicates 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

#将6387的槽号清空,重新分配,将1365个槽号分给6381
root@ubuntu:/data# redis-cli --cluster reshard 192.168.3.174:6381
>>> Performing Cluster Check (using node 192.168.3.174:6381)
M: 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381
   slots:[1365-5460] (4096 slots) master
   1 additional replica(s)
M: cd1c83fcd01b02b1e154b902c8064df9a0b5b17b 192.168.3.174:6387
   slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
M: 30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385
   slots: (0 slots) slave
   replicates 30834d61fa38d4eeabfe5ebf629e04f854b62630
M: 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: 9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384
   slots: (0 slots) slave
   replicates 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82
S: 09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386
   slots: (0 slots) slave
   replicates 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
#重新分配的槽号数量1365
How many slots do you want to move (from 1 to 16384)? 1365
#接收这些槽号的节点ID(这里是6381节点的ID)
What is the receiving node ID? 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82
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.
#从那个节点出这些槽号(这里是6387)
Source node #1: cd1c83fcd01b02b1e154b902c8064df9a0b5b17b
Source node #2: done

Ready to move 1365 slots.
  Source nodes:
    M: cd1c83fcd01b02b1e154b902c8064df9a0b5b17b 192.168.3.174:6387
       slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
  Destination node:
    M: 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381
       slots:[1365-5460] (4096 slots) master
       1 additional replica(s)
  Resharding plan:
    Moving slot 0 from cd1c83fcd01b02b1e154b902c8064df9a0b5b17b
    Moving slot 1 from cd1c83fcd01b02b1e154b902c8064df9a0b5b17b
    Moving slot 2 from cd1c83fcd01b02b1e154b902c8064df9a0b5b17b
	....
    Moving slot 1363 from cd1c83fcd01b02b1e154b902c8064df9a0b5b17b
    Moving slot 1364 from cd1c83fcd01b02b1e154b902c8064df9a0b5b17b
Do you want to proceed with the proposed reshard plan (yes/no)? yes
Moving slot 0 from 192.168.3.174:6387 to 192.168.3.174:6381: 
Moving slot 1 from 192.168.3.174:6387 to 192.168.3.174:6381: 
Moving slot 2 from 192.168.3.174:6387 to 192.168.3.174:6381: 
....
Moving slot 1361 from 192.168.3.174:6387 to 192.168.3.174:6381: 
Moving slot 1362 from 192.168.3.174:6387 to 192.168.3.174:6381: 
Moving slot 1363 from 192.168.3.174:6387 to 192.168.3.174:6381: 
Moving slot 1364 from 192.168.3.174:6387 to 192.168.3.174:6381: 


#查看集群信息,可以看到从6387分出来的1365个槽号给了6381
root@ubuntu:/data# redis-cli --cluster check 192.168.3.174:6381   
192.168.3.174:6381 (6531fb8e...) -> 0 keys | 5461 slots | 1 slaves.
192.168.3.174:6387 (cd1c83fc...) -> 0 keys | 2731 slots | 0 slaves.
192.168.3.174:6382 (30834d61...) -> 0 keys | 4096 slots | 1 slaves.
192.168.3.174:6383 (3d1cae66...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 0 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.3.174:6381)
M: 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: cd1c83fcd01b02b1e154b902c8064df9a0b5b17b 192.168.3.174:6387
   slots:[5461-6826],[10923-12287] (2731 slots) master
M: 30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385
   slots: (0 slots) slave
   replicates 30834d61fa38d4eeabfe5ebf629e04f854b62630
M: 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: 9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384
   slots: (0 slots) slave
   replicates 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82
S: 09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386
   slots: (0 slots) slave
   replicates 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

#以此类推,将1366个槽号分给6382,将1365个槽号分给6383,
root@ubuntu:/data# redis-cli --cluster check 192.168.3.174:6381   
192.168.3.174:6381 (6531fb8e...) -> 0 keys | 5461 slots | 1 slaves.
192.168.3.174:6387 (cd1c83fc...) -> 0 keys | 1365 slots | 0 slaves.
192.168.3.174:6382 (30834d61...) -> 0 keys | 5462 slots | 1 slaves.
192.168.3.174:6383 (3d1cae66...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 0 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.3.174:6381)
M: 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: cd1c83fcd01b02b1e154b902c8064df9a0b5b17b 192.168.3.174:6387
   slots:[10923-12287] (1365 slots) master
M: 30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385
   slots: (0 slots) slave
   replicates 30834d61fa38d4eeabfe5ebf629e04f854b62630
M: 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: 9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384
   slots: (0 slots) slave
   replicates 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82
S: 09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386
   slots: (0 slots) slave
   replicates 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.


#6387槽号清空以后的情况
root@ubuntu:/data# redis-cli --cluster check 192.168.3.174:6381  
192.168.3.174:6381 (6531fb8e...) -> 0 keys | 5461 slots | 1 slaves.
192.168.3.174:6387 (cd1c83fc...) -> 0 keys | 0 slots | 0 slaves.
192.168.3.174:6382 (30834d61...) -> 0 keys | 5462 slots | 1 slaves.
192.168.3.174:6383 (3d1cae66...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.3.174:6381)
M: 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: cd1c83fcd01b02b1e154b902c8064df9a0b5b17b 192.168.3.174:6387
   slots: (0 slots) master
M: 30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385
   slots: (0 slots) slave
   replicates 30834d61fa38d4eeabfe5ebf629e04f854b62630
M: 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384
   slots: (0 slots) slave
   replicates 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82
S: 09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386
   slots: (0 slots) slave
   replicates 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e
[ERR] Nodes don't agree about configuration!
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.


#将6387主节点删除
#命令:redis-cli --cluster del-node ip:端口 6387节点ID
root@ubuntu:/data# redis-cli --cluster del-node 192.168.3.174:6387 cd1c83fcd01b02b1e154b902c8064df9a0b5b17b
>>> Removing node cd1c83fcd01b02b1e154b902c8064df9a0b5b17b from cluster 192.168.3.174:6387
>>> Sending CLUSTER FORGET messages to the cluster...
>>> Sending CLUSTER RESET SOFT to the deleted node.
root@ubuntu:/data# redis-cli --cluster check 192.168.3.174:6381                                            
192.168.3.174:6381 (6531fb8e...) -> 0 keys | 5461 slots | 1 slaves.
192.168.3.174:6382 (30834d61...) -> 0 keys | 5462 slots | 1 slaves.
192.168.3.174:6383 (3d1cae66...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.3.174:6381)
M: 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82 192.168.3.174:6381
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: 30834d61fa38d4eeabfe5ebf629e04f854b62630 192.168.3.174:6382
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 6f510805bb69c2788c5bef4ae277b9da72acfcba 192.168.3.174:6385
   slots: (0 slots) slave
   replicates 30834d61fa38d4eeabfe5ebf629e04f854b62630
M: 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e 192.168.3.174:6383
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 9be29344da240777cfb590fd51597e5e73af5788 192.168.3.174:6384
   slots: (0 slots) slave
   replicates 6531fb8ee7c9f6f7121dcb9cbddb9ece0da9da82
S: 09f82b8f1e3e37cb1e5119a22fb30f5f8492a0a9 192.168.3.174:6386
   slots: (0 slots) slave
   replicates 3d1cae66bd89e258a4840885b5cf3f24c26c8a1e
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值