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

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是否有值
  在这里插入图片描述
  在这里插入图片描述  六、总结
  小编经过一个星期的搭建终于完成了 ,最大的问题就是网络问题,最后终于解决了!!看了很多视频和教学,有的太模糊,小编特地花一天时间整体一个无坑版,希望能够帮到后来人!!
  看到这里还不一键三连走起来!!谢谢大家了!!
  有缘人才可以看得到的哦!!!
  可以看下小编的微信公众号,和网站文章首发看,欢迎关注,一起交流哈!!
  小王博客站

早餐是能量之源,推荐5道营养早餐,每天照着做,好吃不重样俗话说早餐是人体的能量之源,如果一天不吃早餐,人体内就会缺乏足够的能量供应,会使人感到倦怠,疲劳等,工作和学习也无法集中精神,所以早餐要吃好,更要吃的全面营养。尤其是中老年人和上学全国哪的酱油最正宗?经过对比,这5款脱颖而出,你的家乡上榜没人世间,唯有爱与美食不可辜负!大家好,我是爱分享的晓楠!今天这期,带领大家了解各地的酱油。生活嘛,无非就是柴米油盐酱醋茶。其中的酱,也就是我们日常所说的酱油。在古代,它是作为皇帝的葡萄干直接吃,还是洗了再吃?听听新疆人怎么说,很多人都吃错了葡萄干直接吃,还是洗了再吃?听听新疆人怎么说,很多人都吃错了葡萄是非常健康的水果,含有丰富的营养物质,比如糖分维C维E花青素白藜芦醇活性物质,有抗氧化防衰老美容养颜提高抵抗力等作用蒸包子,不要直接上锅,3个诀窍告诉您,包子又白又松软,不塌陷蒸包子,不要直接上锅,3个诀窍告诉您,包子又白又松软,不塌陷秋天了,多买点肉吃吧,补补身体才好过秋,猪肉这段时间的价格,比之前便宜了一点,买一大块冻在冰箱里,不用整天出去买了。不知花生米咀嚼起来津津有味花生米咀嚼起来津津有味,它不仅解饿也解馋。现在的高档宴席上,家常的餐桌上,基本上都有花生米这一道菜。小小的花生米,香喷喷的,有时,还真有点让人馋得流口水。花生米可生食,也可油炸,可86分钟轰20!中国金花送蛋晋级,复仇进美网32强,冲最佳战绩今晨,2022年美网继续进行,中国金花1姐张帅延续强势,仅用86分钟就直落两盘,20送蛋横扫施米德洛娃,报了9年前负于对手的一箭之仇,轻松挺进32强,将继续冲击个人最高排名。张帅本美国重返月球困难重重,中国月球梦想是啥?2030年不只要载人登月最近,美国重返月球阿尔忒弥斯计划的首次任务并不顺利,8月29日SLS火箭暂停发射,点火推迟到9月3日,甚至更晚的时间。而如此折腾,不过才是第一次无人发射,目标只是将装着3个假人的猎美登月火箭再延期,扬言不让中国独占月球,现在却频出事,啥原因图为美国航天发射自从看见中国开启登月工程后,美国又开始眼红了,打算重启探月工程,甚至还扬言不会让中国独占月球,但令美国尴尬的是,刚刚宣布要重启探月,现在美国航天却频频出事,原来新一人工智能如何助力探索太空?载人航天和中国天眼科学家这样说随着科学技术的进步,上至九天揽月逐渐成为现实,而当人工智能技术应用到探索太空,未来将有哪些可能?在9月1日举行的2022世界人工智能大会开幕式上,中国载人航天工程总设计师中国工程院中国90后小伙用着6年前的iPhone,拍出令人赞叹的旅行大片相信手机已是你出门拍照的御用相机了,但你也肯定吐槽过它放大就糊画面没层次少了点感觉,即使换新手机,也很难避免这种先天的缺陷。至于修图软件,专业的,参数太难调,容易的,滤镜又显low多喝热水存在健康隐患!这样喝水才科学水是生命之源人体内的水分大约占体重的65喝太烫的水会致癌吗?口渴了再喝水就晚了?为啥餐前餐后不要大量喝水?如何科学喝水?喝太烫的水会致癌吗?经常食用特别烫的食物和热饮会存在健康隐患
热血传奇三大职业的技能你们知道多少呢?热血传奇中三大职业的技能你们知道多少呢,下面来一起盘点一下三大职业的技能吧。战士的格斗技巧1。基础剑术2。攻杀剑术3。刺杀剑术4。半月弯刀5。野蛮冲撞6。烈火剑法。法师的魔法生涯1LPL顶流回归!TheShy与Rookie五排,五个韩国人,结果全都说中文各位LPL的观众和英雄联盟召唤师大家好,这里是天下游戏汇。最近Doinb创建的LBL联赛热度非常高,很多观众无聊的时候都会在晚上准时观看LBL的比赛,据Doinb自己透露,有大量的我国成功发射云海一号03星中新网北京9月21日电(马帅莎)北京时间2022年9月21日7时15分,我国在酒泉卫星发射中心使用长征二号丁运载火箭,成功将云海一号03星发射升空,卫星顺利进入预定轨道,发射任务获我国适合旅居的8个城市,抽空过上几天慢生活,简直不要太巴适独自旅行很难避免孤独,但在我们的生活中总有一条路要走,与北京上海和广州的快节奏不同,一些城市有自己的懒惰风格,在这样的环境中,整个人都会感到放松和快乐,推荐国内八个城市,看看有你喜世界杯预测E组西班牙终于写到死亡之组了,豪强并出,可以交流点好玩的东西,多少人心心念念的西班牙也来了。一国家队简介开始介绍西班牙之前,我想说说一年前我在欧洲杯16强开打的时候写下的观点江山代有才人出,女篮世界杯今日赛事预测中国女篮有望狂胜赢得开门红美澳都将登场中国vs韩国9月22日1530比赛预测中国女篮大比分取胜,赢2030分。两队实力差距明显,以现在中国女篮的水平,韩国对我们形不成任何威胁,我们在内线锋线都有非常明显的优势。大比分取蔡斌首次带队征战世界三大赛,为什么大家并不看好他?自从郎平带队不断夺得世界三大赛冠军,她成为中国女排不可超越的神,本来她当运动员就是中国女排的骄傲,当教练又不断创造奇迹,这样一个神,给继任者带来很大的压力,稍有失利,大家就会把他拿皇马维尼修斯罗德里戈两翼齐飞,世界杯备战属巴西队最成功皇马高歌猛进!维尼修斯罗德里戈两翼齐飞,世界杯备战巴西队最成功!近期维尼修斯和罗德里戈在皇马光芒万丈,安切洛蒂居然戏称若巴尔韦德本赛季近球不超过十个就撕掉自己的教练证,这都要来自维中国女篮女排出战世界大赛,双双有望争取好成绩女篮世界杯将于9月22日10月1日在澳大利亚举行,女排世锦赛于9月23日10月15日在荷兰波兰举行。作为女排女篮的强队,中国女排女篮期待再次登上领奖台。女篮世界杯共有12支球队参加C罗我想要参加今年世界杯,2024年欧洲杯在今日葡萄牙足协举办的2022年度颁奖典礼上,葡萄牙国家队射手王C罗出席典礼,领取奖杯并在典礼中发表演讲。谈及自己在国家队的未来时,C罗说道我还能继续为国家队征战,我想要参加今年的工作中如何有条不紊地与同事交流意见?与同事相处的程度不易把握。如果你想和群体和睦相处,又不想说太多得罪人,这更难做到。一般来说,他们比较开朗每个人都可以与小组联系。但是一个开朗的人话很多,话也很多。如果你想把每一个字