您当前的位置:首页 > 电脑百科 > 程序开发 > 容器

Docker搭建Redis主从复制+哨兵模式

时间:2021-07-26 10:32:36  来源:  作者:石老师小跟班

环境要求

  • ubuntu系统:20.04
  • Docker版本:20.10.7
  • redis版本:6.0.6

步骤

由于我这里已经有相应的redis镜像,这里就不记录了,关于docker一些基础知识可以看我以前的笔记

开启3台redis服务,一个当作master,另两个当slave

#这里就把配置文件和数据映射到宿主机中了,如果是生产环境下,需要这做映射

#开启主服务,端口6379

docker run --name redis-master -d -p 6379:6379 redis:6.0.6

#开启2台从服务,端口6380,6381

docker run --name redis-slave1 -d -p 6380:6379 redis:6.0.6

docker run --name redis-slave2 -d -p 6381:6379 redis:6.0.6

Docker搭建Redis主从复制+哨兵模式

 

配置主从

这里演示就写配置文件了,这样的话,服务重启后就失效了,这里主要是记录一下过程,就 省略了....

查看各个服务的ip地址

docker inspect 容器id或者使用 docker network inspect bridge查看ip地 址

#ip地址如下

#master

172.17.0.2

#slave1

172.17.0.3

#slave2

172.17.0.4

进入容器内部,设置主从配置

master主机

#进入容器

docker exec -it redis-master /bin/bash

#执行redis-cli命令

redis-cli

#执行info replication 查看主从信息

info replication

执行info replication 查看主从信息

Docker搭建Redis主从复制+哨兵模式

 

在没有设置主从时,每个redis服务的角色都是master

在两台从服务器上执行如下命令

在从服务器上配置主服务器ip+端口号

#命令如下

slaveof 172.17.0.2 6379

#172.17.0.2 master的ip

#6379 master的端口

通过 info replication 查看role已经变成slave

Docker搭建Redis主从复制+哨兵模式

 

在master 服务器上使用info replication查看信息

这里可以看到如下信息,说明主从搭建完成了

Docker搭建Redis主从复制+哨兵模式

 

测试

#在master上写值,可以在从服务器上读取到,这里图略

注意

当设置完主从后,写数据只能从master 写入,不能在从服务器上写入,会报错

Docker搭建Redis主从复制+哨兵模式

 

问题

如果master由于某种原因挂了,咋办,在以前的版本只能手工处理切换,现在可以哨兵来解决!

生产环境使用的哨兵模式搭建主从

创建一个哨兵服务

我这里由于是测试,只开启了一个哨兵服务,如果是线上需要开启多台,来保证高可用,最好设置成3台以上

#开启一个哨兵docker服务
docker run -d --name redis-sentinel -p 26379:26379 redis:6.0.6
#26379 redis-sentinel默认端口,需要做下端口映射,要不无法进行通信

进入到redis-sentinel容器中进行配置

进入容器

docker exec -it redis-sentinel /bin/bash

创建sentinel.conf 文件

#由于容器里没有vim,vi编辑器,为了保持容器最小化,我这里使用echo进行操作

echo "sentinel monitor mymaster 172.2.0.2 6379 1" >> sentinel.conf

#添加后台运行,我 这里为了方便截图,并没有设置后台运行

echo "daemonize yes" >>sentinel.conf

#也可以指定目录

echo "logfile "/log.txt"" >>sentinel.conf

启动

redis-sentinel sentinel.conf

Docker搭建Redis主从复制+哨兵模式

 

测试

把redis-master停掉,来看下是否能自动切换master

关闭redis-master

docker stop redis-master

等待30s后,查看redis-sentinel日志

Docker搭建Redis主从复制+哨兵模式

 

这里可以看到,已经把redis-slave2切换成了master,进入到redis-slave2容器中,可以看到如下图

Docker搭建Redis主从复制+哨兵模式

 

问题

如果再把redis-master重启后,它还会继续当master吗? 答案是:不会,

如下图

Docker搭建Redis主从复制+哨兵模式

 

总结

其实这咱哨兵模式会在生产环境下用的最多,sentinel.conf里的配置也不是和上面那样简单,接下来说下sentinel.conf配置文件里常用的一些配置

sentinel.conf常用配置

#端口

port 26379 #可以修改

#监听

sentinel monitor <master-name> <ip> <port> <quorum>

#master-name 可以自定义

#quorum 是一个数字:当有多个sentinel时,指明当有多少个sentinel认为一个master失效时,master才算真正失效,比方说:如果是数字3,则说明得有3个sentinel说master失效时,master才真正的客观下线

#ip 要写master的真正ip

sentinel monitor mymaster 172.2.0.2 6379 3

#设置连接master和slave时的密码,master和slave密码应该一样

sentinel auth-pass <master-name> <password>

#设置失效时间,单位毫秒 默认为30s

sentinel down-after-milliseconds <master-name> <milliseconds>

#例如

sentinel down-after-milliseconds mymaster 30000

# sentinel parallel-syncs <master-name> <numslaves>

#这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行 同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越 多的slave因为replication而不可用。可以通过将这个值设为 1 来保证每次只有一个slave 处于不能处理命令请求的状态。

# sentinel failover-timeout <master-name> <milliseconds>

#failover-timeout 可以用在以下这些方面:

# 1. 同一个sentinel对同一个master两次failover之间的间隔时间。

# 2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。

# 3.当想要取消一个正在进行的failover所需要的时间。

