Java   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了docker配置redis单机集群大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

本文集群为 三主三从

简要步骤

  • docker 拉取镜像
  • 创建redis容器
  • 启动容器
  • 组建集群
  • 测试集群

一、拉取镜像

默认拉取最新版

docker pull redis

使用 docker image 来查看已经拉取的镜像文件

二、创建redis容器

我们创建六个容器,以不同端口启动来模拟集群

  • redis-node1

  • redis-node2

  • redis-node3

  • redis-node4

  • redis-node5

  • redis-node6

    通过设置redis目录映射,我们只需要提前创建好如下目录接口。目录为空就好了

  • /data

    • /redis
      • /node1
      • /node6
docker create --name redis-node1 --net host -v /data/redis/node1:/data redis --cluster-enabled yes --cluster-config-file nodes-node-1.conf --port 6379

docker create --name redis-node2 --net host -v /data/redis/node2:/data redis --cluster-enabled yes --cluster-config-file nodes-node-2.conf --port 6380

docker create --name redis-node3 --net host -v /data/redis/node3:/data redis --cluster-enabled yes --cluster-config-file nodes-node-3.conf --port 6381

docker create --name redis-node4 --net host -v /data/redis/node4:/data redis --cluster-enabled yes --cluster-config-file nodes-node-4.conf --port 6382

docker create --name redis-node5 --net host -v /data/redis/node5:/data redis --cluster-enabled yes --cluster-config-file nodes-node-5.conf --port 6383

docker create --name redis-node6 --net host -v /data/redis/node6:/data redis --cluster-enabled yes --cluster-config-file nodes-node-6.conf --port 6384

docker配置redis单机集群

三、启动redis容器

我们创建的三个容器全部启动

docker start redis-node1 redis-node2 redis-node3 redis-node4 redis-node5 redis-node6

然后通过 docker ps -a 确认容器的启动状态,如果启动失败通过 docker logs 容器名称 来查看详细原因。

docker配置redis单机集群

状态显示 Up 则是启动成功。

四、组建集群

进入某一个容器进行集群组建。

docker exec -it redis-node1 /bin/bash
// ip地址改为自己的ip
redis-cli --cluster create 192.168.1.169:6379 192.168.1.169:6380 192.168.1.169:6381 192.168.1.169:6382 192.168.1.169:6383 192.168.1.169:6384 --cluster-replicas 1

参数解释

  • --cluster-replicas :表示每台主机有几台从机

组建结果输出较多此处用代码块展示:

// 组建集群
root@hadoop:/data# redis-cli --cluster create 192.168.1.169:6379 192.168.1.169:6380 192.168.1.169:6381 192.168.1.169:6382 192.168.1.169:6383 192.168.1.169:6384 --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.1.169:6383 to 192.168.1.169:6379
Adding replica 192.168.1.169:6384 to 192.168.1.169:6380
Adding replica 192.168.1.169:6382 to 192.168.1.169:6381
>>> Trying to optimize slaves alLOCATIOn for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: bb4b754405c74453b8d89ea7c5ae07cd7b3eff97 192.168.1.169:6379
   slots:[0-5460] (5461 slots) master
M: 202c625a79090488a21e01028e32ffbdbcc366ac 192.168.1.169:6380
   slots:[5461-10922] (5462 slots) master
M: df841b89329b4db0e122da08fd23c5f303048a8d 192.168.1.169:6381
   slots:[10923-16383] (5461 slots) master
S: 3b084c6da5b9fd0af746a7f0b48a373916577e1b 192.168.1.169:6382
   Replicates df841b89329b4db0e122da08fd23c5f303048a8d
S: 60875cd7da5ac16c38b888ff704c780225067dcd 192.168.1.169:6383
   Replicates bb4b754405c74453b8d89ea7c5ae07cd7b3eff97
S: 8757ec0686b3431edb8c9de284f3df8415669007 192.168.1.169:6384
   Replicates 202c625a79090488a21e01028e32ffbdbcc366ac
Can I set the above configuration? (type 'yes' to accept): yes   // 此处需要输入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.1.169:6379)   //下面是详细的主从关系
M: bb4b754405c74453b8d89ea7c5ae07cd7b3eff97 192.168.1.169:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 8757ec0686b3431edb8c9de284f3df8415669007 192.168.1.169:6384
   slots: (0 slots) slave
   Replicates 202c625a79090488a21e01028e32ffbdbcc366ac
M: df841b89329b4db0e122da08fd23c5f303048a8d 192.168.1.169:6381
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 3b084c6da5b9fd0af746a7f0b48a373916577e1b 192.168.1.169:6382
   slots: (0 slots) slave
   Replicates df841b89329b4db0e122da08fd23c5f303048a8d
M: 202c625a79090488a21e01028e32ffbdbcc366ac 192.168.1.169:6380
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 60875cd7da5ac16c38b888ff704c780225067dcd 192.168.1.169:6383
   slots: (0 slots) slave
   Replicates bb4b754405c74453b8d89ea7c5ae07cd7b3eff97
[OK] All nodes agree about slots configuration.
>>> check for open slots...
>>> check slots coverage...
[OK] All 16384 slots covered.

此时集群组建完毕。

五、测试集群

当我们集群成功搭建后,我们采用之前 keys * 的方式查询所有key只能查询当前节点的key。无法查看其他节点的key。

所以我们用如下命令查询所有节点的key

./redis-cli -c --cluster call 192.168.1.169:6379 keys \*

docker配置redis单机集群

此时可以看到我们所有节点的数据都是空的。我们连接集群添加15条记录。

// 进入容器
docker exec -it redis-node1 /bin/bash
// 连接集群
redis-cli -c
// 添加记录
set k1 v1
set k2 v2
set k3 v3
  ...
set k13 v13
set k14 v14
set k15 v15

docker配置redis单机集群

添加后我们再次查看各个节点的key

docker配置redis单机集群

可以看到数据以下面的关系进行主从复制。

​ 192.168.1.169:6379 == 192.168.1.169:6383

​ 192.168.1.169:6380 == 192.168.1.169:6384

​ 192.168.1.169:6381 == 192.168.1.169:6382

此时我们关闭 6380 节点,看看还能否查询到其中的key,也就是从机会不会接替主机的位置。

docker配置redis单机集群

成功!!!

大佬总结

以上是大佬教程为你收集整理的docker配置redis单机集群全部内容,希望文章能够帮你解决docker配置redis单机集群所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: