Redis哨兵模式(Docker)

  1. 获取配置
    #----------------------------------------------------------
    拉取镜像 docker pull redis:latest
    #----------------------------------------------------------
    创建容器 docker run --name redis -d redis:latest
    #----------------------------------------------------------
    获取版本 docker exec redis redis-server --version
    #----------------------------------------------------------
    删除容器 docker rm -f redis
    #----------------------------------------------------------
    获取配置 http://download.redis.io/releases 解压获取 redis.conf sentinel.conf
    注意事项 redis.conf sentinel.conf 同镜像中Redis版本必须一致 否则容器启动异常
    #----------------------------------------------------------
  2. 编辑配置
    #----------------------------------------------------------
    /opt/redis/conf/redis_6380.conf |# bind 127.0.0.1 -::1|protected-mode no|appendonly yes|appendfsync always|# appendfsync everysec|port 6380|
    /opt/redis/conf/redis_6381.conf |# bind 127.0.0.1 -::1|protected-mode no|appendonly yes|appendfsync always|# appendfsync everysec|port 6381|
    /opt/redis/conf/redis_6382.conf |# bind 127.0.0.1 -::1|protected-mode no|appendonly yes|appendfsync always|# appendfsync everysec|port 6382|
    #-------------------------主从模式-------------------------
    /opt/redis/conf/redis_6381.conf |replicaof <host-ip> 6380|
    /opt/redis/conf/redis_6382.conf |replicaof <host-ip> 6380|
    #-------------------------哨兵模式-------------------------
    /opt/redis/conf/sentinel_26380.conf |# bind 127.0.0.1 192.168.1.1|protected-mode no|sentinel monitor mymaster <host-ip> 6380 1|sentinel down-after-milliseconds mymaster 5000|sentinel failover-timeout mymaster 10000|port 26380|
    /opt/redis/conf/sentinel_26381.conf |# bind 127.0.0.1 192.168.1.1|protected-mode no|sentinel monitor mymaster <host-ip> 6380 1|sentinel down-after-milliseconds mymaster 5000|sentinel failover-timeout mymaster 10000|port 26381|
    /opt/redis/conf/sentinel_26382.conf |# bind 127.0.0.1 192.168.1.1|protected-mode no|sentinel monitor mymaster <host-ip> 6380 1|sentinel down-after-milliseconds mymaster 5000|sentinel failover-timeout mymaster 10000|port 26382|
    #----------------------------------------------------------
  3. 一主二从
    #-------------------------一主二从-------------------------
    docker rm -f redis_6380 redis_6381 redis_6382
    #----------------------------------------------------------
    docker run --name redis_6380 \
    --restart=always \
    --network host \
    -v /opt/redis/conf/redis_6380.conf:/etc/redis/redis.conf \
    -v /opt/redis/data/6380:/data \
    -d redis:latest \
    redis-server /etc/redis/redis.conf
    #----------------------------------------------------------
    docker run --name redis_6381 \
    --restart=always \
    --network host \
    -v /opt/redis/conf/redis_6381.conf:/etc/redis/redis.conf \
    -v /opt/redis/data/6381:/data \
    -d redis:latest \
    redis-server /etc/redis/redis.conf
    #----------------------------------------------------------
    docker run --name redis_6382 \
    --restart=always \
    --network host \
    -v /opt/redis/conf/redis_6382.conf:/etc/redis/redis.conf \
    -v /opt/redis/data/6382:/data \
    -d redis:latest \
    redis-server /etc/redis/redis.conf
    #----------------------------------------------------------
    firewall-cmd --zone=public --add-port=6380/tcp --permanent && firewall-cmd --reload
    firewall-cmd --zone=public --add-port=6381/tcp --permanent && firewall-cmd --reload
    firewall-cmd --zone=public --add-port=6382/tcp --permanent && firewall-cmd --reload
    #----------------------------------------------------------
    # 主从模式下 主节点可以增删改查 从节点只能查 主节点宕机则集群只能查 主节点恢复则集群自动恢复
    #----------------------------------------------------------
  4. 三个哨兵
    #-------------------------三个哨兵-------------------------
    docker rm -f sentinel_26380 sentinel_26381 sentinel_26382
    #----------------------------------------------------------
    docker run --name sentinel_26380 \
    --restart=always \
    --network host \
    -v /opt/redis/conf/sentinel_26380.conf:/etc/redis/sentinel.conf \
    -d redis:latest \
    redis-sentinel /etc/redis/sentinel.conf
    #----------------------------------------------------------
    docker run --name sentinel_26381 \
    --restart=always \
    --network host \
    -v /opt/redis/conf/sentinel_26381.conf:/etc/redis/sentinel.conf \
    -d redis:latest \
    redis-sentinel /etc/redis/sentinel.conf
    #----------------------------------------------------------
    docker run --name sentinel_26382 \
    --restart=always \
    --network host \
    -v /opt/redis/conf/sentinel_26382.conf:/etc/redis/sentinel.conf \
    -d redis:latest \
    redis-sentinel /etc/redis/sentinel.conf
    #----------------------------------------------------------
    firewall-cmd --zone=public --add-port=26380/tcp --permanent && firewall-cmd --reload
    firewall-cmd --zone=public --add-port=26381/tcp --permanent && firewall-cmd --reload
    firewall-cmd --zone=public --add-port=26382/tcp --permanent && firewall-cmd --reload
    #----------------------------------------------------------
    # 哨兵模式下 主节点宕机 从节点被切换为主节点 主节点恢复后变为从节点 哨兵数量至少2个 否则无法执行切换
    #----------------------------------------------------------
  5. 项目配置
    #----------------------------------------------------------
    spring:redis:sentinel:master: mymaster # 哨兵模式下的主节点名称nodes: <host-ip>:26380,<host-ip>:26381,<host-ip>:26382 # 哨兵节点的地址列表password: ''  # 设置哨兵节点的密码lettuce:pool:max-active: 8   # 最大连接数据库连接数,设 0 为没有限制max-idle: 8     # 最大等待连接中的数量,设 0 为没有限制max-wait: -1ms  # 最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。min-idle: 0     # 最小等待连接中的数量,设 0 为没有限制shutdown-timeout: 100ms
    #----------------------------------------------------------@Value("${spring.redis.sentinel.nodes}")private String sentinelNodes;@Value("${spring.redis.sentinel.master}")private String sentinelMaster;@Value("${spring.redis.sentinel.password}")private String sentinelPassword;public RedisCacheManager redisCacheManager() {log.info("===============(1)创建缓存管理器RedisCacheManager");RedisCacheManager redisCacheManager = new RedisCacheManager();redisCacheManager.setRedisManager(redisManager());//redis中针对不同用户缓存(此处的id需要对应user实体中的id字段,用于唯一标识)redisCacheManager.setPrincipalIdFieldName("id");//用户权限信息缓存时间redisCacheManager.setExpire(200000);return redisCacheManager;}@Beanpublic RedisManager redisManager() {log.info("===============(2)创建RedisManager,连接Redis..URL= " + sentinelNodes + ", masterName=" + sentinelMaster);RedisManager redisManager = new RedisManager();redisManager.setHost(sentinelNodes);if (!StringUtils.isEmpty(sentinelPassword)) {redisManager.setPassword(sentinelPassword);}return redisManager;}
    #----------------------------------------------------------
    

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

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

