【redis】redis部署1主2从3哨兵demo搭建示例

这篇具有很好参考价值的文章主要介绍了【redis】redis部署1主2从3哨兵demo搭建示例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

redis版本为7,搭建的架构为1主2从3哨兵的架构。本文是对搭建的过程做一个回忆,过程可能遗漏了某些步骤,见谅。

首先,需要有一个已经安装了的redis。我们从redis源码目录中,找到一个redis.conf文件,这个文件是redis作为server的配置文件模板,mkdir一个新的目录,将这个配置文件cp到新的目录中并对cv的新配置文件进行改动。

此外,还有一个sentinel.conf文件,这个是作为sentinel的配置文件,也可以复制过去。如果想要搭建一个demo,最小化配置即可,只需要简单几个配置放在一个新文件中,不需要复制这样的一个文件。

【redis】redis部署1主2从3哨兵demo搭建示例,Redis,踩坑专栏,教程,redis,bootstrap,数据库

一,修改server配置文件

搭建的是demo,所以日志最好在前台输出,针对性的对配置文件做出修改如下:

对作为server的配置文件,需要准备3份,1主2从,port不同,其他的都和下面的配置一致即可。

#redis前台运行
daemonize no
#空字符串表示在前台输出
logfile ""
#指定端口
port 6379

二,修改sentinel配置文件

sentinel的最小化配置文件如下

#指定本台sentinel的端口为26379
port 26379
#指定的本机上的端口为6379的redis为master,master name叫mymaster,需要2台sentinel及以上,才能选举出新的master(本次共3台sentinel,为了防止脑裂,需要2台sentinel的选举结果一致)
sentinel monitor mymaster ::1 6379 2
#sentinel向其他sentinel广播自身ip时用的ip。如果是在一台机器上部署多个redis实例,这个配置是必写的。
sentinel announce-ip "127.0.0.1"

最后准备出如下的配置文件
【redis】redis部署1主2从3哨兵demo搭建示例,Redis,踩坑专栏,教程,redis,bootstrap,数据库

三,启动伪集群

redis默认开机启动的话,需要先关闭redis,进入客户端后,关闭server

redis-cli -p 6379
127.0.0.1:6379> shutdown 
或者
redis-cli -p 6379 shutdown

查看redis进程

ps -fe | grep redis

确认redis关闭完后,启动master

#redis-server后面跟配置文件的路径
redis-server ~/test/6379.conf

启动replica

#可以通过--replica ip port,在启动的时候就作为replica,
#也可以在客户端中,通过replicaof命令转为指定ip port的redis的replica,格式和上面一样,replica可以通过replicaof no one重新作为独立的server。
redis-server ~/test/6380.conf --replicaof localhost 6379

启动sentinel

#--sentinel表示这台redsi作为哨兵启动
#也可以通过redis-sentinel,取消最后的--sentinel,启动
redis-server ~/test/26379.conf --sentinel

四,测试哨兵

查看master或replica日志,看到master和replica的sync成功,说明主从数据同步成功。

【redis】redis部署1主2从3哨兵demo搭建示例,Redis,踩坑专栏,教程,redis,bootstrap,数据库

依次启动哨兵,下图中为第一台哨兵,可以看到它监测到了2台replica和2台其他哨兵的启动

【redis】redis部署1主2从3哨兵demo搭建示例,Redis,踩坑专栏,教程,redis,bootstrap,数据库

此时关闭master6379,哨兵会重新选举master,选举结束后不指定replicaof重新启动6379,6379变为新的master6380的replica。