# 4.当进行failover时,配置所有slaves指向新的master所需的最大时间。不过,即使过了这个超时,slaves依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了。

# sentinel的notification-script和reconfig-script 是用来配置当某一事件发生时所需要执行的脚本,可以通过脚本来通知管理员,例如当系统运行不正常时发邮件通知相关人员。对于脚本的运行结果有以下规则:

#若脚本执行后返回1,那么该脚本稍后将会被再次执行,重复次数目前默认为10

#若脚本执行后返回2,或者比2更高的一个返回值,脚本将不会重复执行。

# 如果脚本在执行过程中由于收到系统中断信号被终止了,则同返回值为1时的行为相同。

# 一个脚本的最大执行时间为60s,如果超过这个时间,脚本将会被一个SIGKILL信号终止,之后重新执行。

sentinel notification-script <master-name> <script-path>

#当一个master由于failover而发生改变时,这个脚本将会被调用,通知相关的客户端关于master地址已经发生改变的信息

sentinel client-reconfig-script <master-name> <script-path>



Tags:Redis主从复制   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
环境要求 ubuntu系统:20.04 docker版本:20.10.7 redis版本:6.0.6步骤由于我这里已经有相应的redis镜像,这里就不记录了,关于docker一些基础知识可以看我以前的笔记开启3台re...【详细内容】
2021-07-26  Tags: Redis主从复制  点击:(117)  评论:(0)  加入收藏
一、什么是Redis主从复制?主从复制就是现在有两台redis服务器,把一台redis的数据同步到另一台redis数据库上。前者称之为主节点(master),后者为从节点(slave)。数据是只能master往...【详细内容】
2020-06-02  Tags: Redis主从复制  点击:(95)  评论:(0)  加入收藏
Redis的主从复制机制是指可以让从服务器(slave)能精确复制主服务器(master)的数据,如下图所示:...【详细内容】
2019-09-06  Tags: Redis主从复制  点击:(156)  评论:(0)  加入收藏
▌简易百科推荐
一、为什么要搭建主从架构呢1.数据安全,可以进行数据的备份。2.读写分离,大部分的业务系统来说都是读数据多,写数据少,当访问压力过大时,可以把读请求给到从服务器。从而缓解数据...【详细内容】
2021-12-15  实战Java    Tags:Docker   点击:(10)  评论:(0)  加入收藏
在网页中渲染公式一直是泛学术工具绕不开的一个功能,最近更新产品功能,正巧遇到了这个需求,于是使用容器方式简单实现了一个相对靠谱的公式渲染服务。分享出来,希望能够帮到有类...【详细内容】
2021-12-01  编程菌zfn    Tags:Docker   点击:(10)  评论:(0)  加入收藏
1.1 docker命令直接部署1.1.1 拉取镜像docker pull wurstmeister/zookeeperdocker pull wurstmeister/kafka1.1.2 启动zookeeper容器docker run -d --name myzookeeper -p 2...【详细内容】
2021-11-15  无    Tags:docker   点击:(47)  评论:(0)  加入收藏
01 前言 顺着docker的发展,很多测试的同学也已经在测试工作上使用docker作为环境基础去进行一些自动化测试,这篇文章主要讲述我们在docker中使用浏览器进行自动化测试如果可以...【详细内容】
2021-10-29  小码哥聊软件测试    Tags:Docker   点击:(42)  评论:(0)  加入收藏
因为你懂得的原因,下载docker镜像速度非常喜感,故收集几个国内常用的docker镜像。Docker中国区官方镜像地址:https://registry.docker-cn.com网易163的镜像http://hub-mirror.c...【详细内容】
2021-10-28  抓蛙程序猿    Tags:docker   点击:(48)  评论:(0)  加入收藏
环境:Spring5.3.10通常,应用程序开发人员不需要对ApplicationContext实现类进行子类化。相反,SpringIOC容器可以通过插入特殊集成接口的实现来扩展。使用BeanPostProcessor自定...【详细内容】
2021-10-26  Java网络研发架构师    Tags:Spring   点击:(33)  评论:(0)  加入收藏
我们在很多场景下都需要做笔记,来对抗遗忘,一份好的笔记不仅能在需要的时候供我们查阅,也能帮助我们归纳整理知识提高做事效率。 目前市面上有很多云笔记软件,体验上各有不同,但...【详细内容】
2021-10-11  运维贼船    Tags:docker   点击:(61)  评论:(0)  加入收藏
1. Nacos官网Nacos Docker 快速开始2. Clone 项目git clone https://github.com/nacos-group/nacos-docker.git3. cd 到nacos-docker 路径下 直接启动即可cd nacos-dockerdo...【详细内容】
2021-09-16  程序狗爱化妆    Tags:Nacos   点击:(109)  评论:(0)  加入收藏
今天不做保姆级教程,分享奶爸常用、好用的Docker应用。有了这些Docker,Nas的可玩性会大幅提高,有时候奶爸也在想,刨去官方套件不考虑的话,Nas真的是差不多。如果小伙伴们有需要,后...【详细内容】
2021-09-03  晋升奶爸的垃圾佬    Tags:Docker   点击:(167)  评论:(0)  加入收藏
环境要求 ubuntu系统:20.04 docker版本:20.10.7 redis版本:6.0.6步骤由于我这里已经有相应的redis镜像,这里就不记录了,关于docker一些基础知识可以看我以前的笔记开启3台re...【详细内容】
2021-07-26  石老师小跟班    Tags:Redis主从复制   点击:(117)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条