Redis 高可用之哨兵模式(二)
上一篇实际操作过程中遇到两个问题
问题一:虽然运行了3个sentinel容器,实际上只有一个sentinel运行
问题出现的原因很简单,三个sentinel用的是同一个挂载配置文件,容器内部的更改直接挂在文件的变化,所以解决方案就是用三分不同的配置文件去配置sentinel容器
问题二:连接sentinel容器,获取的redis 地址是docker虚拟ip,导致外网不能访问
原因:因为docker 网络模式默认为bridge模式,采用host模式即可
docker 具体网络模式的区别可以查看下面的文章
具体操作
1. 新建redis-demo.conf文件,文件内容如下
logfile "redis.log"
port
dir /data
appendonly yes
appendfilename appendonly.aof
2.复制redis-demo.conf文件 到 redis-01.conf 文件内容如下
logfile "redis.log"
port
dir /data
appendonly yes
appendfilename appendonly.aof
slaveof 172.21.186.236
这里需要注意 172.21.186.236 这个ip是我虚拟机的ip地址,也就是容器宿主的ip地址,需要对应修改(下同)
3.复制redis-01.conf 到redis-02.conf 文件内容如下
logfile "redis.log"
port
dir /data
appendonly yes
appendfilename appendonly.aof
slaveof 172.21.186.236
4.执行容器运行命令
docker run --name redis- -v /data/conf/redis-demo.conf:/data/redis.conf --net=host -d docker.io/redis redis-server /data/redis.conf docker run --name redis- -v /data/conf/redis-.conf:/data/redis.conf --net=host -d docker.io/redis redis-server /data/redis.conf docker run --name redis- -v /data/conf/redis-.conf:/data/redis.conf --net=host -d docker.io/redis redis-server /data/redis.conf
5.查看redis-6379节点的运行状态
可以看到正常运行,主从配置也很清晰
6.创建sentinel.conf配置文件文件内容
logfile "sentinel.log"
port
sentinel monitor mymaster 172.21.186.236
7.复制sentinel.conf到sentinel-01.conf 内容如下
logfile "sentinel.log"
port
sentinel monitor mymaster 172.21.186.236
8.复制sentinel.conf到sentinel-02.conf内容如下
logfile "sentinel.log"
port
sentinel monitor mymaster 172.21.186.236
9.运行容器
docker run --net=host --name redis-s- -v /data/conf/sentinel-demo.conf:/data/sentinel.conf -d docker.io/redis redis-sentinel sentinel.conf
docker run --net=host --name redis-s- -v /data/conf/sentinel-.conf:/data/sentinel.conf -d docker.io/redis redis-sentinel sentinel.conf
docker run --net=host --name redis-s- -v /data/conf/sentinel-.conf:/data/sentinel.conf -d docker.io/redis redis-sentinel sentinel.conf
10.查看sentinel-s-6379运行状态
到此容器一切就绪,接下来创建一个简单的的spring boot demo 测试
11.创建spring boot 其中只需要选择如图
创建完成吼修改application.yaml文件内容如下
server:
port: 8083
spring:
redis:
sentinel:
master: mymaster
nodes: 172.21.186.236:26379,172.21.186.236:26380,172.21.186.236:26381
创建配置类 RedisConfig 内容如下
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {
/**
* 注入 RedisConnectionFactory
*/
@Autowired
RedisConnectionFactory redisConnectionFactory; /**
* 实例化 RedisTemplate 对象
*
* @return
*/
@Bean
public RedisTemplate<String, Object> functionDomainRedisTemplate() {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
initDomainRedisTemplate(redisTemplate, redisConnectionFactory);
return redisTemplate;
} /**
* 设置数据存入 redis 的序列化方式
*
* @param redisTemplate
* @param factory
*/
private void initDomainRedisTemplate(RedisTemplate<String, Object> redisTemplate, RedisConnectionFactory factory) {
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
//只有设置jdk序列化,才能新类对象比如User进行存储
redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer());
redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
redisTemplate.setConnectionFactory(factory);
} }
创建HomeController
@RestController
public class HomeController {
@Autowired
RedisTemplate<String, Object> redisTemplate; @RequestMapping("/")
public String index(@RequestParam String a) {
try {
redisTemplate.opsForValue().set("yin", a);
} catch (Exception e) {
System.out.println(e);
return e.toString();
} return a;
}
@RequestMapping("/hello")
public String hello() {
return "hello y";
}
}
项目结构如下
运行后,访问地址:http://localhost:8083/?a=124
然后用redis管理工具连接redis具体结果如下:
可以看到已经成功入库
over!!
Redis 高可用之哨兵模式(二)的更多相关文章
- Redis高可用之哨兵模式Sentinel配置与启动(五)
0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...
- Redis 高可用之哨兵模式
参考 : https://mp.weixin.qq.com/s/Z-PyNgiqYrm0ZYg0r6MVeQ 一.redis高可用解决方案 redis主从 优点:1.高可靠性,主从实时备份,有效解 ...
- 老司机带你玩转面试(4):Redis 高可用之哨兵模式
前文回顾 建议前面文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 「老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩.击穿. ...
- Redis学习三:Redis高可用之哨兵模式
申明 本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源! 感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫 22.jpg 前言 Redis 的 Sentinel 系统用于管理多个 Redi ...
- Redis高可用方案-哨兵与集群
Redis高可用方案 一.名词解释 二.主从复制 Redis主从复制模式可以将主节点的数据同步给从节点,从而保障当主节点不可达的情况下,从节点可以作为 后备顶上来,并且可以保障数据尽量不丢失(主从 ...
- redis高可用(哨兵机制)
redis哨兵机制:redis的哨兵系统用于管理多个reids服务器,该系统主要有三个作用: 监控:哨兵 会不断地检查你的主服务(Master)和从服务器(Slave)是否运作正常. 提醒:当被监控的 ...
- Redis高可用-主从,哨兵,集群
主从复制 Master-Slave主从概念 同时运行多个redis服务端,其中一个作为主(master),其他的一个或多个作为从(slave),主从之间通过网络进行通讯,slave通过复制master ...
- 老司机带你玩转面试(3):Redis 高可用之主从模式
前文回顾 建议前面文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 「老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩.击穿. ...
- Redis高可用方案哨兵机制------ 配置文件sentinel.conf详解
Redis的哨兵机制是官方推荐的一种高可用(HA)方案,我们在使用Redis的主从结构时,如果主节点挂掉,这时是不能自动进行主备切换和通知客户端主节点下线的. Redis-Sentinel机制主要用三 ...
随机推荐
- 在.slurm文件中激活Anaconda环境
超算中心使用slurm作为集群调度.原始slurm脚本如下: source activate tensorflow-gpu python neural_style.py --content conte ...
- under the hood
under the hood adjective a metaphorical area that contains the underlying implementation of somethin ...
- vscode 占内存的方法
1.修复vs code 造成 rg.exe内存占用过大的问题 search.followSymlinks: false 2.修复vs code 造成 git.exe内存占用过大的问题 git.enab ...
- koa 基础(十二)koa-static 静态资源中间件 静态web服务
1.目录 2.app.js /** * koa-static 静态资源中间件 静态web服务 * 1.npm install --save koa-static * 2.const static = ...
- windows上配置pytorch
操作系统:win10 已安装程序:Python 3.6 + Anaconda 5.1.0 + CUDA 9 pytorch官网:https://pytorch.org/ 1.进入官网,从Get Sta ...
- C++学习 之 初识变量和基本类型 之 内置类型
声明: 本人自学C++, 没有计算机基础,在学习的过程难免会出现理解错误,出现风马牛不相及的现象,甚至有可能会贻笑大方. 如果有幸C++大牛能够扫到本人的博客,诚心希望大牛能给予 ...
- MessageBox 弹框
模拟系统的消息提示框而实现的一套模态对话框组件,用于消息提示.确认消息和提交内容. 从场景上说,MessageBox 的作用是美化系统自带的 alert.confirm 和 prompt,因此适合展 ...
- centos的KVM初级安装
什么是KVM虚拟化技术?KVM(Kernel-based Virtual Machine),主流虚拟化技术之一,集成与Linux2.6之后版本中,通过linux内核提供任务调度及管理.kvm,在实现虚 ...
- 注册 Ironic 裸金属节点并部署裸金属实例
目录 文章目录 目录 前文列表 注册(Enrollment)裸机 创建裸金属实例的 Flavor 部署裸金属实例 日志分析 问题:Failed to create neutron ports for ...
- Intervals and Timeouts
Intervals var num = 0; var max = 10; function incrementNumber(){ num++; // if the max has not been r ...