#epoch1表示开启了一个新的纪元1,也就是说选举出来一个新的主人master。不得不说redis作者有点恶趣味的。
9667:X 31 Jul 2023 04:38:44.108 # +new-epoch 1
9667:X 31 Jul 2023 04:38:44.108 # +try-failover master mymaster 127.0.0.1 6379
9667:X 31 Jul 2023 04:38:44.128 * Sentinel new configuration saved on disk
9667:X 31 Jul 2023 04:38:44.128 # +vote-for-leader 2588ffd5f5be5c93c66544b82b3d39dca44de508 1
9667:X 31 Jul 2023 04:38:44.130 # a87c3d3f480da6b1edc0c99f1187a20a1e332bfa voted for a87c3d3f480da6b1edc0c99f1187a20a1e332bfa 1
9667:X 31 Jul 2023 04:38:44.159 # 166b0a6fa12f54717be667b4eccd59ec5ff7015b voted for 2588ffd5f5be5c93c66544b82b3d39dca44de508 1
#监测到了master6379的失联
9667:X 31 Jul 2023 04:38:44.221 # +elected-leader master mymaster 127.0.0.1 6379
#6379是失联状态
9667:X 31 Jul 2023 04:38:44.221 # +failover-state-select-slave master mymaster 127.0.0.1 6379
#选举6380准备代替6379
9667:X 31 Jul 2023 04:38:44.321 # +selected-slave slave [::1]:6380 ::1 6380 @ mymaster 127.0.0.1 6379
#后面sentinel更新了自己的配置文件,并发送给了其他sentinel,等待6379失联的最终确定。
9667:X 31 Jul 2023 04:38:44.321 * +failover-state-send-slaveof-noone slave [::1]:6380 ::1 6380 @ mymaster 127.0.0.1 6379
9667:X 31 Jul 2023 04:38:44.374 * +failover-state-wait-promotion slave [::1]:6380 ::1 6380 @ mymaster 127.0.0.1 6379
9667:X 31 Jul 2023 04:38:45.197 * Sentinel new configuration saved on disk
9667:X 31 Jul 2023 04:38:45.197 # +promoted-slave slave [::1]:6380 ::1 6380 @ mymaster 127.0.0.1 6379
9667:X 31 Jul 2023 04:38:45.197 # +failover-state-reconf-slaves master mymaster 127.0.0.1 6379
9667:X 31 Jul 2023 04:38:45.257 * +slave-reconf-sent slave [::1]:6381 ::1 6381 @ mymaster 127.0.0.1 6379
9667:X 31 Jul 2023 04:38:46.223 * +slave-reconf-inprog slave [::1]:6381 ::1 6381 @ mymaster 127.0.0.1 6379
9667:X 31 Jul 2023 04:38:46.223 * +slave-reconf-done slave [::1]:6381 ::1 6381 @ mymaster 127.0.0.1 6379
#最终确认6379失联了
9667:X 31 Jul 2023 04:38:46.294 # -odown master mymaster 127.0.0.1 6379
#失联状态结束,后面它就是down状态了
9667:X 31 Jul 2023 04:38:46.294 # +failover-end master mymaster 127.0.0.1 6379
#转换新的master6380
9667:X 31 Jul 2023 04:38:46.294 # +switch-master mymaster 127.0.0.1 6379 ::1 6380
#通知2个replica6380 6381进行对应的转换,6380变为master,6381变为6380的replica
9667:X 31 Jul 2023 04:38:46.294 * +slave slave [::1]:6381 ::1 6381 @ mymaster ::1 6380
9667:X 31 Jul 2023 04:38:46.294 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster ::1 6380
9667:X 31 Jul 2023 04:38:46.317 * Sentinel new configuration saved on disk
#6379也要变为6380的replica,只不过6379现在是down的状态,重新启动6379,不需要--replica指定,6379就会变成6380的replica
9667:X 31 Jul 2023 04:38:49.334 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster ::1 6380
9667:X 31 Jul 2023 04:46:10.375 # -sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster ::1 6380
#重新启动6379,不需要指定--replicaof,直接变为6380的replica
9667:X 31 Jul 2023 04:46:29.370 * +slave slave [::1]:6379 ::1 6379 @ mymaster ::1 6380
9667:X 31 Jul 2023 04:46:29.371 * Sentinel new configuration saved on disk



【redis】redis部署1主2从3哨兵demo搭建示例,Redis,踩坑专栏,教程,redis,bootstrap,数据库

五,注意事项

1,是如果是同一台linux装了这些redis,前面提到的sentinel announced-ip配置项一定要配置,不然sentinel会争抢ip。

2,如果在启动sentinel的过程中出现了问题,如果想恢复并重新启动1主2从3哨兵,那么仅仅是通过命令启动,或者将新选举出来的master改为我们想要的port,是不够的。
因为sentinel会自动对sentinel和server replica的配置文件进行追加,追加内容主要是master replica 其他sentinel的ip端口,唯一id,还有状态等。

