自己写了个一键搭建Redis哨兵脚本
最近在家中无聊写了一个一键搭建Redis哨兵的脚本,是基于Docker搭建的,使用非常简单。
下载地址
安装脚本流程
先开放阿里云ICMP(Ipv4)端口,让服务器之间可以建立通信
只需要安装Docker,Docker安装跳转https://soora33.github.io/posts/2733575.html
不需要搭建主从,更不需要安装redis,脚本都会帮你完成
复制权限,直接执行,输入三个参数,哨兵搭建完成
1.哨兵介绍
大家设想一下,如果我们在生产环境部署一个Redis,宕机了怎么办,一瞬间访问不到缓存的请求全部打在数据库上,数据库表示你行你上啊。很容易数据库就会崩,数据库一崩,用户数据做不了持久化,连锁反应造成了我们的服务崩溃了,所以,Redis官方在2.8版本加入了Sentinel模式,也就是哨兵机制
2.哨兵机制
下面是Redis官方对哨兵的描述
监控(Monitoring):哨兵会不断地检查主节点和从节点是否运作正常
自动故障转移(Automatic failover):当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点
配置提供者(Configuration provider):客户端在初始化时,通过连接哨兵来获得当前Redis服务的主节点地址
通知(Notification):哨兵可以将故障转移的结果发送给客户端
也就是说哨兵运行的时候,会周期性地心跳检测,如果master宕机了,并且指定数量的哨兵也认为master宕机了,则开始进行故障转移,开始重新选举master。选举会从众多个服务器中选举一个服务器作为新的master。选出新的master后,会进行数据同步。之后如果宕机的master启动后,会以从节点的身份重新加入。完成一次故障转移
3.主观下线和客观下线
我们判断master主节点是否宕机是通过哨兵ping命令,如果ping超时或者失败,则说明master宕机。一个哨兵认为master宕机了,叫做”主观下线”。如果这个时候进行故障转移,会带来额外的计算和通信开销,为了避免这种情况。我们要严格注意误判。而在哨兵集群中,判断master是否真的下线,不是由一个哨兵决定的。而是由大多数哨兵决定的。一句话,少数服从多数。这个数量一般设置为(哨兵总数/2)+1,这样可以大大避免误判情况发生。
4.哨兵核心
哨兵是基于主从的,所以具有主从的所有特性
哨兵模式不保证数据零丢失,只保证redis集群的高可用
至少三台实例,保证哨兵的健壮性。
5.sentinel常用的配置参数如下
1 | # mymaster是哨兵名字 127.0.0.1是master的IP 6379表示端口 2表示有2个哨兵认为master宕机了就进行故障转移 |
6.开始搭建
我们准备了三台服务器,将主节点的脚本上传上去,复制权限执行,会提示输入三个参数
主节点就安装完成了,准备安装2个从节点的哨兵,2个从节点也要输入三个参数,和主节点的一模一样,不需要任何改动。等待安装完成就可以( ̄︶ ̄*))