范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

三台服务器使用docker搭redis哨兵,概念整合springboot

  一、前言
  redis在我们企业级开发中是很常见的,但是单个redis不能保证我们的稳定使用,所以我们要建立一个集群。
  redis有两种高可用的方案: High availability with Redis Sentinel(哨兵) Scaling with Redis Cluster(分片集群)
  第一个就是我们本次的要搭建的,就是高可用的哨兵,主redis挂掉,哨兵会进行投票进行 故障转移  !
  第二个就是分片集群,哨兵的一个缺点就是只能存在一个master节点,写的效率太低。分片集群就是解决哨兵的问题,可以水平扩展,提高redis的性能!
  哨兵最低配是三哨兵,以奇数递增。
  分片集群最低配是三主三从。
  小编之前写过一篇在一台机器上搭建的文章,大家有兴趣可以先去体验一下,实际生产上不会让你一台机器上;也没有任何意义,服务器挂了,再多的集群也全部挂掉了!!
  docker compose搭建redis7.0.4高可用一主二从三哨兵集群并整合SpringBoot【图文完整版】二、准备
  首先我们要准备:
  三台服务器(没有的条件的搭三个虚拟机),巧了小编就是虚拟机哈!
  三台机器的ip和名称在表格里整理一下!
  ip
  redis节点名称
  sentinel节点名称
  192.168.239.131
  redis-master
  redis-sentinel-1
  192.168.239.130
  redis-slave-1
  redis-sentinel-2
  192.168.239.128
  redis-slave-2
  redis-sentinel-3 三、Sentinel概念
  Redis Sentinel 在不使用Redis Cluster时为 Redis 提供 高可用性  。
  Sentinel功能的完整列表: 监控  :Sentinel 不断检查您的主实例和副本实例是否按预期工作。通知  :Sentinel 可以通过 API 通知系统管理员或其他计算机程序,其中一个受监控的 Redis 实例出现问题。自动故障转移  :如果 master 没有按预期工作,Sentinel 可以启动一个故障转移过程,其中一个副本被提升为 master,其他额外的副本被重新配置为使用新的 master,并且使用 Redis 服务器的应用程序被告知要使用的新地址连接时。自动更新配置  :Sentinel 充当客户端服务发现的权威来源:客户端连接到 Sentinels 以询问负责给定服务的当前 Redis master 的地址。如果发生故障转移,Sentinels 将报告新地址。
  官方哨兵搭建条件: 您至少需要 三个 Sentinel 实例  才能进行可靠的部署。三个 Sentinel 实例应该放置在被认为以独立方式发生故障的计算机或虚拟机中。因此,例如 在不同可用区上执行的不同物理服务器或虚拟机  。
  详细介绍和使用:请见官网 --->官网详细文档:https://redis.io/docs/management/sentinel/ 四、一主二从搭建
  话不多说,咱们直接开始搭建哈! 1. 创建挂载目录
  三台机器上新建目录:
  首先我们开启三个xshell窗口,然后同时操作三个窗口创建
  在这里插入图片描述
  然后再左下角选择发送到全部窗口! cd / mkdir mydata cd /mydata mkdir redis cd redis mkdir data mkdir conf cd conf 2. 在`192.168.239.131`机器上编辑文件vim redis.conf
  输入以下内容: # 任何都可以连接redis bind 0.0.0.0 # 配置master密码 requirepass 123456 # 宕机后成为从要连接master的密码 masterauth 123456 # 开启持久化 appendonly yes
  在这里插入图片描述 3. 在`192.168.239.130`机器上编辑文件vim redis.conf
  输入以下内容: # 配置master的ip和端口号 replicaof 192.168.239.131 6379 # 任何都可以连接redis bind 0.0.0.0 # 成为master后的密码 requirepass 123456 # 连接master密码 masterauth 123456 # 开启持久化 appendonly yes
  在这里插入图片描述 4. 在`192.168.239.128`机器上编辑文件vim redis.conf
  输入以下内容: # 配置master的ip和端口号 replicaof 192.168.239.131 6379 # 任何都可以连接redis bind 0.0.0.0 # 成为master后的密码 requirepass 123456 # 连接master密码 masterauth 123456 # 开启持久化 appendonly yes 5. `192.168.239.131`启动redisdocker run -p 6379:6379 --name redis-master  -v /mydata/redis/data:/usr/local/etc/redis/data  -v /mydata/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf  -d redis redis-server /usr/local/etc/redis/redis.conf
  查看启动日志: docker logs -f redis-master
  在这里插入图片描述 6. `192.168.239.130`启动redisdocker run -p 6379:6379 --name redis-slave-1  -v /mydata/redis/data:/usr/local/etc/redis/data  -v /mydata/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf  -d redis redis-server /usr/local/etc/redis/redis.conf
  可以看到已经连接到master节点了!
  在这里插入图片描述
  7. `192.168.239.128`启动redis
  docker run -p 6379:6379 --name redis-slave-2  -v /mydata/redis/data:/usr/local/etc/redis/data  -v /mydata/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf  -d redis redis-server /usr/local/etc/redis/redis.conf
  在这里插入图片描述 8. 进入`192.168.239.130`容器查看
  我们查看master日志,可以看到两个从节点已经加入进来了!
  在这里插入图片描述
  我们进入容器进行在次查看: docker exec -it redis-master /bin/bash
  连接redis: redis-cli
  登录redis auth 123456
  在这里插入图片描述
  查看从节点: info
  也是可以看到有两个从节点!
  在这里插入图片描述 五、搭建三哨兵sentinel1. 创建挂载目录
  还是三个虚拟机一起创建 mkdir sentinel cd sentinel vim sentinel.conf
  输入下面内容: port 26379 sentinel monitor redis-master 192.168.239.131 6379 2 sentinel auth-pass redis-master 123456 sentinel down-after-milliseconds redis-master 6000 sentinel parallel-syncs redis-master 1 sentinel failover-timeout redis-master 6000
  第二行:Redis 监控一个名为redis-master的redis集群,我们可以随意写;后面就是ip,我们宿主机的ip即可,端口为主redis的端口;2为哨兵投票的票数,当主redis宕机,三个哨兵必须两个哨兵都投票的redis才会变为主!!
  第三行:配置master的密码
  第四行:Sentinel判断实例进入主观下线所需的时间,毫秒单位。
  第五行:限制在一次故障转移之后,每次向新的主节点同时发起复制操作节点个数,越大效率越慢。
  第六行:在指定的时间内未能完成failover故障转移,则任务故障转移失败。
  在这里插入图片描述 2. 运行`192.168.239.131`哨兵docker run -p 26379:26379 --name redis-sentinel-1  -v /mydata/redis/sentinel/sentinel.conf:/usr/local/etc/redis/sentinel.conf  -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf 3. 运行`192.168.239.130`哨兵docker run -p 26379:26379 --name redis-sentinel-2  -v /mydata/redis/sentinel/sentinel.conf:/usr/local/etc/redis/sentinel.conf  -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf 3. 运行`192.168.239.128`哨兵docker run -p 26379:26379 --name redis-sentinel-3  -v /mydata/redis/sentinel/sentinel.conf:/usr/local/etc/redis/sentinel.conf  -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf 4. 待解决问题
  这里创建三个哨兵,查看却是有四个,不知道什么问题,换了虚拟机还是不行!有大佬懂的可以分享一下哈!!
  在这里插入图片描述 六、测试主从和故障转移1. 测试主从复制
  master节点创建一个键值对: set a b
  在这里插入图片描述
  从查看key是否存在: get a
  在这里插入图片描述
  主从没有问题哈! 2. 测试故障转移
  我们把master停掉,查看一个哨兵的日志: docker stop redis-master docker logs -f redis-sentinel-1
  我们看到192.168.239.130成为master!
  在这里插入图片描述
  重新启动原来的master:
  docker restart redis-master
  在这里插入图片描述
  故障转移成功!! 七、整合springboot1. 导入依赖
  小编的springboot版本为: 2.7.4       org.springframework.boot     spring-boot-starter-data-redis       org.springframework.boot     spring-boot-starter-web  2. yml配置
  password密码和sentinel同级,不然找不到密码,验证失败  server:   port: 8087  spring:   redis:     # 密码和sentinel同级,不然找不到密码,验证失败     password: 123456     sentinel:       # sentinel.conf里的集群名称       master: my-master       # 我们只需要连哨兵即可,哨兵内部会帮我们找到redis       nodes:         - 192.168.239.131:26379         - 192.168.239.130:26379         - 192.168.239.128:26379 3. json序列化配置/**  * @author wangzhenjun  * @date 2022/11/24 10:37  */ @Configuration public class RedisConfig {      @Bean     @SuppressWarnings(value = { "unchecked", "rawtypes" })     public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory)     {         RedisTemplate template = new RedisTemplate<>();         template.setConnectionFactory(connectionFactory);         Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(Object.class);          // 使用StringRedisSerializer来序列化和反序列化redis的key值         template.setKeySerializer(new StringRedisSerializer());         template.setValueSerializer(serializer);          // Hash的key也采用StringRedisSerializer的序列化方式         template.setHashKeySerializer(new StringRedisSerializer());         template.setHashValueSerializer(serializer);          template.afterPropertiesSet();         return template;     } } 4. 新建controller测试/**  * @author wangzhenjun  * @date 2022/11/24 10:37  */ @RestController public class TestController {      @Autowired     private RedisTemplate redisTemplate;      @GetMapping("/redis")     public void saveRedis(){         redisTemplate.opsForValue().set("test","看到我就成功了");     } } 5. 测试
  http://localhost:8087/test/redis
  在这里插入图片描述
  6. 查看redis
  在这里插入图片描述 八、总结
  经过一天的搭建,终于完成了,虽然不是完美的,但是大体功能是没有问题的!但是不影响故障转移和主从复制!
  唯一的遗憾:三个哨兵,查看就是四个!从第三个哨兵加入后变为4个!
  如果对你有帮助,还请不要吝啬您的发财小手,你的一键三连是我写作的动力,谢谢大家哈!!
  可以看下小编的微信公众号,和网站文章首发看,欢迎关注,一起交流哈!!

