当前位置: 首页 > news >正文

linux使用docker实现redis主从复制和哨兵模式

目录

1. 拉取redis镜像

2.使用可视化redis工具

3. 设置从redis

4.设置哨兵模式

5. 使用docker-compose快速创建


1. 拉取redis镜像

docker pull redis

默认拉取最新的镜像。

然后pull结束后使用docker images检查镜像:

然后docker run创建container容器

首先创建主redis服务

先使用如下命令创建redis.conf文件和data文件夹用于存放docker container中的volume:

mkdir -p /home/test_redis/redis_master_1/conf
mkdir -p /home/test_redis/redis_master_1/data
touch /home/test_redis/redis_master_1/conf/redis.conf

然后vim /home/test_redis/redis_master_1/conf/redis.conf 编辑配置文件

主redis其实不需要配置,默认就好,所以redis.conf为空就可以

然后创建container容器:

docker run -d -p 6379:6379 --restart unless-stopped \
-v /home/test_redis/redis_master_1/data:/data \
-v /home/test_redis/redis_master_1/conf/redis.conf:/etc/redis/redis.conf \
--name redis_master_1 \
redis \
redis-server

然后复制到命令行运行

运行成功后:

2.使用可视化redis工具

使用redisinsight工具,官网:RedisInsight - The Best Redis GUI

然后下载安装:

这里下载需要填写各种信息。提供下载好的windows版本:

https://wwf.lanzouo.com/ihBUC1utxjmf
密码:hehb

我这里使用windows版本远程连接

填写ip和端口号

连接后是空,添加一个key

也可使用cli命令行工具

3. 设置从redis

这里另外创建一个redis容器

不过redis.conf需要修改。

首先创建文件夹和文件,这里直接复制

cd /home/test_redis/
mkdir -p redis_slave_1/data
mkdir -p redis_slave_1/conf
touch redis_slave_1/conf/redis.conf

然后编辑redis.conf,输入如下内容:

port 6380replicaof <ip地址> 6379

然后创建容器:

docker run -d -p 6380:6380 --restart unless-stopped \
-v /home/test_redis/redis_slave_1/data:/data \
-v /home/test_redis/redis_slave_1/conf/redis.conf:/etc/redis/redis.conf \
--name redis_slave_1 \
redis \
redis-server /etc/redis/redis.conf

然后用redisinsight连接6380端口

连接成功后在cli命令行键入 info replication命令:

说明已经连接上了。

查看一下Key:

成功复制了主redis的key。

然后测试在从redis创建key

报错,因为从redis只能复制主redis,即不能写。

尝试在主redis设置key:

从redis:

主从复制设置成功

然后再添加一个从redis