相关文章

RDD的创建 - Python

第1关&#xff1a;集合并行化创建RDD # -*- coding: UTF-8 -*- from pyspark import SparkContextif __name__ "__main__":#********** Begin **********## 1.初始化 SparkContext&#xff0c;该对象是 Spark 程序的入口sc SparkContext("local", "…

redis问题归纳

1.redis为什么这么快&#xff1f; &#xff08;1&#xff09;基于内存操作&#xff1a;redis的所有数据都存在内存中&#xff0c;因此所有的运算都是内存级别的&#xff0c;所以性能比较高 &#xff08;2&#xff09;数据结构简单&#xff1a;redis的数据结构是专门设计的&…

Python技术栈 —— 语言基础

Python基础 语法拾遗List与Tuple的区别yield关键字for in enumeratefor in zip 精彩片段测量程序用时 语法拾遗 List与Tuple的区别 ListTuple建立后是否可变可变不可变建立后是否可添加元素可添加不可添加 # list and tuple List [1, 2, 3, 4, 5] Tuple (1, 2, 3, 4, 5) p…

jvm 内存结构 ^_^

1. 程序计数器 2. 虚拟机栈 3. 本地方法栈 4. 堆 5. 方法区 程序计数器 定义&#xff1a; Program Counter Register 程序计数器&#xff08;寄存器&#xff09; 作用&#xff0c;是记住下一条jvm指令的执行地址 特点&#xff1a; 是线程私有的 不会存在内存溢出 虚拟机栈…

使用C#插件Quartz.Net定时执行CMD任务工具2

目录 创建简易控制台定时任务步骤完整程序 创建简易控制台定时任务 创建winform的可以看&#xff1a;https://blog.csdn.net/wayhb/article/details/134279205 步骤 创建控制台程序 使用vs2019新建项目&#xff0c;控制台程序&#xff0c;使用.net4.7.2项目右键&#xff08…

SpringBoot项目连接linux服务器数据库两种解决方法(linux直接开放端口访问本机通过SSH协议访问,以mysql为例)

最近找个springboot脚手架重新熟悉一下springboot相关框架的东西&#xff0c;结果发现好像项目还不能直接像数据库GUI工具一样填几个SSH参数就可以了&#xff0c;于是就给他再整一下看看如何解决 linux开放3306&#xff08;可修改&#xff09;端口直接访问 此方法较为方便&am…

数学建模-图与网络模型解题方法和代码实现

