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

Docker搭建Redis主从 + Redis哨兵模式(一主一从俩哨兵)

我这里是搭建一主一从,俩哨兵,准备两台服务器,分别安装docker

我这里有两台centos服务器 

主服务器IP:192.168.252.134

从服务器IP:192.168.252.135

1.两台服务器分别拉取redis镜像

docker pull redis

2.查看镜像 docker images

3.创建文件目录,我这里是放在 /opt/docker/redis

mkdir /opt/docker/redis/conf

mkdir /opt/docker/redis/data

4.主节点配置文件修改(提前准备好配置文件)可以去redis官方下载:redis.conf 配置文件下载

进入到 cd  /opt/docker/redis/conf  把 redis.conf 配置文件放到这里

如果不想下载的话也可以直接  vim redis.conf 创建并编辑文件,配置内容如下

cd /opt/docker/redis/conf

# 注释掉 所有IP都可以访问redis服务
#bind 127.0.0.1 -::1

# 关闭保护模式
protected-mode no

# 端口号
port 6379

# 改为no 后台进程的模式,避免跟docker的-d命令冲实
daemonize no

pidfile /var/run/redis_6379.pid

loglevel notice

logfile ""

# 登录密码
requirepass 123456

# 主节点密码
masterauth 123456

# 持久化
# 开启后,Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时Redis都会先把这个文件的数据读入内存里
appendonly yes

5.从节点配置文件修改

同样  cd /opt/docker/redis/conf   编辑 vim redis.conf

从节点的配置只多了一个 replicaof  主从复制的配置,(如果配置多个从节点,复制此配置即可)

# 注释掉 所有IP都可以访问redis服务
#bind 127.0.0.1 -::1

# 关闭保护模式
protected-mode no

# 端口号
port 6379

# 改为no 后台进程的模式,避免跟docker的-d命令冲实
daemonize no

pidfile /var/run/redis_6379.pid

loglevel notice

logfile ""

# 登录密码
requirepass 123456

# 主节点密码
masterauth 123456

# 持久化
# 开启后,Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时Redis都会先把这个文件的数据读入内存里
appendonly yes

#从节点需要配置这个 主节点的IP 和端口
replicaof 192.168.252.134 6379

6.分别启动 两台服务器上的redis容器

# 主服务器启动
# 创建并运行redis容器
docker run -d --privileged=true --restart always -v /opt/docker/redis/data:/data -v /opt/docker/redis/conf/redis.conf:/etc/redis/redis.conf --name redis-master -p 6379:6379 redis /etc/redis/redis.conf# 从服务器启动
# 创建slave节点
docker run -d --privileged=true --restart always -v /opt/docker/redis/data:/data -v /opt/docker/redis/conf/redis.conf:/etc/redis/redis.conf --name redis-slave -p 6379:6379 redis /etc/redis/redis.conf

参数说明:

-v /opt/docker/redis/data:/data ## 将容器里的数据挂载到宿主机/opt/docker/redis/data目录下

-v /opt/docker/redis/conf/redis.conf:/etc/redis/redis.conf ## 容器里的redis配置文件与/opt/docker/redis/conf/redis.conf下的配置文件互相通信

/etc/redis/redis.conf  ## 指定要加载的配置文件 就是映射的上面配置的那个redis.conf文件

7.这样一主一从的redis服务就启动成功了,我们进入容器验证一下

# 查看容器

docker ps

# 进入主容器

docker exec -it redis-master /bin/bash

# 登录到redis服务

redis-cli

# 输入密码

auth 123456

# ping一下

ping

可以看到服务正常启动

8.查看主从信息

info replication

从节点查看:也是一样进入到从节点容器,登录redis服务里面

使用命令 exit 即可退出服务和容器

此时 主从搭建已经配置好了,我们可以用redis工具往主节点redis中set数据,即可看到从节点有相同的数据被同步过来了。

9.哨兵模式配置

哨兵的配置文件 sentinel.conf 也同样可以去  redis官方下载:sentinel.conf 配置文件下载

创建目录并进入

mkdir /opt/docker/sentinel

cd /opt/docker/sentinel

使用官方配置 把 sentinel.conf 文件copy到 服务器 /opt/docker/sentinel 这个目录

或者直接 vim sentinel.conf  配置内容如下

# Example sentinel.conf

# 关闭保护模式
protected-mode no

# 哨兵服务的端口号
port 26379

# 改为no 后台进程的模式,避免跟docker的-d命令冲实
daemonize no

