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

dockercompose搭建redis7。0高可用一主二从三哨兵整合SpringBoot

  一、前言
  redis在我们企业级开发中是很常见的,但是单个redis不能保证我们的稳定使用,所以我们要建立一个集群。
  redis有两种高可用的方案:  High availability with Redis Sentinel  Scaling with Redis Cluster
  第一个就是我们本次的要搭建的,就是高可用的哨兵,主redis挂掉,哨兵会进行投票进行 故障转移  !
  第二个就是分片集群,哨兵的一个缺点就是只能存在一个master节点,写的效率太低。分片集群就是解决哨兵的问题,可以水平扩展,提高redis的性能!
  哨兵最低配是三哨兵,以奇数递增。
  分片集群最低配是三主三从。
  本次以一台虚拟机进行搭建,小编也是搭建了一星期,主从没啥问题,就是故障转移不行,根本原因就是 docker网络  的问题,redis和哨兵不在一个网段中。很多教学都是用host,但是不知道现在不能启动成功,所以还是要在一个网络中!
  本次一体验为主,太多知识性的问题,大家可以去官网看一下。
  redis官网:  https://redis.io/docs/manual/sentinel/二、docker和docker compose安装
  docker和docker compose安装使用、入门进阶案例_掉发的小王的博客-CSDN博客三、启动redis主从1. 创建一个redis-sentinel-test文件夹mkdir redis-sentinel-test 2. 在里面创建两个文件夹cd redis-sentinel-test/ mkdir redis mkdir sentinel 3. 在redis创建compose文件
  必须以docker-compose.yml命名,本次测试redis就不挂载目录到宿主机了,需要的可以使用 volumes  挂载到宿主机! vim docker-compose.yml 4. 编辑compose文件
  这里为了测试方便,就不设置密码了!
  protected-mode no  :关闭就可以其他地方连接使用了
  slave-announce-ip  :使用宿主机的ip version: "4.1" services:   master:     image: redis:7.0.4     container_name: redis-master     command: bash -c "redis-server --protected-mode no --slave-announce-ip 192.168.84.143 --slave-announce-port 6379"     ports:       - 6379:6379   slave1:     image: redis:7.0.4     container_name: redis-slave-1     ports:       - 6380:6379     command:  bash -c "redis-server --protected-mode no --slaveof redis-master 6379 --slave-announce-ip 192.168.84.143 --slave-announce-port 6380"   slave2:     image: redis:7.0.4     container_name: redis-slave-2     ports:       - 6381:6379     command: bash -c "redis-server --protected-mode no --slaveof redis-master 6379 --slave-announce-ip 192.168.84.143 --slave-announce-port 6381" 5. 启动redis主从
  compose更新了,启动由原来的 -  变成了空格   docker compose up -d
  在这里插入图片描述  6. 重点提醒
  我们启动后,docker compose会自动创建一个网络,就是以文件夹的名称+_default命名!
  我们在编写sentinel的compose文件时, 要使用这个默认的网络  ,不然就不在一个网段,故障转移无法切换!!  docker network ls
  在这里插入图片描述  7. 查看主从状态
  进入主redis:
  e77为容器id   docker exec -it e77 /bin/bash redis-cli
  在这里插入图片描述
  查看状态信息:   info
  在这里插入图片描述
  8. 测试主从
  在这里插入图片描述
  在这里插入图片描述  四、启动三个哨兵1. 切换到sentinel文件夹cd .. cd sentinel/ 2. 创建sentinel.conf文件
  我们去官网找一个最低配的文件:
  redis官网:  https://redis.io/docs/manual/sentinel/#sentinel-docker-nat-and-possible-issues
  因为这是两个实例,咱们只需要一个,所以只需要前四行即可:  protected-mode no sentinel monitor mymaster 192.168.84.143 6379 2 sentinel down-after-milliseconds mymaster 60000 sentinel failover-timeout mymaster 180000 sentinel parallel-syncs mymaster 1
  第一行:Redis 监控一个名为mymaster的redis集群,我们可以随意写;后面就是ip,我们宿主机的ip即可,端口为主redis的端口;2为哨兵投票的票数,当主redis宕机,三个哨兵必须两个哨兵都投票的redis才会变为主!!
  第二行:Sentinel判断实例进入主观下线所需的时间,毫秒单位。
  第三行:在指定的时间内未能完成failover故障转移,则任务故障转移失败。
  第四行:限制在一次故障转移之后,每次向新的主节点同时发起复制操作节点个数,越大效率越慢。
  在这里插入图片描述
  创建sentinel1.conf文件,把上面四行粘贴进来!  vim sentinel1.conf
  在这里插入图片描述
  复制两份,不需任何修改:  cp sentinel1.conf sentinel2.conf cp sentinel1.conf sentinel3.conf 3. 编写conpose文件version: "4.2" services:   sentinel1:     image: redis:7.0.4     container_name: redis-sentinel-1     ports:       - 26379:26379     command: redis-sentinel /usr/local/etc/redis/sentinel.conf     volumes:       - /mydata/redis-sentinel-test/sentinel/sentinel1.conf:/usr/local/etc/redis/sentinel.conf   sentinel2:     image: redis:7.0.4     container_name: redis-sentinel-2     ports:     - 26380:26379     command: redis-sentinel /usr/local/etc/redis/sentinel.conf     volumes:       - /mydata/redis-sentinel-test/sentinel/sentinel2.conf:/usr/local/etc/redis/sentinel.conf   sentinel3:     image: redis:7.0.4     container_name: redis-sentinel-3     ports:       - 26381:26379     command: redis-sentinel /usr/local/etc/redis/sentinel.conf     volumes:       - /mydata/redis-sentinel-test/sentinel/sentinel3.conf:/usr/local/etc/redis/sentinel.conf networks:   default:       name: redis_default       external: true
  networks:是呼应上面说的sentinel要和redis在一个网络里,这样才可以完成故障转移!  4. 查看文件树tree
  如果没有可以安装一下:  yum -y install tree
  在这里插入图片描述
  5. 启动哨兵   docker compose up -d
  在这里插入图片描述  6. 查看哨兵信息
  进入哨兵容器:  docker exec -it c8 /bin/bash
  连接哨兵:  redis-cli -p 26379 info
  在这里插入图片描述
  一主二从三哨兵完成
  在这里插入图片描述  7. 故障转移测试
  我们把master给停掉:  docker stop e77 8. 故障转移日志docker compose logs -f
  在这里插入图片描述
  9. 查看哨兵状态
  在这里插入图片描述
  此时主节点已自动切换为 6381  端口。 10. 重启`6379`服务docker restart e77
  我们发现刚刚新加入的6379会以从节点加入到主节点中!!
  在这里插入图片描述  五、整合SpringBoot1. 导入依赖
  小编的springboot版本为: 2.3.7.RELEASE        org.springframework.boot     spring-boot-starter-data-redis       org.springframework.boot     spring-boot-starter-web  2. yml配置server:   port: 8084 spring:   redis:     sentinel:       # sentinel.conf里的集群名称       master: mymaster       # 我们只需要连哨兵即可,哨兵内部会帮我们找到redis       nodes:         - 192.168.84.143:26379         - 192.168.84.143:26380         - 192.168.84.143:26381 3. json序列化配置/**  * @author wangzhenjun  * @date 2022/8/18 16: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/8/18 17:48  */ @RestController public class TestController {      @Autowired     private RedisTemplate redisTemplate;      @GetMapping("/test")     public void saveRedis(){         redisTemplate.opsForValue().set("name","看到我就成功了");     } 5. 项目结构
  在这里插入图片描述
  6. 测试
  在这里插入图片描述
  在这里插入图片描述
  7. 查看redis是否有值
  在这里插入图片描述
  在这里插入图片描述  六、总结
  小编经过一个星期的搭建终于完成了 ,最大的问题就是网络问题,最后终于解决了!!看了很多视频和教学,有的太模糊,小编特地花一天时间整体一个无坑版,希望能够帮到后来人!!
  看到这里还不一键三连走起来!!谢谢大家了!!
  有缘人才可以看得到的哦!!!
  可以看下小编的微信公众号,和网站文章首发看,欢迎关注,一起交流哈!!
  小王博客站

