使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

 一、环境及版本说明

如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装:

        1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看

        2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看

说明:假设每台服务器已经安装好了Docker软件,并且redis集群的安装目录在/home/redis下面

环境及版本
操作系统IP操作系统版本docker版本redis版本
Linux192.168.100.101CentOS7.6(1810)18.09.96.0.8
Linux192.168.100.102CentOS7.6(1810)18.09.96.0.8
Linux192.168.100.103CentOS7.6(1810)18.09.96.0.8

二、哨兵模式的优缺点

优点‌:

  1. 自动故障转移‌:主节点故障时自动选举新主节点
  2. 高可用性‌:服务连续性保障更强
  3. 监控告警‌:实时监测节点状态并通知

缺点‌:

  1. 配置复杂‌:需额外部署哨兵节点
  2. 写扩展性差‌:仍存在主节点写瓶颈
  3. 数据分片不支持‌:无法突破单节点内存限制

适用场景‌:

  • 对自动容灾有要求的业务(如电商核心服务)
  • 需要7×24小时稳定运行的系统

三、基于一主两从模式搭建三台服务器均添加哨兵

说明:哨兵模式实际上是redis主从模式的高可用的实现,因此,必须先搭建主从架构(至少1主1从),哨兵才能监控主从节点状态并执行故障转移。哨兵节点本身不存储数据,仅负责监控和协调。

重要:如果当前你还没有搭建redis的1主2从模式,那么请先看我的这篇文章:

使用docker在3台服务器上搭建基于版本redis 6.x的一主两从模式 https://blog.csdn.net/langmeng110/article/details/148521426?spm=1011.2415.3001.5331

四、配置文件

 说明:三台服务器都需要配置,路径是:/home/redis/sentinel.conf

#sentinel.conf配置文件内容
port 26379
daemonize yes
sentinel monitor mymaster 192.168.100.101 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 180000
# 哨兵访问主节点的密码
sentinel auth-pass mymaster 123456
# 哨兵自身管理密码
requirepass 123456

 五、创建启动脚本create_redis_sentinel.sh或编辑create_redis_master.sh

#create_redis_sentinel.sh脚本内容
docker run -d --restart=always --name redis-master \
-p 6379:6379 -p 26379:26379 --privileged=true \
-v /home/redis/sentinel.conf:/sentinel.conf \
-v /home/redis/master.conf:/redis.conf \
-v /home/redis/data:/data \
redis:6.0.8 redis-server /redis.conf

其中,-v /home/redis/sentinel.conf:/sentinel.conf 是先将哨兵配置文件映射到容器内

-p 26379:26379 是哨兵模式启动时,所需的端口。

六、启动

1. 执行如下脚本,以启动主节点:

#执行创建脚本
sh create_redis_sentinel.sh#然后查看容器状态
docker ps

出现如下图所示内容,表示启动成功:

2. 进入主节点容器中, 并启动哨兵命令:

#进入容器
docker exec -it redis-master /bin/bash
#启动哨兵命令
redis-sentinel /sentinel.conf

启动后,是没有任何输出的

 如果想检验是否启动成功,输入如下命令查看:

#在redis-master容器中执行如下命令
redis-cli -p 26379 -a 123456#输入如下命令查看哨兵状态
info sentinel

输入命令后,将会如下图所示:

 七、创建从节点哨兵

以102节点为例,103与102的操作是完全一样的,这里就不在赘述

1. 创建启动脚本create_redis_sentinel.sh或编辑create_redis_slave.sh

#create_redis_sentinel.sh脚本内容
docker run -d --restart=always --name redis-slave \
-p 6379:6379 -p 26379:26379 --privileged=true \
-v /home/redis/sentinel.conf:/sentinel.conf \
-v /home/redis/slave.conf:/redis.conf \
-v /home/redis/data:/data \
redis:6.0.8 redis-server /redis.conf

2. 执行如下脚本,以启动102从节点:

#执行创建脚本
sh create_redis_sentinel.sh#然后查看容器状态
docker ps

出现如下图所示内容,表示启动成功:

3. 进入102从节点容器中, 并启动哨兵命令:

#进入容器
docker exec -it redis-slave /bin/bash
#启动哨兵命令
redis-sentinel /sentinel.conf

启动后,是没有任何输出的

 如果想检验是否启动成功,输入如下命令查看:

#在redis-master容器中执行如下命令
redis-cli -p 26379 -a 123456#输入如下命令查看哨兵状态
info sentinel

输入命令后,将会如下图所示:

4. 将103从节点按照上述步骤,再操作一次,即可。

八、验证哨兵模式是否正常 

1. 关闭101主节点

2.10秒后,再次查看102从节点的状态

如图所示,主节点已经从101服务器,变成了102服务器。