pidfile /var/run/redis-sentinel.pid

loglevel notice

logfile ""

dir /tmp

# 添加主节点的 IP和端口 后面的这个数字1,代表主机挂了,slave投票看让谁接替成为主机,票数最多的,就会成为主机! (我这只部署两台哨兵 所以写1)
sentinel monitor mymaster 192.168.252.134 6379 1

# 主节点的认证密码 
sentinel auth-pass mymaster 123456

# 监控时间 (名称) (超时时间,当超过这个时间,则认为master已经挂了)
sentinel down-after-milliseconds mymaster 50000

acllog-max-len 128

sentinel parallel-syncs mymaster 1

sentinel failover-timeout mymaster 180000

sentinel deny-scripts-reconfig yes

SENTINEL resolve-hostnames no

SENTINEL announce-hostnames no

SENTINEL master-reboot-down-after-period mymaster 0

多个哨兵的配置都是如此

10.启动哨兵模式容器  多个哨兵操作都是同样的(我这里是两台服务器两个哨兵)

# redis 哨兵  主节点
docker run -d --privileged=true --restart always -v /opt/docker/sentinel/sentinel.conf:/etc/redis/sentinel.conf  --name sentinel-master -p 26379:26379 redis redis-sentinel /etc/redis/sentinel.conf# redis 哨兵 从节点
docker run -d --privileged=true --restart always -v /opt/docker/sentinel/sentinel.conf:/etc/redis/sentinel.conf  --name sentinel-slave -p 26379:26379 redis redis-sentinel /etc/redis/sentinel.conf

参数说明

redis-sentinel 是 Redis 提供的哨兵模式的命令行工具,它可以用来启动一个哨兵进程,并且可以通过它来监控和管理 Redis 服务

/etc/redis/sentinel.conf 是指定启动的加载文件

11.进到哨兵容器里面查看哨兵信息

# 进入到哨兵容器
docker exec -it sentinel-master /bin/bash# 登录redis哨兵服务
redis-cli -p 26379# 查看哨兵信息
info sentinel

通过上面的几个状态信息,我们可以看到哨兵检测的主节点信息,主节点下面有几个从节点,同时哨兵节点有几个。

至此 redis主从搭建和哨兵模式都已经配置好了

相关文章:

Docker搭建Redis主从 + Redis哨兵模式(一主一从俩哨兵)

我这里是搭建一主一从,俩哨兵,准备两台服务器,分别安装docker 我这里有两台centos服务器 主服务器IP:192.168.252.134 从服务器IP:192.168.252.135 1.两台服务器分别拉取redis镜像 docker pull redis 2.查看镜像 d…...

Three.js——tween动画、光线投射拾取、加载.obj/.mtl外部文件、使用相机控制器

个人简介 👀个人主页: 前端杂货铺 ⚡开源项目: rich-vue3 (基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL) 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 &#x1…...

内网渗透-在HTTP协议层面绕过WAF

进入正题,随着安全意思增强,各企业对自己的网站也更加注重安全性。但很多web应用因为老旧,或贪图方便想以最小代价保证应用安全,就只仅仅给服务器安装waf。 本次从协议层面绕过waf实验用sql注入演示,但不限于实际应用…...

qt QGroupBox radiobutton

