Docker集群部署-redis集群

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

学习要求

利用Docker实现redis 集群的部署实现3主3从集群配置并在此基础上实现主从扩容、缩容。

学习准备

要求实验主机能够连接外网已经正确安装Docker并关闭防火墙和selinux。

学习步骤

  1. 创建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 个从节点。
  • 集群中的主节点和从节点信息

    • 主节点 5fe2c732e6713d368326567450161e9f44272de810.90.6.82:6382负责 5461 到 10922 的槽位范围有 1 个从节点。
    • 主节点 abb3dde0a500eb4c5869c4789c25204dad05296c10.90.6.82:6383负责 10923 到 16383 的槽位范围有 1 个从节点。
    • 主节点 2f672aab2c68a5093b9aec58af6098370234a93a10.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的找到组织加入集群

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: redisDocker