目录
4.1 新增机器 6387 6388 (run image 变成镜像)
4.2 将6387节点(空槽号)作为master节点加入原集群
5.2 将6387(Master)的槽号清空,重新分配 (平均分给其他3个master)
1~2亿条数据需要存储,轻微如何设计这个存储案例?
答:单机单台100%不可能,肯定是分布式存储。redis如何落地?
一般业界有3种解决方案:
(1) 哈希取余分区
(2)一致性哈希算法分区
(3)哈希槽分区
详细解释参考之前的文档: Redis 集群(cluster)_redis集群不用哨兵-优快云博客
1. 3主3从架构说明
2. 3主3从Redis集群配置
2.1关闭防火墙+启动docker后台服务
sudo systemctl stop firewalld
systemctl start docker
2.2 新建6个docker容器实例
docker run -d --name redis-node-1 --net host --privileged=true -v /mydocker/redis/share/redis-node-1:/data redis:7.2.4 --cluster-enabled yes --appendonly yes --port 6381
docker run -d --name redis-node-2 --net host --privileged=true -v /mydocker/redis/share/redis-node-2:/data redis:7.2.4 --cluster-enabled yes --appendonly yes --port 6382
docker run -d --name redis-node-3 --net host --privileged=true -v /mydocker/redis/share/redis-node-3:/data redis:7.2.4 --cluster-enabled yes --appendonly yes --port 6383
docker run -d --name redis-node-4 --net host --privileged=true -v /mydocker/redis/share/redis-node-4:/data redis:7.2.4 --cluster-enabled yes --appendonly yes --port 6384
docker run -d --name redis-node-5 --net host --privileged=true -v /mydocker/redis/share/redis-node-5:/data redis:7.2.4 --cluster-enabled yes --appendonly yes --port 6385
docker run -d --name redis-node-6 --net host --privileged=true -v /mydocker/redis/share/redis-node-6:/data redis:7.2.4 --cluster-enabled yes --appendonly yes --port 6386
--net host : 使用宿主机deIP和端口,默认
--privileged=true :容器卷,宿主机地址:docker内部地址
--cluster-enabled yes : 开启redis集群
--appendonly yes : 开启持久化
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6618c6a22bc3 redis:7.2.4 "docker-entrypoint.s…" 7 seconds ago Up 6 seconds redis-node-6
edab1b644f47 redis:7.2.4 "docker-entrypoint.s…" 15 seconds ago Up 14 seconds redis-node-5
d4cd712628c4 redis:7.2.4 "docker-entrypoint.s…" 23 seconds ago Up 22 seconds redis-node-4
7f09330818f1 redis:7.2.4 "docker-entrypoint.s…" 32 seconds ago Up 31 seconds redis-node-3
3fab905c25d6 redis:7.2.4 "docker-entrypoint.s…" 40 seconds ago Up 39 seconds redis-node-2
8fa8521a26d3 redis:7.2.4 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes redis-node-1
[root@192 ~]#
2.3 进去任意一台redis容器,为6台机器构建集群关系
redis-cli --cluster create 192.168.217.149:6381 192.168.217.149:6382 192.168.217.149:6383 192.168.217.149:6384 192.168.217.149:6385 192.168.217.149:6386 --cluster-replicas 1
--cluster-replicas 1 : 表示为每个master创建一个slave节点
2.4 进去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:208
cluster_stats_messages_pong_sent:227
cluster_stats_messages_sent:435
cluster_stats_messages_ping_received:222
cluster_stats_messages_pong_received:208
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:435
total_cluster_links_buffer_limit_exceeded:0
127.0.0.1:6381> cluster nodes
826c4e0230f439eb8aca84e3fa6842e0740ee7e2 192.168.217.149:6385@16385 slave 9829684324fd8294650429a00a6ad7dc32ca5357 0 1711277651000 2 connected
2359f4b4eb3d7843ce721a4032b8931f20752cf1 192.168.217.149:6381@16381 myself,master - 0 1711277651000 1 connected 0-5460
da41e72bb921e0c1d013f82df1c481dafb89e91e 192.168.217.149:6386@16386 slave b8b0f5a32e98ef3790108a0009a2e7c8c6115114 0 1711277651740 3 connected
9cd36c05e6125a3251fe7ba937af24da95599617 192.168.217.149:6384@16384 slave 2359f4b4eb3d7843ce721a4032b8931f20752cf1 0 1711277652748 1 connected
b8b0f5a32e98ef3790108a0009a2e7c8c6115114 192.168.217.149:6383@16383 master - 0 1711277652000 3 connected 10923-16383
98296843