cd /home/test_redis/
cp -r redis_slave_1 reids_slave_2
rm redis_slave_2/data/*
vim redis_slave_2/conf/redis.conf

输入如下内容:

port 6381replicaof 121.37.188.69 6379

就改了一下端口

然后创建容器:

docker run -d -p 6381:6381 --restart unless-stopped \
-v /home/test_redis/redis_slave_2/data:/data \
-v /home/test_redis/redis_slave_2/conf/redis.conf:/etc/redis/redis.conf \
--name redis_slave_2 \
redis \
redis-server /etc/redis/redis.conf

在主redis的redisinsight窗口的cli命令行输入info replication

现在已经有两个从redis了。

检查一下新的从redis:

数据也复制过来了。

4.设置哨兵模式

这里还是使用之前pull的redis镜像,只不过更改了配置文件: sentinel.conf,redis-server运行时也是运行sentinel.conf文件。

然后运行如下命令:

cd /home/test_redis
cp -r redis_master_1 redis_sentinel_1
rm redis_sentinel_1/data/*
rm redis_sentinel_1/conf/*
touch redis_sentinel_1/conf/sentinel.conf
vim redis_sentinel_1/conf/sentinel.conf

输入如下内容:

sentinel monitor mymaster 121.37.188.69 6379 1

表示只需一个哨兵即可开启哨兵模式。

然后创建容器: 

docker run -d --restart unless-stopped \
-v /home/test_redis/redis_sentinel_1/data:/data \
-v /home/test_redis/redis_sentinel_1/conf/sentinel.conf:/etc/redis/sentinel.conf \
--name redis_sentinel_1 \
redis \
redis-sentinel /etc/redis/sentinel.conf

进入docker内部检查:

已经配置成功。

尝试关闭主redis模拟主redis故障

这里世界docker stop 停止主redis

docker stop redis_master_1

6380 redis

6381从redis

可以看到6380变为了主redis, 6381还是从redis

尝试设置6380的key:

6381:

6381成功更新

这时重启6379:

docker start redis_master_1

6379变为6380的从redis了,并且数据也复制了:

哨兵模式设置成功。

5. 使用docker-compose快速创建

前面总公设置了4个服务,使用docker-compose可以一次性部署:

cd /home
cp -r test_redis test_redis_2
cd /home/test_resis_2
rm */data/*

创建docker-compose.yml文件:

touch docker-compose.yml

输入如下内容:

version: '3'services:redis_master_1:ports:- "6379:6379"image: "redis"restart: unless-stoppedvolumes:- /home/test_redis_2/redis_master_1/data:/data- /home/test_redis_2/redis_master_1/conf/redis.conf:/etc/redis/redis.confcommand: redis-server /etc/redis/redis.confredis_slave_1:ports:- "6380:6380"image: "redis"restart: unless-stoppedvolumes:- /home/test_redis_2/redis_slave_1/data:/data- /home/test_redis_2/redis_slave_1/conf/redis.conf:/etc/redis/redis.confcommand: redis-server /etc/redis/redis.confredis_slave_2:ports:- "6381:6381"image: "redis"restart: unless-stoppedvolumes:- /home/test_redis_2/redis_slave_2/data:/data- /home/test_redis_2/redis_slave_2/conf/redis.conf:/etc/redis/redis.confcommand: redis-server /etc/redis/redis.confredis_sentinel_1:image: "redis"restart: unless-stoppedvolumes:- /home/test_redis_2/redis_sentinel_1/data:/data- /home/test_redis_2/redis_sentinel_1/conf/sentinel.conf:/etc/redis/sentinel.confcommand: redis-sentinel /etc/redis/sentinel.conf

结果:

测试:

测试可行,这里就不放图了。

使用docker-compose主要是方便部署。

相关文章:

linux使用docker实现redis主从复制和哨兵模式

目录 1. 拉取redis镜像 2.使用可视化redis工具 3. 设置从redis 4.设置哨兵模式 5. 使用docker-compose快速创建 1. 拉取redis镜像 docker pull redis 默认拉取最新的镜像。 然后pull结束后使用docker images检查镜像&#xff1a; 然后docker run创建container容器 首先…...

新版chrome 解决在http协议下无法调用摄像头和麦克风的问题(不安全)

解决办法&#xff1a;亲测可行 chrome浏览器地址栏中输入chrome://flags/#unsafely-treat-insecure-origin-as-secure&#xff0c;回车&#xff0c;如下图&#xff0c;将该选项置为Enabled&#xff0c; edge浏览器打开&#xff1a;edge://flags/#unsafely-treat-insecure-orig…...

机器学习入门项目二(逻辑回归)

如果输入数据长度为2&#xff0c;上一章的方程就无法满足需求了&#xff0c;需要修改方程&#xff1a; z w 1 x w 2 y b zw_1xw_2yb zw1​xw2​yb 数据产生器&#xff1a; import matplotlib.pyplot as plt import numpy as npclass DataGenerator2Input:"""…...

C++类引用的好处

简化代码&#xff1a;引用可以简化代码&#xff0c;使其更加易读和易懂。通过使用引用&#xff0c;可以避免在函数参数中复制大型对象&#xff0c;从而提高代码的效率和性能。 传递大型对象的效率高&#xff1a;使用引用作为函数参数传递大型对象时&#xff0c;不需要进行对象…...

从零自制docker-9-【管道实现run进程和init进程传参】

文章目录 命令行中输入参数长度过长匿名管道从父进程到子进程传参[]*os.File{}os.NewFile和io.ReadAllexe.LookPathsyscall.Execstrings.Split(msgStr, " ")/bin/ls: cannot access : No such file or directory代码 命令行中输入参数长度过长 用户输入参数过长或包…...

全量知识系统 程序详细设计 之 三种“活物” 之1(QA百度搜索 )

Q1. 今天聊聊 全知系统中 三种“活物”。先从他们的一个简单描述开始&#xff1a; 自主&#xff1a;计算机“集群”的“沉”与“浮”&#xff1b; 自然&#xff1a;AI “众生”的“世”和“界” &#xff1b;自由&#xff1a;人类 “公民”的“宇”或“宙”。 全知系统中的三…...

QT 线程之movetothread

上文列举了qt中线程的几种方法&#xff0c;其中2种方法最为常见。 这两种方法都少不了QThread类&#xff0c;前者继承于QThread类&#xff0c;后者复合QThread类。 本文以实例的方式描述了movetothread&#xff08;&#xff09;这种线程的方法&#xff0c;将QObject的子类移动…...

如何处理ubuntu22.04LTS安装过程中出现“Daemons using outdated libraries”提示

Ubuntu 22.04 LTS 中使用命令行升级软件或安装任何新软件时&#xff0c;您可能收到“Daemons using outdated libraries”&#xff0c;“Which services should be restarted?”的提示&#xff0c;提示下面列出备选的重启服务&#xff0c;如下。 使用以下命令&#xff0c;能够…...

跟TED演讲学英文:The inside story of ChatGPT‘s astonishing potential by Greg Brockman

The inside story of ChatGPT’s astonishing potential Link: https://www.ted.com/talks/greg_brockman_the_inside_story_of_chatgpt_s_astonishing_potential Speaker: Greg Brockman Date:April 2023 文章目录 The inside story of ChatGPTs astonishing potentialIntro…...

mybatis05:复杂查询:(多对一,一对多)

mybatis05&#xff1a;复杂查询&#xff1a;&#xff08;多对一&#xff0c;一对多&#xff09; 文章目录 mybatis05&#xff1a;复杂查询&#xff1a;&#xff08;多对一&#xff0c;一对多&#xff09;前言&#xff1a;多对一 &#xff1a; 关联 &#xff1a; 使用associatio…...

微电网优化:基于肝癌算法(Liver Cancer algorithm, LCA)的微电网优化(提供MATLAB代码)

一、微电网优化模型 微电网是一个相对独立的本地化电力单元&#xff0c;用户现场的分布式发电可以支持用电需求。为此&#xff0c;您的微电网将接入、监控、预测和控制您本地的分布式能源系统&#xff0c;同时强化供电系统的弹性&#xff0c;保障您的用电更经济。您可以在连接…...

VUE_H5页面跳转第三方地图导航,兼容微信浏览器

当前项目是uniapp项目&#xff0c;若不是需要替换uni.showActionSheet选择api onMap(address , organName , longitude 0, latitude 0){var ua navigator.userAgent.toLowerCase();var isWeixin ua.indexOf(micromessenger) ! -1;if(isWeixin) {const mapUrl_tx "…...

智慧安全运营:智能化运维,确保服务无忧

智慧安全运营&#xff1a;智能化运维&#xff0c;确保服务无忧 中国联通新一代全球智云数据中心采用先进的智能化运维管理系统&#xff0c;实现对数据中心设施、IT设备、能源消耗、环境参数等全方位、实时监控。通过物联网技术、人工智能算法以及大数据分析&#xff0c;运维团…...

R-tree总结

引言&#xff1a; 在处理空间数据和地理信息系统&#xff08;GIS&#xff09;中&#xff0c;高效的空间索引机制对于提升查询性能至关重要。R-tree是一种流行的平衡树数据结构&#xff0c;专门用于索引多维信息&#xff0c;如二维的地理坐标或三维的物体位置。它以其灵活性、高…...

Python 与机器学习,在服务器使用过程中,常用的 Linux 命令包括哪些?

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 本博客旨在分享在实际开发过程中&#xff0c;开发者需要了解并熟练运用的 Linux 操作系统常用命令。Linux 作为一种操作系统&#xff0c;与 Windows 或 MacOS 并驾齐驱&#xff0c;尤其在服务器和开发环…...

js通过Object.defineProperty实现数据响应式

目录 数据响应式属性描述符propertyResponsive 依赖收集依赖队列寻找依赖 观察器 派发更新Observer完整代码关于数据响应式关于Object.defineProperty的限制 数据响应式 假设我们现在有这么一个页面 <!DOCTYPE html> <html lang"en"><head><m…...

docker最简单教程(使用dockerfile构建环境)

一 手里有的东西 安装好的docker+dockerfile 二 操作 只需要在你的dockerfile文件下执行命令 docker build -t="xianhu/centos:gitdir" . 将用户名、操作系统和tag进行修改就可以了,这就相当于在你本地安装了一个docker环境,然后执行 docker run -it xianhu/ce…...

Vue2 —— 学习(三)

目录 一、绑定 class 样式 &#xff08;一&#xff09;字符串写法 1.流程介绍 2.代码实现 &#xff08;二&#xff09;数组写法 1.流程介绍 2.代码实现 &#xff08;三&#xff09;对象写法 1.流程介绍 2.代码实现 二、绑定 style 样式&#xff08;了解&#xff…...

Qt Creator 12.0.2 debug 无法查看变量的值 Expression too Complex

鼠标放在局部变量上提示“expression too complex”。 在调试窗口也看不到局部变量的值。 这应该是qt的一个bug&#xff0c;https://bugreports.qt.io/browse/QTCREATORBUG-24180 暂时解决方法&#xff1a; 如下图&#xff0c;需要右键项目然后执行"Clean"和&quo…...

LeetCode-Java:303、304区域检索(前缀和)

文章目录 题目303、区域和检索&#xff08;数组不可变&#xff09;304、二维区域和检索&#xff08;矩阵不可变&#xff09; 解①303&#xff0c;一维前缀和②304&#xff0c;二维前缀和 算法前缀和一维前缀和二维前缀和 题目 303、区域和检索&#xff08;数组不可变&#xff…...

出海业务的网络安全挑战

出海业务的扩展带来了巨大的市场机遇&#xff0c;同时也带来了不少网络安全挑战&#xff1a; 数据泄露与隐私保护&#xff1a;跨境数据传输增加了数据被截获和泄露的风险。地理位置限制和审查&#xff1a;某些地区的网络审查和地理位置限制可能阻碍企业正常开展业务。网络攻击…...

蓝桥杯考前准备— — c/c++

蓝桥杯考前准备— — c/c 对于输入输出函数 如果题目中有要求规定输入数据的格式与输出数据的格式&#xff0c;最好使用scanf()和prinrf()函数。 例如&#xff1a;输入的数据是 2020-02-18&#xff0c;则使用scanf("%d-%d-%d",&year,&mouth,&day)即可…...

【MATLAB源码-第4期】基于MATLAB的1024QAM误码率曲线,以及星座图展示。

1、算法描述 正交幅度调制&#xff08;QAM&#xff0c;Quadrature Amplitude Modulation&#xff09;是一种在两个正交载波上进行幅度调制的调制方式。这两个载波通常是相位差为90度&#xff08;π/2&#xff09;的正弦波&#xff0c;因此被称作正交载波。这种调制方式因此而得…...

数据结构-----枚举、泛型进阶(通配符?)

文章目录 枚举1 背景及定义2 使用3 枚举优点缺点4 枚举和反射4.1 枚举是否可以通过反射&#xff0c;拿到实例对象呢&#xff1f; 5 总结 泛型进阶1 通配符 ?1.1 通配符解决什么问题1.2 通配符上界1.3 通配符下界 枚举 1 背景及定义 枚举是在JDK1.5以后引入的。主要用途是&am…...

线上问题监控 Sentry 接入全过程

背景&#xff1a; 线上偶发问题出现后 &#xff0c;测试人员仅通过接口信息无法复现错误场景&#xff1b;并且线上环境的监控&#xff0c;对于提高系统的稳定性 &#xff08;降低脱发率&#xff09; 至关重要&#xff1b;现在线上监控工具这个多&#xff0c;为什么选择Sentry?…...

【数据库(MySQL)基础】以MySQL为例的数据库基础

文章目录 0. 本文用到的emp表,dept表,salgrade表1. MySQL入门2. 简单查询3. 字段计算4. 条件查询4.1 and4.2 null4.3 or4.4 and和or的优先级4.4 in 和 not in4.5 模糊查询 5. 排序5.1 简单排序5.2 两个字段排序5.3 综合排序 6. 一些常用函数6.1 大小写转换6.2 substr子字符串6.…...

权限修饰符,代码块,抽象类,接口.Java

1&#xff0c;权限修饰符 权限修饰符&#xff1a;用来控制一个成员能够被访问的范围可以修饰成员变量&#xff0c;方法&#xff0c;构造方法&#xff0c;内部类 &#x1f47b;&#x1f457;&#x1f451;权限修饰符的分类 &#x1f9e3;四种作用范围由小到大(private<空着…...

CSS设置文本

目录 概述&#xff1a; text-aling: text-decoration: text-transform: text-indent: line-height: letter-spacing: word-spacing: text-shadow: vertical-align: white-space: direction: 概述&#xff1a; 在CSS中我们可以设置文本的属性&#xff0c;就像Word文…...

【svg】—— java提取svg中的颜色

需要针对svg元素进行解析&#xff0c;并提取其中的颜色&#xff0c;首先需要知道svg中的颜色。针对svg中颜色的格式大致可以一般有纯色和渐变两种形式。对于渐变有分为&#xff1a;线性渐变和放射性渐变针对svg中的颜色支持16进制的格式&#xff0c;又可以支持RGB的格式&#x…...

论文分享 | FAST'23 阿里云提出的针对SMR优化的存储引擎SMRSTORE

今天分享的一篇最近阅读的论文是FAST23的SMRstore: A Storage Engine for Cloud Object Storage on HM-SMR Drives。 https://www.usenix.org/conference/fast23/presentation/zhou 这篇文章是由阿里巴巴公司完成的&#xff0c;在这篇文章中&#xff0c;团队针对SMR的特性提出了…...

深圳市年年卡网络科技有限公司/seo网站推广是什么

仅作为记录&#xff0c;大佬请跳过。 加入,dtypetorch.float即可 #label torch.full((b_size,), real_label, devicedevice)label torch.full((b_size,), real_label, devicedevice,dtypetorch.float)参考 感谢大佬博主文章传送门...

wordpress查询数据库插件/制作网站要花多少钱

RasterIO的用法参考&#xff1a; 在MFC项目中添加一个对话框DlgFastShow&#xff0c;添加一个按钮 &#xff0c;在头文件中添加如下代码&#xff1a; 1 public: 2 GDALDataset* m_pDataset; 3 double m_dScale; //现有图框与图像的比值 4 5 int m_iMi…...

怎么做自助交易网站/网络营销推广活动有哪些

第1关:创建数据库和表 任务描述 本关任务:编写一个能计算数组平均值和最大值的小程序。 相关知识 为了完成本关任务,你需要掌握:1. SQLite数据库连接,2.创建数据库和表。 SQLite数据库连接 下面的例子显示了如何连接到一个现有的SQLite数据库。如果参数中指定的数据库不…...

python3 网站建设/网站优化策略

以下所有测试最后必须在真机上完整的执行 1、安装、卸载测试 在真机上的以及通过91等第三方的安装与卸载 安装在手机上还是sd卡上 2、启动app测试 3、升级测试   数字签名、升级覆盖安装、下载后手动覆盖安装、跨版本升级、升级后可以正常使用。   覆盖安装要确保数据…...

wordpress 文章编辑 插件/互联网推广广告

Akka 和 Storm 的设计差异 Akka 和 Storm 都是实现低延时, 高吞吐量计算的重要工具. 不过它们并非完全的竞品,如果说 Akka 是 linux 内核的话, storm 更像是类似 Ubuntu 的发行版.然而 Storm并非 Akka 的发行版, 或许说 Akka 比作 BSD, Storm 比作 Ubuntu 更合适. 实现的功能差…...

网站备案核/磁力搜索器在线

Java 发送会议邀请到 OutlookJava 发送会议邀请到 Outlook1.发件服务器配置2.发送邮件代码3.测试代码Java 发送会议邀请到 Outlook 系统&#xff1a;Win10 IDE&#xff1a;IntelliJ IDEA 2017.3.7 JDK&#xff1a;1.8.0_121 Outlook&#xff1a;Microsoft Office 2016 1.发件服…...