本文针对以下几个方面问题进行整理&#xff1a; 最短路问题 两个指定顶点之间的最短路径任意顶点之间的最短路径 2.最小生成树问题 求最小生成树 3.网络最大流问题 源点与汇点之间的最大流基于最大流的最小费用求解 4.旅行商问题 基于哈密顿(Hamilton)圈求解旅行商线性…

MyBatis整合Spring Boot扫描Mapper相关配置

MyBatis是一款 Java 平台的优秀数据库映射框架&#xff0c;支持 XML 定义或注解&#xff0c;免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。 针对 Spring 提供 Mapper 扫描注解&#xff1a; 集成 Spring Boot 时&#xff0c;可以通过 MapperScan 注解&#xff0…

2311rust到31版本更新

1.27.1稳定版 在此修补程序前,下例在编译器内部恐慌. fn main() {let a vec!["".to_string()];a.iter().enumerate().take_while(|(_, &t)| false).collect::<Vec<_>>(); }1.27.1拒绝上述代码,并显示以下错误消息: error[E0507]: cannot move ou…

【2021集创赛】基于arm Cortex-M3处理器与深度学习加速器的实时人脸口罩检测 SoC

团队介绍 参赛单位&#xff1a;深圳大学 队伍名称&#xff1a;光之巨人队 指导老师&#xff1a;钟世达、袁涛 参赛队员&#xff1a;冯昊港、潘家豪、慕镐泽 图1 团队风采 1. 项目简介 新冠疫情席卷全球&#xff0c;有效佩戴口罩可以极大程度地减小病毒感染的风险。本项目开发…

【数据结构&C++】二叉平衡搜索树-AVL树(25)

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.AVL树的概念二.AVL树节点的定义(代码…

mysql练习1

-- 1.查询出部门编号为BM01的所有员工 SELECT* FROMemp e WHEREe.deptno BM01; -- 2.所有销售人员的姓名、编号和部门编号。 SELECTe.empname,e.empno,e.deptno FROMemp e WHEREe.empstation "销售人员";-- 3.找出奖金高于工资的员工。 SELECT* FROMemp2 WHE…

『Spring Boot Actuator Spring Boot Admin』 实现应用监控管理

前言 本文将会使用 Spring Boot Actuator 组件实现应用监视和管理&#xff0c;同时结合 Spring Boot Admin 对 Actuator 中的信息进行界面化展示&#xff0c;监控应用的健康状况&#xff0c;提供实时警报功能 Spring Boot Actuator 简介 官方文档&#xff1a;Production-rea…

Linux 怎样通过win 远程桌面连接链接Linux后台服务器的可视化图形界面

目的概述&#xff1a;因不想后台直接操作&#xff08;操作不便&#xff09;&#xff0c;所以想到能否基于xrdp协议服务利用 win自带的远程桌面服务&#xff0c;链接到后台&#xff0c;类似于vnc的使用方式&#xff0c;涉及操作系统版本&#xff1a;win11 、 CentOS 7.4 、CentO…

openai/chatgpt的api接口,各个模型的最大输入token一览表

chatgpt的各个3.5api模型接口的最大输入量一览表&#xff1a; MODELDESCRIPTIONCONTEXT WINDOWTRAINING DATAgpt-3.5-turbo-1106Updated GPT 3.5 Turbo New The latest GPT-3.5 Turbo model with improved instruction following, JSON mode, reproducible outputs, parallel…

python算法例10 整数转换为罗马数字

1. 问题描述 给定一个整数&#xff0c;将其转换为罗马数字&#xff0c;要求返回结果的取值范围为1~3999。 2. 问题示例 4→Ⅳ&#xff0c;12→Ⅻ&#xff0c;21→XⅪ&#xff0c;99→XCIX。 3. 代码实现 def int_to_roman(num):val [1000, 900, 500, 400,100, 90, 50, 40…

蓝桥杯每日一题2023.11.19

题目描述 “蓝桥杯”练习系统 (lanqiao.cn) 题目分析 首先想到的方法为dfs去寻找每一个数&#xff0c;但发现会有超时 #include<bits/stdc.h> using namespace std; const int N 2e5 10; int n, cnt, a[N]; void dfs(int dep, int sum, int start) {if(dep 4){if(s…

SpirngBoot + Vue 前后端分离开发工具代码

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; Java从入门到精通 ✨特色专栏&#xf…

软件测试技术之地图导航的测试用例

外观测试 屏幕显示不能有花屏、黑点和闪屏&#xff0c;清晰度、亮度、颜色要正常。 检测所有按键都能起到相应作用&#xff0c;是否手感不良。 UI显示状态、颜色、清晰度、效果。 控制&#xff1a;放大&#xff0c;缩小&#xff0c;音量调节功能测试。 交叉路口查询测试&am…

Python OpenCV 视频抽帧处理并保存

上篇文章中基于OpenCV实现图像处理后&#xff0c;类似的&#xff0c;也可以对视频进行处理。OpenCV库可以将视频的每一帧读取出来&#xff0c;然后对每一帧图像做相应的操作&#xff0c;并保存成新的视频。 1. 读取视频&#xff0c;获取相关参数 import cv2 import numpy as…