sentinel容灾备份
1. sentinel的作用
- 用来监听redis的主从服务器是否工作正常
- 当发现某个节点工作出现问题,通过相关设置向管理员进行反馈同时进行故障迁移
故障迁移也是sentinel最主要的作用,做到了自动化进行容灾备份上线,不然还要人手工操作,达到了高可用性,当然不可能是100%高可用
2. 如何判断服务器是否工作正常
主要有以下三个方式
-
主观下线(subjectively down) 上面提到了sentinel会监听redis服务器是否工作正常,如果sentinel发送了一条命令,但是目标服务器未在指定的时间内答复,那么就可以认为这个服务器挂了 -
客观下线(objectively down) SDOWN(主观下线)在有些情况可能出现误报,比如多机部署时候消息未及时返回,这时候就需要用到客观下线(事实上这种用的也比较多),也就是布置多个sentinel同时监听一个服务器,当一个认为服务器挂了,会询问其他sentinel是否也认为这个服务器挂了 -
仲裁 当在给定时间内,得到了一定数量(通常是sentinel数量/2+1)的sentinel反应服务器挂了,也就是大部分人认为你死了,那你就真死了。这时候就会进行备份上线,进行主从服务器的切换(slave切换为master)
3. 环境搭建
ok,假设我们已经设置好了redis服务器的主从环境,端口6379为master,端口6380和6381分别为两个slave从节点
-
首先进行sentinel的config文件编写,这里我们使用三个sentinel,创建sentinel-1.config,sentinel-2.config,sentinel-3.config,名字其实随意,vim编写内容 port 26379 #sentinel运行的端口号,三个要设置三个不同的port
bind 0.0.0.0 #允许那些ip访问,0.0.0.0代表所有都可以访问,127.0.0.1代表只能本机访问
daemonize yes #以守护进程启动,也就是后台运行
pidfile "/var/run/redis-sentinel-1.pid" # log记录也要改下
logfile "/root/redis/log/sentinel_26379.log" # log存放位置
dir "/tmp"
sentinel monitor mymaster 127.0.0.1 6379 2 # 监听的master别名、ip地址、端口号、以及仲裁数# 量,就是超过一定数量就会客观下线的值
sentinel down-after-milliseconds mymaster 5000 # 主观下线设置的规定实践
sentinel auth-pass mymaster password #这个可有可不有,设置密码
sentinel failover-timeout mymaster 30000 # 切换备份时间,超过这个时间认为这次切换失败再切换一次
-
到redis安装目录的bin目录下启动redis-sentinel,注意要启动三个 ./redis-sentinel /config的存放目录
-
使用命令分别查看之前设置的三个端口查看是否启动成功,有返回值就成功 lsof -i:26379
4. 测试
可以kill掉master1的进程,这时候查看之前设置的任意一个sentinel的log文件,会发现重新选择一个节点进行上线变成master2,需要注意的是,就算这时候原来的master1节点上线,也会变成现在的master2的slave节点,图就不贴了,在windows环境里写的这篇博文,懒得换成ubuntu去测试了
5. 优缺点
- 优点
- 缺点
- 切换投票需要时间,如果实在高访问量的情形下会出现数据丢失
|