docker配置redis集群(基于Docker搭建Redis主从集群的实现)
docker配置redis集群
基于Docker搭建Redis主从集群的实现目录
- 1、拉取 Redis 镜像
- 2、创建 6 个 Redis 容器
- 3、启动 Redis 容器
- 4、组建 Redis 集群
- 5、关于Redis集群搭建
最近陆陆续续有不少园友加我好友咨询 redis 集群搭建的问题,我觉得一定是之前写的这篇 《基于Docker的Redis集群搭建》 文章有问题了,所以我花了几分钟浏览之前的文章总结了下面几个问题:
redis 数量太少,只创建了 3 个实例;由于只有 3 个实例,所以全部只能是主节点,无法体现集群主从关系;如何搭建主从集群?如何分配从节点?
基于之前的文章,我想快速的过一下这几个问题,本文基于 Docker + Redis 5.0.5 版本,通过 cluster 方式创建一个 6 个 redis 实例的主从集群,当然文章会指出相应的参数说明,这样即便是创建 9 个实例的集群方式也是一样的。
1、拉取 Redis 镜像基于 Redis:5.0.5 版本,执行如下指令:
docker pull redis:5.0.5
创建 6 个Redis 容器:
- redis-node1:6379
- redis-node2:6380
- redis-node3:6381
- redis-node4:6382
- redis-node5:6383
- redis-node6:6384
执行命令如下:
docker create --name redis-node1 --net host -v /data/redis-data/node1:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-1.conf --port 6379 docker create --name redis-node2 --net host -v /data/redis-data/node2:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-2.conf --port 6380 docker create --name redis-node3 --net host -v /data/redis-data/node3:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-3.conf --port 6381 docker create --name redis-node4 --net host -v /data/redis-data/node4:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-4.conf --port 6382 docker create --name redis-node5 --net host -v /data/redis-data/node5:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-5.conf --port 6383 docker create --name redis-node6 --net host -v /data/redis-data/node6:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-6.conf --port 6384
部分参数解释:
- --cluster-enabled:是否启动集群,选值:yes 、no
- --cluster-config-file 配置文件.conf :指定节点信息,自动生成
- --cluster-node-timeout 毫秒值: 配置节点连接超时时间
- --appendonly:是否开启持久化,选值:yes、no
执行命令截图:
3、启动 Redis 容器执行命令如下:
docker start redis-node1 redis-node2 redis-node3 redis-node4 redis-node5 redis-node6
启动截图如下:
4、组建 Redis 集群进入任意一个 Redis 实例:
# 这里以 redis-node1 实例为例 docker exec -it redis-node1 /bin/bash
执行组件集群的命令:
# 组建集群,10.211.55.4为当前物理机的ip地址 redis-cli --cluster create 10.211.55.4:6379 10.211.55.4:6380 10.211.55.4:6381 10.211.55.4:6382 10.211.55.4:6383 10.211.55.4:6384 --cluster-replicas 1
执行命令截图如下:
创建成功后,通过 redis-cli 查看一下集群节点信息:
root@CentOS7:/data# redis-cli 127.0.0.1:6379> cluster nodes
执行命令截图如下:
5、关于Redis集群搭建我们再回到创建集群的命令上:
redis-cli --cluster create 10.211.55.4:6379~6384 --cluster-replicas 1
大家着重看这个参数 --cluster-replicas 1,参数后面的数字表示的是主从比例,比如这里的 1 表示的是主从比例是 1:1,什么概念呢?
也就是 1 个主节点对应几个从节点,现有 6 个实例,所以主从分配就是 3 个 master 主节点,3 个 slave 从节点。
主节点最少3个,3个才能保证集群的健壮性。
如果 --cluster-replicas 2 呢?
那么主从比例就是 1:2,也就是 1 个主节点对于应 2 个从节点。
即:3(master) + 6(slave) = 9个 Redis 实例。
如果不足 9个 Redis 实例,但是参数指定为 2 会怎么样?
报错信息如下:
提示已经很清楚了,Redis集群至少需要3个主节点。那么从节点就需要有6个,所以最后说:至少需要9个节点。
好的,至少3个主节点的要求我不继续刚了,但是我想4个主节点,2个从节点,这总该可以了吧?
4个主节点满足你:
# 进入一个启动的 reids 实例,这里以 redis-node1 实例为例 docker exec -it redis-node1 /bin/bash
执行组建集群的命令:
redis-cli --cluster create 10.211.55.4:6379 10.211.55.4:6380 10.211.55.4:6381 10.211.55.4:6382 --cluster-replicas 0
指定4个没有从节点的主节点,这样你就有4个主节点了:
剩下的两个从节点怎么办呢?手动添加。
怎么添加?手动添加!
看到这些 master 节点的 id 了吗,只需要把 slave 指定给他们就可以了。
继续执行如下命令:
redis-cli --cluster add-node 10.211.55.4:6383 10.211.55.4:6379 --cluster-slave --cluster-master-id b0c32b1dae9e7b7f7f4b74354c59bdfcaa46f30a redis-cli --cluster add-node 10.211.55.4:6384 10.211.55.4:6379 --cluster-slave --cluster-master-id 111de8bed5772585cef5280c4b5225ecb15a582e
将两个 Redis 实例塞给其他主节点了:
最后我们进入 redis-cli,通过 cluster nodes 查看一下节点信息:
到此这篇关于基于Docker搭建Redis主从集群的实现的文章就介绍到这了,更多相关Docker Redis主从集群内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- dockerswarm 均衡策略(以示例讲解Clickhouse Docker集群部署以及配置)
- docker安装与使用教程(5分钟安装docker详细步骤)
- docker-compose查看服务状态(Docker+DockerCompose封装web应用的方法步骤)
- docker远程部署(Docker内网穿透frp部署实现过程解析)
- docker怎么使用supervisor(supervisor下的Dockerfile的多服务镜像封装操作)
- dockervolume文件权限(docker volumes 文件映射方式)
- docker 容器经常启动失败(浅谈Docker run 容器处于created状态问题)
- idea生成dockerfile(idea集合docker实现镜像打包一键部署)
- docker 镜像mysql(解决docker拉取mysql镜像太慢的情况)
- 服务器使用docker(使用ssh连接docker服务器的方法)
- springboot项目部署到docker(IDEA 通过docker插件发布springboot项目的详细教程)
- docker进入容器的方法(docker容器里面的root权限获取方法)
- docker与本地存储(docker 设置windows存储路径的操作)
- idea 启动docker容器不重新打包(Docker遇到Intellij IDEA,Java开发提升了十倍生产力)
- docker-compose配置文件(Docker Compose在不同环境的多种安装方式)
- docker怎么部署node-exporter(Docker搭建部署Node项目的方法步骤)
- 营养餐是什么(学校营养餐是什么)
- 谁说女子不如男 范冰冰演的武则天只是其一,另外两位你认识吗(谁说女子不如男)
- 杯酒人生---瓦伦丁酒杯和奥丁格啤酒(杯酒人生---瓦伦丁酒杯和奥丁格啤酒)
- 中秋节买啤酒,预算超过7元试试这8种啤酒,麦香浓郁都是真啤酒(预算超过7元试试这8种啤酒)
- CellPress旗下的6 期刊,国人友刊来了解一下吧(CellPress旗下的6期刊国人友刊来了解一下吧)
- ()
热门推荐
- sql server中策略管理
- ftp总是出现错误(FTP出现500 OOPS: cannot change directory的解决方法)
- mysql显示所有数据库语句(MySQL数据库自动补全命令的三种方法)
- sqlserver2012登录出现报错18456(SQL Server 2012 sa用户登录错误18456的解决方法)
- docker保存容器的配置文件(docker cp 拷贝文件 和 进入容器的操作)
- php启用curl(php使用curl伪造浏览器访问操作示例)
- 织梦dedecms的时间调用标签(dedecms/织梦专题节点列表内容实现分页的方法介绍)
- 阿里云服务器怎么设置防御网站(阿里云服务器的一些常用安全优化方法整理)
- VS中使用Unit Test Generator进行单元测试
- 将docker中的镜像打包教程(本地使用docker打包部署镜像的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9