Docker集群部署-redis集群
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
学习要求
利用Docker实现redis 集群的部署实现3主3从集群配置并在此基础上实现主从扩容、缩容。
学习准备
要求实验主机能够连接外网已经正确安装Docker并关闭防火墙和selinux。
学习步骤
- 创建6个docker容器实例redis-node-1redis-node-2redis-node-3redis-node-4redis-node-5redis-node-6
--cluster-enabled yes 开启redis集群
--appendonly yes 开启持久化
# docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:6.0.8 --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.8 --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.8 --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.8 --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.8 --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.8 --cluster-enabled yes --appendonly yes --port 6386
2进入容器redis-node-1
# docker exec -it redis-node-1 /bin/bash
3构建主从关系
#redis-cli --cluster create 192.168.111.147:6381 192.168.111.147:6382 192.168.111.147:6383 192.168.111.147:6384 192.168.111.147:6385 192.168.111.147:6386 --cluster-replicas 1
--cluster-replicas 1 表示为每个master创建一个slave节点
注意这条语句的含义--------------------------ip地址要换成你自己的ip地址
redis-cli --cluster create
命令用于创建一个 Redis 集群。
192.168.111.147:6381 192.168.111.147:6382 192.168.111.147:6383 192.168.111.147:6384 192.168.111.147:6385 192.168.111.147:6386
这是用于构建集群的 Redis 实例的地址和端口号。在这个例子中六个实例分别在相同的主机IP 地址为 192.168.111.147上的不同端口上运行。每个实例都需要提供 host:port 的形式用空格分隔。也就是ip地址端口号这条命令执行之后
Redis 集群将使用提供的实例地址和端口创建每个主节点都会有一个从节点。这样组成的集群将用于分布式存储和处理数据具备高可用性和可伸缩性的特点。
共有 6 个主节点和 6 个从节点总共 12 个节点。每个主节点负责指定的数据分片而从节点则用于提供冗余和高可用性。注意这个集群是在单个主机上构建的这在实际生产环境中可能不太常见通常在不同的主机上部署 Redis 节点以实现真正的分布式和高可用性
4进入6381节点查看节点状态
# redis-cli -p 6381
[root@slave3 ~]# docker exec -it redis-node-1 /bin/bash
root@slave3:/data# redis-cli -p 6381
127.0.0.1:6381> keys
redis-cli -p 6381
是使用 Redis 客户端连接到指定端口号为 6381 的 Redis 服务器的命令。
redis-cli
这是 Redis 客户端命令行工具的名称用于与 Redis 服务器建立连接并执行命令。-p 6381
这是选项参数-p
用于指定 Redis 服务器的端口号。在此示例中端口号设置为 6381。能够使用 Redis 客户端与运行在指定端口号为 6381 的 Redis 服务器进行交互。您可以在命令行中输入 Redis 命令例如 SET、GET 等以与 Redis 服务器进行通信并执行各种操作如存储和检索数据执行事务处理数据结构等
5查看节点信息
root@slave3:/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:7
cluster_my_epoch:7
cluster_stats_messages_ping_sent:106
cluster_stats_messages_pong_sent:108
cluster_stats_messages_sent:214
cluster_stats_messages_ping_received:108
cluster_stats_messages_pong_received:106
5重新进入6381节点加入-c参数优化路由
我进入6382节点因为迁移了
root@slave3:/data# redis-cli -p 6381 -c
127.0.0.1:6381> set keys1 value1
-> Redirected to slot [11605] located at 192.168.10.203:6383
OK
192.168.10.203:6383> set keys2 value2
-> Redirected to slot [7478] located at 192.168.10.203:6382
OK
6查看节点信息
每个节点的槽位分配情况
- 节点
10.90.6.82:6382
分配了 5462 个槽位拥有 4 个键和 1 个从节点。- 节点
10.90.6.82:6383
分配了 5461 个槽位拥有 4 个键和 1 个从节点。- 节点
10.90.6.82:6381
分配了 5461 个槽位拥有 1 个键和 1 个从节点。集群中的主节点和从节点信息
- 主节点
5fe2c732e6713d368326567450161e9f44272de8
10.90.6.82:6382
负责 5461 到 10922 的槽位范围有 1 个从节点。- 主节点
abb3dde0a500eb4c5869c4789c25204dad05296c
10.90.6.82:6383
负责 10923 到 16383 的槽位范围有 1 个从节点。- 主节点
2f672aab2c68a5093b9aec58af6098370234a93a
10.90.6.82:6381
负责 0 到 5460 的槽位范围有 1 个从节点。其它检查结果
- 所有节点就槽位配置达成一致。
- 所有的槽位16384都已被覆盖没有空槽位。
7停止主机6381
8查看节点信息
[root@slave3 ~]# docker exec -it redis-node-2 /bin/bash
root@slave3:/data# redis-cli -p 6382 -c
127.0.0.1:6382> cluster nodes
9扩容
docker run -d --name redis-node-7 --net host --privileged=true -v /data/redis/share/redis-node-7:/data redis:6.0.8 --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.8 --cluster-enabled yes --appendonly yes --port 6388
10进入容器
# docker exec -it redis-node-7 /bin/bash
11将新增的6387作为master节点加入集群
redis-cli --cluster add-node 自己实际IP地址:6387 自己实际IP地址:6381
6387 就是将要作为master新增节点
6381 就是原来集群节点里面的领路人相当于6387通过6381的找到组织加入集群