大佬教程收集整理的这篇文章主要介绍了docker配置redis单机集群,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文集群为 三主三从
默认拉取最新版
docker pull redis
使用 docker image
来查看已经拉取的镜像文件
我们创建六个容器,以不同端口启动来模拟集群
redis-node1
redis-node2
redis-node3
redis-node4
redis-node5
redis-node6
通过设置redis目录映射,我们只需要提前创建好如下目录接口。目录为空就好了
/data
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 start redis-node1 redis-node2 redis-node3 redis-node4 redis-node5 redis-node6
然后通过 docker ps -a
确认容器的启动状态,如果启动失败通过 docker logs 容器名称
来查看详细原因。
状态显示 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
参数解释
组建结果输出较多此处用代码块展示:
// 组建集群
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 \*
此时可以看到我们所有节点的数据都是空的。我们连接集群添加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
添加后我们再次查看各个节点的key
可以看到数据以下面的关系进行主从复制。
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单机集群所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。