Linux基于Docker的Redis主从复制、哨兵模式搭建
本教程基于CentOS7,开始本教程前,请确保您的Linux系统已安装Docker。
1.使用docker下载redis镜像
docker pull redis
安装完成后,使用docker images命令,查看是否安装成功

2.redis集群搭建
(1)使用以下命令启动3个Redis
docker run --name redis-node1 -p 6379:6379 -d docker.io/redis
docker run --name redis-node2 -p 6380:6380 -d docker.io/redis
docker run --name redis-node3 -p 6381:6381 -d docker.io/redis
(2)使用docker ps命令,查看是否启动成功

(3)分别使用 docker inspect 容器名字命令,查看3个Redis的Docker内网IP地址

在Networks栏,可以看见该容器的Docker内网IP地址

同理,查看redis-node2和redis-node3的Docker内网IP
(4)进入三个redis容器的内部
进入容器内部命令:docker exec -it 容器id/容器名称 /bin/bash
进入redis-node1内部:

(5)进入redis客户端
redis-cli

(6)测试对单个redis进行set值或get值

如果能set、get能成功,那么单个redis是没有问题的
接下来开始搭建主从复制的redis集群
3.主从复制搭建
(1)进入redis客户端后,使用 info replication 查看当前机器的角色
info replication

发现现在的redis-node1是master(主人),同理redis-node2和redis-node3也是master
现在我要将redis-node2和redis-node3变为slave(仆从)
(2)进入redis-node2容器,并进入客户端
1 docker exec -it redis-node2 /bin/bash
2 redis-cli
使用 SLAVEOF 172.17.0.1 6379 命令将redis-node2变为redis-node1的从结点,172.17.0.1是前面获取的redis-node1的容器内IP,6379是redis-node1的端口号

再使用 info replication查看当前机器角色

可以发现redis-node2已经变成redis-node1从结点了。
同理,进入redis-node3容器,并进入客户端,使用 SLAVEOF 172.17.0.1 6379 命令将redis-node3变为redis-node1的从结点。
我们再次进入redis-node1容器查看机器角色:

此时的redis-node1当中显示有两个从结点了。
(3)测试主从复制
我们在redis-node1 set一个数据,测试redis-node2和redis-node3能否获取该数据。
redis-node1容器中:

redis-node2容器中:

我们发现redis-node1的数据成功同步到了redis-node2中!我们再看redis-node3
redis-node3容器中:

同样成功了。
注意:主结点可以读写,从结点只能读不能写!

