sentinel容灾备份


文章目录

  • sentinel容灾备份
  • 1. sentinel的作用
  • 2. 如何判断服务器是否工作正常
  • 3. 环境搭建
  • 4. 测试
  • 5. 优缺点


1. sentinel的作用

  1. 用来监听redis的主从服务器是否工作正常
  2. 当发现某个节点工作出现问题,通过相关设置向管理员进行反馈同时进行故障迁移

故障迁移也是sentinel最主要的作用,做到了自动化进行容灾备份上线,不然还要人手工操作,达到了高可用性,当然不可能是100%高可用

2. 如何判断服务器是否工作正常

主要有以下三个方式

  1. 主观下线(subjectively down)
    上面提到了sentinel会监听redis服务器是否工作正常,如果sentinel发送了一条命令,但是目标服务器未在指定的时间内答复,那么就可以认为这个服务器挂了
  2. 客观下线(objectively down)
    SDOWN(主观下线)在有些情况可能出现误报,比如多机部署时候消息未及时返回,这时候就需要用到客观下线(事实上这种用的也比较多),也就是布置多个sentinel同时监听一个服务器,当一个认为服务器挂了,会询问其他sentinel是否也认为这个服务器挂了
  3. 仲裁
    当在给定时间内,得到了一定数量(通常是sentinel数量/2+1)的sentinel反应服务器挂了,也就是大部分人认为你死了,那你就真死了。这时候就会进行备份上线,进行主从服务器的切换(slave切换为master)

3. 环境搭建

ok,假设我们已经设置好了redis服务器的主从环境,端口6379为master,端口6380和6381分别为两个slave从节点

  1. 首先进行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 # 切换备份时间,超过这个时间认为这次切换失败再切换一次
  1. 到redis安装目录的bin目录下启动redis-sentinel,注意要启动三个
./redis-sentinel   /config的存放目录
  1. 使用命令分别查看之前设置的三个端口查看是否启动成功,有返回值就成功
lsof -i:26379

4. 测试

可以kill掉master1的进程,这时候查看之前设置的任意一个sentinel的log文件,会发现重新选择一个节点进行上线变成master2,需要注意的是,就算这时候原来的master1节点上线,也会变成现在的master2的slave节点,图就不贴了,在windows环境里写的这篇博文,懒得换成ubuntu去测试了

5. 优缺点

  • 优点
  • 主从自动切换,可以高可用(不是100%)
  • 缺点
  • 切换投票需要时间,如果实在高访问量的情形下会出现数据丢失