QGroupBox 显示文本:属性 title 加载radiobutton if (jsonObject.contains("startEndTogether") && jsonObject["startEndTogether"].isString()) {QString selectedButton jsonObject["startEndTogether"].toString();//…...

jetson nano onnxruntime 安装

安装说明: onnxruntime 依赖cuda、cudnn版本,可onnxruntime查找对应关系。但可能会出现jetpack中的cuda和cudnn的版本无法查找到对应版本的onnxruntime的问题。 解决方法: 通过Jetson Zoo下载相应的whl包直接安装。...

图形学初识--屏幕空间变换

文章目录 前言正文为什么需要屏幕空间变换?什么是屏幕空间变换?屏幕空间变换矩阵如何推导?问题描述步骤描述 结尾:喜欢的小伙伴点点关注赞哦! 前言 前面章节主要讲解了视图变换和投影变换,此时距离在屏幕空间显示也就…...

爬楼梯 - LeetCode 热题 81

大家好!我是曾续缘😇 今天是《LeetCode 热题 100》系列 发车第 81 天 动态规划第 1 题 ❤️点赞 👍 收藏 ⭐再看,养成习惯 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法…...

详解 Spark 核心编程之 RDD 分区器

一、RDD 分区器简介 Spark 分区器的父类是 Partitioner 抽象类分区器直接决定了 RDD 中分区的个数、RDD 中每条数据经过 Shuffle 后进入哪个分区,进而决定了 Reduce 的个数只有 Key-Value 类型的 RDD 才有分区器,非 Key-Value 类型的 RDD 分区的值是 No…...

Selenium番外篇文本查找、元素高亮、截图、无头运行

Selenium根据文本查找元素 ​ python def find_element_with_text(self, loc, attribute, text):try:WebDriverWait(self.driver, 5).until(EC.all_of(EC.text_to_be_present_in_element_attribute(loc, attribute, text)))element self.driver.find_element(*loc)if isinsta…...

Java 22的FFM API,比起Java 21的虚拟线程

哪个对Java未来的发展影响更大?两个 Java 版本中的重要特性:Java 21 的虚拟线程和 Java 22 的 FFM API。我这里有一套编程入门教程,不仅包含了详细的视频讲解,项目实战。如果你渴望学习编程,不妨点个关注,给…...

用c语言实现简易三子棋

本篇适用于C语言初学者。 目录 完整代码&#xff1a; 分步介绍&#xff1a; 声明&#xff1a; 代码主体部分&#xff1a; 模块功能实现&#xff1a; 完整代码&#xff1a; #include<stdio.h> #include <stdlib.h> #include <time.h>#define ROW 3 #d…...

2024年华为OD机试真题-执行时长-Python-OD统一考试(C卷D卷)

2024年OD统一考试(D卷)完整题库:华为OD机试2024年最新题库(Python、JAVA、C++合集) 题目描述: 为了充分发挥GPU算力,需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务,假设GPU最多一次执行n个任务,一次执…...

对未知程序所创建的 PDF 文档的折叠书签层级全展开导致丢签的一种解决方法

对需要经常查阅、或连续长时间阅读的带有折叠书签的 PDF 文档展开书签层级&#xff0c;提高阅览导航快捷是非常有必要的。 下面是两种常用书签层级全展开的方法 1、 FreePic2Pdf 1 - 2 - 3 - 4 - 5 - 6&#xff0c;先提取后回挂 2、PdgCntEditor 载入后&#xff0c;直接保存…...

计算机系统结构之FORK和JOIN

程序语言中用FORK语句派生并行任务&#xff0c;用JOIN语句对多个并发任务汇合。 FORK语句的形式为FORK m&#xff0c;其中m为新领程开始的标号。 JOIN语句的形式为JOIN n&#xff0c;其中n为并发进程的个数。 例1&#xff1a;给定算术表达式ZEA*B*C/DF经并行编译得到如下程序…...

Yocto - virtual/kernel介绍

在 Yocto 项目中&#xff0c;"virtual/kernel "是一个虚拟目标&#xff0c;作为 Linux 内核的抽象层。它是一种以灵活方式指定内核依赖关系的方法&#xff0c;允许实际的内核配方由特定构建中使用的机器配置和层决定。 下面是关于 "virtual/kerne"的含义和…...

如何在 DigitalOcean 云服务器上创建自定义品牌名称服务器

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 介绍 对于托管提供商或转售商来说&#xff0c;拥有自定义的名称服务器可以为客户提供更专业的外观。这消除了要求客户将其域名指向另一…...

心链6----开发主页以及后端数据插入(多线程并发)定时任务

心链 — 伙伴匹配系统 开发主页 信息搜索页修改 主页开发&#xff08;直接list用户&#xff09; 在后端controller层编写接口去实现显示推荐页面的功能 /*** 推荐页面* param request* return*/GetMapping("/recommend")public BaseResponse<List<User>&…...

【Linux】日志管理

一、日志进程 1、处理日志的进程 rsyslogd&#xff1a;系统专职日志程序 观察rsyslogd程序&#xff1a; ps aux | grep rsyslogd 2、常见的日志文件 1、系统主日志文件: /var/log/messages 动态查看日志文件尾部&#xff1a; tail -f /var/log/messages 2、安全…...

AI 绘画爆火背后:扩散模型原理及实现

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#x…...

详解智慧互联网医院系统源码:开发医院小程序教学

本篇文章&#xff0c;笔者将详细介绍智慧互联网医院系统的源码结构&#xff0c;并提供开发医院小程序的详细教学。 一、智慧互联网医院系统概述 智慧互联网医院系统涵盖了预约挂号、在线咨询、电子病历、药品管理等多个模块。 二、系统源码结构解析 智慧互联网医院系统的源码…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...