mysql哨兵模式_redis 哨兵模式集群搭建
Sentinel(哨兵),顾名思义就是站岗放哨的,是redis提供的高可用解决方案,它是对主从模式的优化升级,在主从模式下,如果主库发生宕机,需要人工介入将某个从节点提升为主库,同时需要修改应用配置的主节点地址,而在Sentinel模式下,每个哨兵(Sentinel)进程会向其它哨兵(Sentinel)、Master、Slave定时发送消息,以确认对方是否”活”着,如果发现对方在指定时间内未得到回应,会对节点做下线标识,如果被标识的是主节点,它还会与其他Sentinel节点进行协商,当多数派都认为主节点不可达时,它们会选举出一个Sentinel节点来完成故障转移的工作,同时会通知应用方主节点已经发生转移。下面我们就来搭建一个Sentinel集群。
安装部署
环境准备
在这里我们使用的是Redis 4.0.10,在一台服务器上启动三个server来模拟一主两从的架构,redis的安装过程这里就不在演示了,可以参考文章【redis】部署及参数详解(吐血整理,建议收藏)。
部署过程
启动主节点
修改配置文件
/usr/local/redis/etc/redis_6377.conf,主要注意以下几个参数
port 6377
daemonize yes
logfile "/redis_data/log/redis_6377.log"
dir "/redis_data/data/6377"
dbfilename "dump_6377.rdb"
执行启动命令
redis-server /usr/local/redis/etc/redis_6377.conf
通过redis客户端连接测试
redis-cli -h 127.0.0.1 -p 6377
127.0.0.1:6377> ping
PONG
启动从节点
从节点配置文件和主节点配置文件的主要区别是将6377改成从节点对应的端口号,本次实验两个从节点的端口号分别为6378和6379。同时配置需要同步的主节点的IP和端口。
slaveof 127.0.0.1 6377
启动从节点
redis-server /usr/local/redis/etc/redis_6378.conf
redis-server /usr/local/redis/etc/redis_6379.conf
确认主从是否生效
[redis@localhost etc]$ redis-cli -h 127.0.0.1 -p 6377 info replication
Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6378,state=online,offset=308,lag=0
slave1:ip=127.0.0.1,port=6379,state=online,offset=308,lag=1
启动Sentinel节点
Sentinel节点至少3个且奇数,这样才能在协议中形成多数派。配置Sentinel节点配置文件/usr/local/redis/sentinel-26377.conf,主要注意以下参数
port 26377
dir "/redis_data/data/26377"
logfile "/redis_data/log/redis-26377.log"
#配置主节点的IP和端口,2代表主节点判断失败至少需要2个Sentinel节点同意,一般设置为Sentinel节点数的一半加1.
sentinel monitor mymaster 127.0.0.1 6377 2
#30秒ping不通主节点的信息,主观认为master宕机
sentinel down-after-milliseconds mymaster 30000
#故障转移时从节点同时向新主发起复制请求的数量,1代表从节点会轮询发起复制。
sentinel parallel-syncs mymaster 1
#故障转移开始,180秒内没有完成,则认为转移失败
sentinel failover-timeout mymaster 180000
启动Sentinel节点
redis-sentinel sentinel-26377.conf
redis-sentinel sentinel-26378.conf
redis-sentinel sentinel-26379.conf
通过Sentinel节点查看哨兵是否生效
[redis@localhost redis]$ redis-cli -h 127.0.0.1 -p 26377 info Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:6377,slaves=2,sentinels=3
至此,Sentinel模式的redis集群搭建就完成了。
故障转移
模拟主库宕机,通过kill命令杀死主库,查看故障转移情况:
128.127.0.0.1:26377> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:6378,slaves=2,sentinels=3
可以看到master改为127.0.0.1:6378了。
故障转移的大体步骤如下:
每个Sentinel节点每隔1秒对主、从、其他Sentinel阶段发送ping探测,超过down-after-milliseconds未返回响应,则判断该节点主观下线。
Sentinel节点向其他Sentinel节点询问对于异常节点的判断,当达到 quorum个sentinel节点都认为被主观下线的节点异常时,则对该节点做客观下线。
在sentinel节点中通过Raft算法选举出一个leader来完成故障转移。
当出现故障的节点是主节点时,sentinel leader会根据优先级、复制偏移量、runid等在从节点中选出一个作为主节点,执行slaveof no one命令。
leader向其他从节点发送指令,让他们成为新主的从节点,并将原来的主节点更新为从节点,当旧主恢复后去复制新主的数据。
复制完成后,发布主节点的切换消息。
mysql哨兵模式_redis 哨兵模式集群搭建相关推荐
- RocketMq02_复制刷盘、Broker常用模式、磁盘阵列、集群搭建
文章目录 ①. 单机版本安装与启动 ②. 控制台的安装与启动 ③. 复制刷盘.Broker集群模式 ④. 磁盘阵列 - RAID ⑤.JBOD.RAID0 ⑥. RAID1.RAID10.01 ⑦. ...
- MySQL NDB Cluste-分布式数据库集群搭建
1 概述 1.1 分布式数据库集群 Mysql cluster是适用于分布式计算环境的高可用.高冗余版本的mysql,其技术在分布式系统中为mysql数据提供了冗余特性,增强了安全性,使得单个mysq ...
- Spark3 Standalone模式分布式集群搭建
Spark3 Standalone模式分布式集群搭建 一.安装Spark3 二.配置Spark3环境变量 三.修改Spark3基本配置文件 四.从节点配置 五.配置Spark3系统环境变量 六.重命名 ...
- zookeeper专题:zookeeper集群搭建和客户端连接
文章目录 1. Zookeeper 集群模式介绍 2. zookeeper 集群搭建 3. 使用curate客户端连接zookeeper集群 1. Zookeeper 集群模式介绍 Zookeeper ...
- redis入门及其集群搭建、哨兵模式
一.Nosql概述 1.为什么要用Nosql 1.1 单机 MySQL 的美好时代 来源博客(https://www.cnblogs.com/lukelook/p/11135209.html) 在90 ...
- Redis 主从集群搭建及哨兵模式配置
Redis 主从集群搭建及哨兵模式配置 最近搭建了redis集群及哨兵模式,为方便以后查看特此记录下来: 1.Redis安装 2.主从架构 2.1 Redis主从架构图 2.2Redis主从结构搭建 ...
- Redis深入理解五 :Redis主从架构、哨兵架构、高可用集群模式
redis主从架构 redis主从架构搭建,配置从节点步骤: 复制一份redis.conf文件 将相关配置修改为如下值: port 6380 pidfile /var/run/redis_6380.p ...
- MySQL集群搭建--多主模式
MySQL集群搭建--多主模式 本文使用的是Galera搭建的MYSQL集群,实现的是每个MYSQL都是主服务器,不存在主从之分. 环境: 三台mysql5.7服务器. 安装mysql集群: 安装前准 ...
- springboot配置Redis哨兵主从服务 以及 Redis 集群
redis哨兵集群配置 Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从 ...
- Redis 单例、主从模式、sentinel 以及集群的配置方式及优缺点对比(转)
摘要: redis作为一种NoSql数据库,其提供了一种高效的缓存方案,本文则主要对其单例,主从模式,sentinel以及集群的配置方式进行说明,对比其优缺点,阐述redis作为一种缓存框架的高可用性 ...
最新文章
- python 选择排序算法
- 帆软正则表达式定义规则
- c语言中如何取消最后一个空格,新人提问:如何将输出时每行最后一个空格删除...
- python循环for...in_python循环while和forin实例
- 三种banner基础形态
- intellij Find Usage 查找符号使用快捷键alt + f7在ubuntu下无法使用的解决方法
- SQL数据查询之——嵌套查询
- 支持向量机(SVM)非线性数据切割
- 【开源】在线教育系统.net源码-PC端-手机端
- Oracle 数据库增删改查
- 大众点评字体解密(最新)2020/4/17
- POS收银系统报EFI Shell version 2.00错误
- IOS开发-ERROR ITMS-90096: Your binary is not optimized for iPhone 5
- 矩阵论(一):广义逆矩阵(上)
- 阿里云---云开发平台的创建与部署
- 关于生僻字乱码的问题
- multisim电流探棒怎么改变方向?MULTISIM电流探
- 游戏开发物语安卓!Android彻底组件化方案实践方法!快来收藏!
- png转svg格式并上传至iconfont
- 2021上半年程序员新书大盘点