李佳琦直播间公开怼女助理请别用你的三观,去要求整个世界距离李佳琦回归直播快两个月了,有人说李佳琦低调了不少。他不再用人间唢呐让消费者买它买它,而是一再提醒大家理智消费,快乐购物最低价的宣传词也几乎不再出现,还大力扶持助播团。但就算如此DNF大转移前60版本剧情3冒险开始与初入洛兰之前说到冒险家兴高采烈地来到林纳斯的铁匠铺,但除了一枚徽章什么都没有得到,甚至什么都没问就要被林纳斯赶走。冒险家一时有些着急,他急忙向林纳斯解释,说自己想要了解一下艾尔文防线,也想我接触了10对老夫少妻后发现,喜欢年长男人的女人,都有一个共性你见过不破坏别人家庭的小三吗?在心理咨询中,我们总会接到这样一群来访女性,他们的感情和婚姻总是出现问题。你会发现,这类女性爱上的男人,都比他们大上几十岁,遇到结婚的,她们总是忍不住开车去欧洲第23集在阿姆斯特丹红灯区,2名荷兰壮汉挑衅被我怼46000公里,152天,21国,这是2018年我带着爸妈走过的漫长自驾旅程。我们一路从中国开车抵达了法国,自驾穿越了亚欧两大洲,从夏季出发,到冬季回国,我们历经坎坷,经历难忘。令这些曾火遍全国的歌曲,歌词明明不正经,却火的一塌糊涂文娱情故纵编辑娱情故纵前言这些年不少网友在重听以前的一些热歌之后,才发现原来那些每天充斥在耳边的爆火神曲们,实际上歌词竟然是如此的毁三观。甚至里面的内容还让人感到极其羞耻,并且有一新时代美好生活的哲理表达美好生活是千百年来仁人志士反复思考的哲学命题,也是人类在社会实践活动中可能实现的一种理想生活状态。美好生活是人类社会的永恒追求,是贯穿在整个人类社会发展进程中的动力之源。习近平总书新时代美好生活的哲理表达美好生活是千百年来仁人志士反复思考的哲学命题,也是人类在社会实践活动中可能实现的一种理想生活状态。美好生活是人类社会的永恒追求,是贯穿在整个人类社会发展进程中的动力之源。习近平总书重庆市璧山区七塘镇莲花穴院落蝶变乡村焕新彩(艺术赋能美好生活)莲花穴现场艺术作品。重庆市璧山区委宣传部供图莲花穴剧场。曾清龙摄莲花穴现场艺术作品。曾清龙摄2021莲花穴重庆乡村艺术集活动市集板块现场。王淼摄村路沿着稻田延展,五彩的谷穗泛起层层京口三山行文席波水漫金山的典故尽人皆知,镇江也因此闻名遐迩。知道镇江有金山的人很多,但知道镇江还有焦山和北固山的,恐怕就少得多了。其实,镇江三山是指镇江市长江江滨和江中的金山焦山北固山,这三阳光总在风雨后?石家庄走全国第一位?未来开放并不意味着躺平?三年来都累了?自从新冠爆发以来到现在,也已经有三年时间了,三年一路以来,对我们生活工作,出国旅游,走亲访友,带来很大的不便利,我们也希望这种日子早点过去,回到曾经三年以前的那种自由海南风情(021)彰显爱国情怀的蔡家宅原创党凤山11月14日,游览了沙美村之后,接着到附近的留客村,参观了于民国初期下南洋的老一代华侨蔡家森先生宅院一一蔡家宅。从中得知,一代商贾的传奇人生,感受到侨领的爱国情怀。蔡家宅
宇航员亲述在太空遭遇的诡异幻觉,难道太空中真有神秘力量?综述宇宙到底有多大?这是一个无数人探索了很久都得不出结果的命题,在今天,我们利用有限的科技,暂时窥探到可见宇宙的一部分面貌,这才让我们发现了人类的渺小。如果将宇宙比作人类的躯体,那七爪源码为什么要处理丢失的数据以及如何处理使用Pandas处理缺失数据的综合指南在每个现实世界的数据集中,丢失数据值几乎是不可避免的,在典型的数据收集过程中几乎不可能避免。这可能由于各种原因而发生,例如数据输入过程中的错误鼎盛金师今日黄金低位震荡,加息预期增强,多头顾虑重重9。14今日黄金行情走势分析周三(9月14日)亚欧时段,现货黄金窄幅震荡,目前交投于1702。36美元盎司,隔夜出炉的美国8月CPI数据意外强于预期,强化了下周美联储决议至少加息7就在今天,上合大会召开,3大细节,多国排长队申请,西方好好学上海合作组织成员国元首理事会第二十二次会议即将在乌兹别克斯坦撒马尔罕举行。上合组织成员国领导人将出席会议并就经济安全等丰富议题展开探讨。可以说,在当前非常复杂的国际形势下,本次会议认真聊一下全球经济的恶化程度作者智先生任正非的一番内部讲话,让整个市场环境风声鹤唳,寒气凌然。这段时间我也看了不少内外网的观点,有的说中国二季度GDP大跌,远远落后于其它国家,是自身不行,不要扯什么大环境有的必须得让老百姓手里有钱,才能化解现代经济危机今天跟一个朋友谈到关于上头会不会真的让老百姓手里有钱的问题,我的观点是必须让老百姓手里有钱,不然经济将停滞,工厂将停产。我的逻辑很简单,老百姓手里没钱,那么工厂生产的产品就是废品,玩具大王蔡志明潮汕穷学生变身81亿老板,靠史努比拿下第一桶金他是香港身价亿万的隐形富豪,是全球最大的玩具供应商。他就是蔡志明,从潮汕穷学生变为全球玩具大王的传奇人物。早在2020年,蔡志明就以81亿美元的个人财富跻身香港五十富豪之列,但鲜为工业冷却水系统生物膜监控案例大型工业冷却水系统(CWS)中,特别是第一次通过冷却系统(OTC),表面上的生物生长,通常称为生物污垢的现象,会导致许多问题。第一阶段,在几个小时内形成的一层细菌(生物膜)已经有助2002年,福建发现孙悟空墓,还有金箍棒,难道孙悟空真实存在过?历史上有过很多古老的传说,虚虚实实的让人难以分辨,比如很多神仙其实在人间都有原型人物。神话故事都是虚构的,但因为原型人物的存在,使得他们有了一定的神秘感。为了求证这些神话故事背后的骨头王对神秘敌人下跪的真正原因头条创作挑战赛开局满级,和空气斗智斗勇的安兹乌尔恭竟然对着敌人下跪了,老实说我很懵。难道安兹乌尔恭不是最强的,不过看到结局,我才明白,这原来都是他的计谋。看到里耶斯提杰王国的人为了东亚地区为何都是怪物,随便挑出一个国家,居然能在欧洲称霸东亚五国,除蒙古外,把任何一个国家单独移到欧洲,中东这些地方,都是该地区霸主级的存在,但就是这五个国家,居然全部位于东亚,于是在国际上,东亚五国便有了一个外号名为东亚怪物房,那么何