如图所示,从结点写数据会报错。
这样我们redis的主从复制就搭建完毕了。
主从复制虽然可以一定程度上增加resdis集群的可用性,但是如果主结点宕机我们需要手动为从结点指定新的主结点,这很不方便也不符合生产环境的需要,所以我们引入了哨兵模式。
4.配置redis哨兵
分别进入3台Redis容器内部,执行以下操作
首先,进入Docker容器内部:
进入三台redis容器:docker exec -it 容器id/容器名称 /bin/bash
更新依赖命令:apt-get update
安装vim命令:apt-get install -y vim
然后,编写Redis哨兵配置文件:
使用 cd / 命令,进入根目录
使用 vim sentinel.conf命令,创建哨兵配置文件
添加以下内容 sentinel monitor host6379 172.17.0.1 6379 1
最后,启动Redis哨兵:
使用 redis-sentinel /sentinel.conf 启动Redis哨兵监控
使用 ps –ef |grep redis 命令,可以看到redis-server和redis-sentinel正在运行
注意:三个redis容器都要执行上面的操作
完成后,哨兵会监视主结点状态,如果主结点宕机,30s后会从从结点当中选择一个作为主结点,如果后面原主结点重新连接,原主结点会变为新主结点的从结点。
至此,Linux基于Docker的Redis主从复制、哨兵模式搭建完毕。
Linux基于Docker的Redis主从复制、哨兵模式搭建的更多相关文章
- Redis进阶:Redis的哨兵模式搭建
Redis进阶:Redis的哨兵模式搭建 哨兵机制介绍 单机版的Redis存在性能瓶颈,Redis通过提高主从复制实现读写分离,提高了了Redis的可用性,另一方便也能实现数据在多个Redis直接的备 ...
- 基于 docker 的redis 主从+哨兵(快速部署)
很简单(字多的步骤见:http://www.cnblogs.com/vipzhou/p/8580495.html) 1.直接启动3个容器 docker network create --subnet ...
- 【Redis】Redis Sentinel 哨兵模式搭建
Redis Sentinel介绍 Redis Sentinel是Redis的官方高可用性解决方案 Redis Sentinel为Redis提供高可用性.实际上,这意味着使用Sentinel可以创建一个 ...
- 浅谈:redis的主从复制 + 哨兵模式
浅谈:redis的主从复制 + 哨兵模式 主从模式 在谈论redis的主从复制之前,我们先回想下mysql的主从搭建过程,第一步呢首先要在主库服务器中修改my.cnf,开启一下bin_log功能, ...
- Redis-Sentinel Redis的哨兵模式
Redis-Sentinel Redis的哨兵模式Redis Sentinel 模式简介Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高可用方案时, ...
- 【运维技术】redis(一主两从三哨兵模式搭建)记录
redis(一主两从三哨兵模式搭建)记录 目的: 让看看这篇文章的的人能够知道:软件架构.软件的安装.配置.基本运维的操作.高可用测试.也包含我自己,能够节省对应的时间. 软件架构: 生产环境使用三台 ...
- redis的哨兵模式
我是在一台服务器上安装了三个redis 一主两从 想安装gcc gcc-c++ make tcl lrzsz yum -y install gcc gcc-c++ make tcl lrzsz ...
- 基于Docker的Mysql主从复制
基于Docker的Mysql主从复制搭建 为什么基于Docker搭建? 资源有限 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docker容器之间相 ...
- redis主从+redis的哨兵模式
三台机器分布 192.168.189.129 // master的角色 192.168.189.130 // slave1的角色 192.168.189.131 // salve2的角色 ...
随机推荐
- C++ 定义默认值void locals_index(int reg, int offset = 1);
看jvm源码的时候怎么也看不懂,来回看了几次了就是关于iload 6 指令的解析 def(Bytecodes::_lload , ubcp|____|____|____, vtos, ltos, ll ...
- Java文件I/O简单介绍
目录 一.File类 1.1 构造方法 1.2 常用方法 1.3 例子 二.基础I/O:字节流.字符流 2.1 字节流 2.1.1 字节输出流 OutputStream 2.1.2 FileOutpu ...
- ASP.NET中Textbox后的必填验证控件RequiredFieldValidator的使用方法。
制作效果如下: 实现方法: 1. 拖动RequiredFieldValidator控件到相应的textbox后位置,点击属性面板,输入ErroMessage相应信息,更改ForeColor为红色 设置 ...
- 论文笔记:(NIPS2017)PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space
目录 一. 存在的问题 1.提取局部特征的能力 2.点云密度不均问题 二.解决方案 1.改进特征提取方法: (1)采样层(sampling) (2)分组层(grouping) (3)特征提取层(fea ...
- Session与Cookie的原理以及使用小案例>从零开始学JAVA系列
目录 Session与Cookie的原理以及使用小案例 Cookie和Session所解决的问题 Session与Cookie的原理 Cookie的原理 Cookie的失效时机 小提示 Session ...
- Java的几种创建实例方法的性能对比(二)
上一篇里对几种书写方式进行了简单的测试,得出了一些初步的结论.这次简单了解Lambda原理后,对测试做了一些调整,发现得到不一样的结果,而这个调整,明显更契合实际开发的场景. 暂时还没有亲自去验证,主 ...
- 案例分享:Qt政务标签设计器,标签排版软件定制与打印
需求 1.标签设计器: 2.具备文字排版功能: 3.支持六种排版格式: 4.排版后可以输出打印(demo中不包含): 5.排版后可以输出标签的指定协议文本FBD格式: 6.可以调整对应标 ...
- CYPEESS USB3.0程序解读之---SPI读写
前面已经解读了GPIO以及同步FIFO操作,下面我们看一个SPI读写的例子,它是主程序命令从SPI中读写一些数据. SPI传输子程序看一下: 页地址,字节计数,缓冲区,读写标志 因为只能一页一页的读或 ...
- 【笔记】numpy.array基础(2)
numpy数组的基本操作 以几个数组为例 使用ndim可以显示出是几维数组 使用shape可以查看元素维度数 使用size可以查看元素个数 对一维数组进行数据访问 对多维数组进行数据访问 切片访问,使 ...
- DVWA(三):SQL injection 全等级SQL注入
(本文不定期更新) 一.所需环境: 1.DVWA 2.web环境 phpstudy/wamp 3.burp suite 二.SQL注入产生的原因: 程序员在编写代码的时候,没有对用户输入数据的合法性进 ...