测评丨爬楼旅行必备三脚架今天我们来讲讲一款小巧便捷但力气不小的家伙说起富图宝的M4C三脚架,喜爱城市风光摄影的朋友们一定不会陌生。作为摄影圈内的爬楼神器,因其轻便收纳体积小稳定性高等诸多优点,爬楼党们几乎重男轻女物种命名也有性别偏见文李木子这种马来西亚的蘑菇(Spongiformasquarepantsii)就是以卡通人物命名的。图片来源TOMBRUNSMUSHROOMOBSERVERWIKIMEDIACOM留住核心!曝新疆男篮同摩尔特里完成续约下赛季力争重返季后赛北京时间6月22日,据知名篮球记者宋翔报道,新疆男篮同摩尔特里完成续约。在新的赛季里,新疆男篮也将向着重返季后赛的目标发起冲击。摩尔特里已在CBA征战三个赛季,相继为北控同曦和新疆CBA曝巩晓彬亲口承认出山,吉林要签约宗赞,新疆续约摩尔特里休赛期的山东男篮虽然经历了徐长锁下课,丁彦雨航底薪加盟上海,王晗担任主教练等,但是在球迷的心中,依旧不能忘记的是巩晓彬。作为山东男篮名宿,功勋人物,巩晓彬为山东男篮做出了很大的贡献千亿文玩电商的未来,是欠钱欠薪卷款跑路?万物皆可电商?别逗了。号称规模千亿的文玩电商市场,头部平台就刚崩了一个。这个平台叫天天鉴宝,是一个聚焦珠宝玉石文玩把件的线上社区和电商交易平台,曾经1年多融资4000万美元,背后汇2021全球百大最佳品牌,美国独占鳌头ampampamp包揽前四,中国仅华为上榜近日,2021年智研年榜全球百大最佳品牌正式出炉,美国包揽前四,中国仅华为入选在这份全球一百大最佳品牌排行榜中,苹果居首,亚马逊紧随其后,微软谷歌和三星排名前五位。可口可乐丰田奔驰机器人总动员!中国宝武推动万名机器人上岗中国宝武将掀起机器人规模化应用热潮!6月20日,中国宝武召开万名宝罗上岗实施动员大会,推动计划早日落地。万名宝罗上岗计划宝罗是宝武机器人BAORobot的简称。中国宝武明确推进万名2022年6月16日抖音电商变动最新规定本周共更新40条规则,其中6条公告,8条规则意见征集,12条规则公示通知,14条规则正式生效。具体内容如下,可点击查阅规则名称所属类型影响范围重点内容1hr关于深圳中融小贷疫情扶持核聚变研究成功后,电费会降到多少钱?会实现免费用电吗?受日本福岛核电站核泄露事故影响,国际社会对核电站发电普遍存在担忧情绪。而作为替代的风能太阳能以及水能发电等,还远不足以取代核能发电所占比重。2021年,我国实现发电总量达81121巨头局终战即时零售图片来源视觉中国文光子星球,作者何芙蓉,编辑吴先之社区团购之后,巨头们的注意力又齐刷刷的转向了即时零售。美团京东阿里拼多多等企业均在此行列。一位电商零售行业人士表示,即时零售重在考46万转入余额宝三年才可取出,支付宝回应来了6月22日,针对近日一则男子46万元资金在账户中无法取出的问题,支付宝安全中心官微进行了声明。声明称,根据举报信息和平台风险系统识别,该用户的账户交易行为存在异常情形,需要核实是否
墨西哥美洲全新第二客场球衣曝光国外球衣网站Todosobrecamisetas曝光了墨西哥美洲俱乐部2022年全新第二客场球衣谍照。从谍照中能够看到,由耐克为其打造的这款新球衣采用了别致的黑薄荷绿配色以及颇具当冰雪复古传奇手游能打金?一位两个月商人的自传因为情怀。作为中国大陆第一个真正称得上大火的网络游戏,曾经的那一大批玩家现在都是社会各阶层的主要力量,他们已经不再缺钱甚至不缺时间,为了找回曾经的传奇记忆,很乐意在这种游戏上进行尝云顶之弈快乐上分玩法之巨型大虫子一口一个嘎嘣脆云顶之弈快乐上分玩法之巨型大虫子一口一个嘎嘣脆阵容组成有主C科加斯必备装备泰坦的坚决救赎。泰坦的坚决,当携带者受到伤害暴击时,获得可叠加的2攻击力和法术强度。这个效果最多可以叠加2坚持还是放弃?体制内合同工的挣扎和心酸当你仍然还在幻想你的明天她会好吗还是更烂对我而言是另一天我曾经毁了我的一切只想永远地离开我曾经堕入无边黑暗想挣扎无法自拔朴树。平凡之路刘浩躺在床上翻来覆去的睡不着了,耳机里这首平凡放弃你的打底裤吧!今冬流行穿这3款裤子,实用高级又显腿长打底裤因为穿搭简单而一直在女性衣橱里占据一席之地,不过随着时尚发展,打底裤已经难以满足中年女人对时髦优雅与高级感的追求,像冬季直接用打底裤搭配大衣或者羽绒服,整体着装都偏单调乏味。命运弄人!40岁仍单身,上天给了潘晓婷绝世容颜却迟迟不给她爱情空有绝世容颜,40岁仍未寻得真爱,潘晓婷的活法让人佩服再过两个月就是潘晓婷的40岁生日了。这位1982年出生的大姑娘已经到了不惑之年,虽然拿到了各种世界台球赛的冠军,但是在爱情上并65岁老人哭诉生病了不要拖,没有什么比健康还重要,大家别学我导语人到老年之时,抵抗力会明显感觉到下降,除了那些坚持锻炼,注重身体健康和养生的老人们,要不然随着年龄的增长,大大小小的病都是会找上门,遇到这种情况的时候,有一些老人就会自己解决,强对应性破缺和弱对应性破缺科学和哲学有什么不同?举例说来,科学哲学的对应性破缺原理既包括了事物的对称性破缺原理,也包括了事物的非对称性破缺原理,而物理学只有对称性破缺原理的形式。物质和反物质构成了对称性关系恶心,我们也要先忍着这两天,有人说在英特尔官方网站可以查到以下中文版信息(同时还有英文版和日文版),大致内容是说英特尔需要确保我们的供应链不使用任何来自新疆地区的劳工采购产品或服务。赶紧去查阅相关信息一条龙洗浴中心,有人曾花钱过夜,如今为何也没人去了?你知道吗?根据国家统计局发布的数据显示,2021年11月份,服务业生产指数同比增长了3。1,比上月回落0。77百分点两年平均增长5。6,加快了0。1个百分点。从目前所得知的数据来看别说秋冬基础色普通,这9套穿搭告诉你什么是高级感,超亮眼有时候服饰能否展现出高级感,只需要看一眼就清楚。那么究竟如何才能将服饰穿出高级感呢?小编推荐大家多尝试基础色系。当然,这里的基础色系并不是仅仅指黑白灰,还包括冬日基础色大地色。利用