3. 恢复101主节点的程序

 4. 重新启动哨兵模式(这一步很重要,容器重新启动的时候,哨兵是不会自动启动的,需要手动启动

5. 进入哨兵命令行

6. 查看哨兵状态

 如上图所示,主节点依旧是102服务器,101服务器变成了从节点。

到此,哨兵模式的搭建就完成了,喜欢的朋友点个关注再走吧~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/84364.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …

CANopen转Modbus TCP转换器助生产线智能化升级

在自动化工业控制领域,CANopen和Modbus TCP是两种广泛采用的通信协议。它们各自具有独特的特点和优势,但在某些应用场景中,需要设备能够同时支持这两种通信标准。这就需要一个能够实现开疆智能CANopen转Modbus TCP转换的网关KJ-TCPC-CANP设备…

C++图书管理

图书馆的书籍分类系统使用二进制标签管理,0 代表儿童读物,1 代表青少年书籍。管理员发现当前的书架排列中不允许出现青少年书籍之后连接儿童读物的情况(即 10 子串)。管理员每次可以交换任意两本书的位置。请计算让书架符合规定所…

汽车免拆诊断案例 | 2010款捷豹XFL车制动警告灯、DSC警告灯异常点亮

故障现象  一辆2010款捷豹XFL车,搭载3.0 L发动机,累计行驶里程约为35万km。车主反映,该车组合仪表上的制动警告灯、动态稳定控制系统(DSC)警告灯异常点亮(图1),且提示“DSC NOT AV…

el-upload组件,上传文件失败,:on-error方法失效

el-upload组件方法失效 问题原因解决 问题 使用el-upload组件上传文件,有这么一个问题上传文件处理报错Excel、Word。org.apache.poi.openxml4j.exceptions.OLE2NotOfficeXmlFileException。 按上述,后端编写完代码,输出正常,但…

可视化图解算法50:最小的K个数

牛客网 面试笔试 TOP101 | LeetCode 面试题 17.14. 最小K个数 1. 题目 描述 给定一个长度为 n 的可能有重复值的数组,找出其中不去重的最小的 k 个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4(任意顺序皆可)。 数…

Ragflow配置注意项

在 .env文件中启用v.0.19.0版本,带emabedding models RAGFLOW_IMAGEinfiniflow/ragflow:v0.19.0 RAGFlow image tagImage size (GB)Has embedding models?Stable?v0.19.0≈9✔️Stable releasev0.19.0-slim≈2❌Stable releasenightly≈9✔️Unstable nightly b…

Word VBA快速制作填空题

实例需求:Word文档用于英语单词学习,重点记忆单词标记下划线,其内容如下图所示。 现在文档转换为填空题(无论单词字符多少,填空部分统一使用10个空格)和参考答案两部分,如下图所示。 示例代码如…

不变性(Immutability)模式

1. 不变性(Immutability)模式 1.1. 不变性模式的概念 定义:对象一旦被创建,其内部状态就不再发生变化,也即“只读无写”,不会出现并发写的问题,自然线程安全。 适用场景:只读共享…

探秘鸿蒙 HarmonyOS NEXT:鸿蒙定时器,简单倒计时的场景应用

在鸿蒙 ArkTS 开发中,定时器是实现动态效果和定时任务的重要工具。基于鸿蒙 API 12 及以上版本,ArkTS 提供了功能丰富的定时器 API,本文将带你全面了解定时器的使用方法。 一、定时器常用 API 介绍 ArkTS 中的定时器主要分为一次性定时器&a…

安卓基础(语义树)

进化1 package com.example.demotest.unread;import android.accessibilityservice.AccessibilityService; import android.content.res.Resources; import android.graphics.Rect; import android.util.DisplayMetrics; import android.util.Log; import android.view.access…

Linux基础开发工具——vim工具

文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…

AcWing--数据结构1

用数组来模拟链表。这种实现链表的方式也叫静态链表。 1.单链表 写邻接表&#xff1a;存储图和树 我们定义&#xff1a;e[N]用来表示某个点的值是多少&#xff1b;ne[N]用来表示某个点的next指针是多少 e和ne是用下标关联起来的 如&#xff1a;head->3->5->7->…

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…

多模态分类案例实现

以下是基于飞桨平台实现的多模态分类详细案例&#xff0c;结合图像和文本信息进行分类任务。案例包含数据处理、模型构建、训练和评估的完整流程&#xff0c;并提供详细注释&#xff1a; 一、多模态分类案例实现 import os import json import numpy as np from PIL import I…

Express框架:Node.js的轻量级Web应用利器

Hi,我是布兰妮甜 !在当今快速发展的Web开发领域,Node.js已成为构建高性能、可扩展网络应用的重要基石。而在这片肥沃的生态系统中,Express框架犹如一座经久不衰的灯塔,指引着无数开发者高效构建Web应用的方向。本文章在为读者提供一份全面而深入的Express框架指南。无论您…

K-Means颜色变卦和渐变色

一、理论深度提升&#xff1a;补充算法细节与数学基础 1. K-Means 算法核心公式&#xff08;增强专业性&#xff09; 在 “原理步骤” 中加入数学表达式&#xff0c;说明聚类目标&#xff1a; K-Means 的目标是最小化簇内平方和&#xff08;Within-Cluster Sum of Squares, W…

深入解析C#表达式求值:优先级、结合性与括号的魔法

—— 为什么2/6*4不等于1/12&#xff1f; &#x1f50d; 一、表达式求值顺序为何重要&#xff1f; 表达式如精密仪器&#xff0c;子表达式求值顺序直接决定结果。例如&#xff1a; int result 3 * 5 2;若先算乘法&#xff1a;(3*5)2 17 ✅若先算加法&#xff1a;3*(52)21…

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…