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机制主要用三 ...
随机推荐
- win7安装Elasticsearch和Elasticsearch-Head插件
1.环境搭建 1)Java环境搭建可以参考相关的资料,这里不做详细介绍 2)nodejs环境搭建 到官方网站下载相应的zip包:https://nodejs.org/dist/v8.9.1/node- ...
- flask 第四篇 模板语言jinja2
是时候开始写个前端了,Flask中默认的模板语言是Jinja2 现在我们来一步一步的学习一下 Jinja2 捎带手把 render_template 中留下的疑问解决一下 首先我们要在后端定义几个字符 ...
- 编写可维护的JavaScript代码(部分)
平时使用的时VS来进行代码的书写,VS会自动的将代码格式化,所有写了这么久的JS代码,也没有注意到这些点.看了<编写可维护的javascript代码>之后,做了些笔记. var resul ...
- rocketmq的linux搭建环境
3.3. 上传解压[两台机器] # 上传 apache-rocketmq.tar.gz 文件至/usr/local # tar -zxvf apache-rocketmq.tar.gz -C /usr ...
- windows驱动程序
官网文档 https://docs.microsoft.com/zh-cn/windows-hardware/drivers/
- APP营销软件项目常见(合规)风险评估
一个软件项目开始前,往往需要先进行风险评估以及可行性评估,尤其涉及到营销拉新类项目,需要大量依靠用户二次分享传播,为了避免项目做了无用功,分享一些常见的App项目风险: 微信分享功能 风险: 1.蒙层 ...
- 五十二:WTForms表单验证之基本使用
作用:1.做表单验证,把用户提交的数据验证是否合法2.做模板渲染 安装:pip install wtforms 表单验证1.自定义一个表单类,继承wtforms.Form2.定义好需要验证的字段,字段 ...
- kubernetes学习:CKA考试认证(二)
1. 它题的意思是 在 development 名称空间里面 找到名为 baz的 service 然后通过这个service的selector 找出 对应的pod . 要用 kubectl des ...
- koa-session 持久化
一.使用mongoose链接数据库 'use strict'; const mongoose = require('mongoose'); const config = require('config ...
- idea debug的drop frame,set watch和设置过滤条件
idea debug中的drop frame就是回退到上一个方法调用的开始处,在IDEA里测试无法一行一行地回退或回到到上一个断点处,而是回到上一个方法. 在调用栈方法上选择要回退的方法,右键选择Dr ...