如果想恢复,一定要将包括master replica sentinel在内的6个配置文件中,包括新选举的master的ip,和sentinel自动追加的内容全部修改或删除,重新依次启动,才能完成恢复。文章来源地址https://www.toymoban.com/news/detail-621912.html

到了这里,关于【redis】redis部署1主2从3哨兵demo搭建示例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis哨兵部署

    Redis哨兵 单机安装部署 yum install epel-release -y Yum install redis -y Mkdir /root/redis Cd /root/redis cp /etc/redis.conf . cp redis.conf redis_6379.conf cp redis.conf redis_6380.conf cp redis.conf redis_6381.conf vim redis_6379.conf 1.配置redis.conf文件中的端口号分别为6379,6380,6381, 2.daemonize均为yes 3.6380和6381 均添加sla

    2024年02月10日
    浏览(28)
  • 搭建Redis主从集群和哨兵

    说明:单机的Redis存在许多的问题,如数据丢失问题、高并发问题、故障恢复问题、海量数据的存储能力问题,针对这四个问题,对应解决方式有:数据持久化(参考:http://t.csdn.cn/SSyBi)、搭建主从集群、Redis哨兵和搭建分片集群; 本文介绍搭建Redis主从集群和哨兵,用以解

    2024年02月16日
    浏览(36)
  • Linux部署Redis哨兵集群 一主两从三哨兵(这里使用Redis6,其它版本类似)

          Redis-Sentinel是redis官方推荐的高可用性解决方案,sentinel哨兵是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点,当用redis作master-slave的高可用时,如果master本身宕机,redis本身或者客户端都没有实现主从切换的功能,而redis-sentinel就是一个独立运行的进程

    2024年02月04日
    浏览(48)
  • Redis 哨兵模式的原理及其搭建

    Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。 1.1.1.集群结构和作用 哨兵的结构如图: 哨兵的 作用 如下: 监控 :Sentinel 会不断检查您的master和slave是否按预期工作。 自动故障恢复 :如果master故障,Sentinel会将一个slave提升为master。当故障实例恢复后也以新

    2024年02月05日
    浏览(46)
  • Redis——主从复制+集群搭建(非哨兵)

    主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower); 数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave 以读为主。 默认情况下,每台Redis服务器都是主节点,且一个主节点可以有多个

    2024年02月12日
    浏览(31)
  • 【NOSQL】redis哨兵模式、集群搭建

    主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷:故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。 哨兵:在主从复

    2024年02月12日
    浏览(53)
  • 利用docker搭建redis哨兵模式

    一主二从三哨兵,如果Master 节点断开了,这个时候就会从从机中随机选择一个服务器! (这里面有一个投票算法!)如果主机此时回来了,只能归并到新的主机下,当做从机,这就是哨兵模式的规则! 主机:设置key 从机:读取key,有数据代表主从实现成功 注意:不同版本的

    2024年02月06日
    浏览(40)
  • Redis哨兵集群搭建及RedisTemplate的哨兵模式配置详解

    本文详细介绍了Redis哨兵集群的原理、架构和工作流程,包括哨兵的功能作用、故障恢复机制、选举新的master等内容。同时,提供了哨兵集群架构示意图和实例准备、配置、启动、测试的步骤。此外,还介绍了如何在Spring的RedisTemplate中配置哨兵模式,实现Redis主从集群的自动切换和节点感知。

    2024年02月14日
    浏览(45)
  • redis搭建哨兵集群模式+整合springboot

    Sentinel 哨兵模式是为了弥补主从复制集群中主机宕机后,主备切换的复杂性而演变出来的。哨兵顾名思义,就是用来监控的,主要作用就是监控主从集群,自动切换主备,完成集群故障转移。 ​ Sentinel 哨兵Sentinel 哨兵介绍 ​ Sentinel 哨兵本质上是一个运行在特殊模式下的Re

    2024年01月19日
    浏览(46)
  • 使用docker快速搭建redis哨兵模式

    本文主要参考: https://www.cnblogs.com/coderaniu/p/15352323.html https://developer.aliyun.com/article/892805 但是这两篇博客均缺失部分关键性细节,所以重新撰文。读者可以结合本文和上述文章一起阅读。 此处略 创建 docker-compose.yml 文件,内容如下: 执行命令 docker-compose up -d 创建三个redis容器

    2024年02月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包