加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

Redis Sentinel集群部署

发布时间:2021-02-24 20:02:34 所属栏目:安全 来源:网络整理
导读:《Redis Sentinel集群部署》要点: 本文介绍了Redis Sentinel集群部署,希望对您有用。如果有疑问,可以联系我们。 什么是Redis Sentinel Redis Sentinel是用来实现Redis高可用的一套解决方案.Redis Sentinel由两个部分组成:由一个或者多个Sentinel实例组成

Sentinel去监视一个名为redis-master的主服务器,这个主服务器的IP地址为192.168.2.210,端口号为6379.将这个主服务器判断为失效至少需要2个Sentinel同意,一般设置为N/2+1(N为Sentinel总数).只要同意Sentinel的数量不达标,自动故障迁移就不会执行.

不过要注意,无论你设置要多少个Sentinel同意才能判断一个服务器失效,一个Sentinel都需要获得系统中多数Sentinel的支持,才能发起一次自动故障迁移,并预留一个给定的配置纪元.(configuration Epoch,一个配置纪元就是一个新主服务器配置的版本号).

  • sentinel down-after-milliseconds redis-master 5000

down-after-milliseconds选项指定了Sentinel认为服务器已经断线所需的毫秒数.如果服务器在给定的毫秒数之内,没有返回Sentinel发送的PING命令的回复,或者返回一个错误,那么Sentinel将这个服务器标记为主观下线(subjectively down,简称SDOWN).

不过只有一个Sentinel将服务器标记为主观下线并不一定会引起服务器的自动故障迁移,只有在足够数量的Sentinel都将一个服务器标记为主观下线之后,服务器才会被标记为客观下线(objectively down,简称ODOWN),这时自动故障迁移才会执行.将服务器标记为客观下线所需的Sentinel数量由对主服务器的配置(sentinel monitor参数)决定.

  • sentinel failover-timeout redis-master 180000

如果在多少毫秒内没有把宕掉的那台Master恢复,那Sentinel认为这是一次真正的宕机.在下一次选取时排除该宕掉的Master作为可用的节点,然后等待一定的设定值的毫秒数后再来探测该节点是否恢复,如果恢复就把它作为一台Slave加入Sentinel监测节点群,并在下一次切换时为他分配一个”选取号”.

  • sentinel parallel-syncs redis-master 2

parallel-syncs选项指定了在执行故障转移时,最多可以有多少个从服务器同时对新的主服务器进行同步.这个数字越小,完成故障转移所需的时间就越长.

如果从服务器被设置为允许使用过期数据集(slave-serve-stale-data选项),那么你可能不希望所有从服务器都在同一时间向新的主服务器发送同步请求.因为尽管复制过程的绝大部分步骤都不会阻塞从服务器,但从服务器在载入主服务器发来的RDB文件时,仍然会造成从服务器在一段时间内不能处理命令请求.

如果全部从服务器一起对新的主服务器进行同步,那么就可能会造成所有从服务器在短时间内全部不可用的情况出现.你可以通过将这个值设为1来保证每次只有一个从服务器处于不能处理命令请求的状态.

  • sentinel auth-pass redis-master 000000

当Master设置了密码时,Sentinel连接Master和Slave时需要通过设置参数auth-pass配置相应密码.

  • sentinel notification-script redis-master /etc/redis/notify.sh

指定Sentinel检测到该监控的Redis实例failover时调用的报警脚本.脚本被允许执行的最大时间为60秒,超过这个时间脚本会被kill.该配置项可选,但线上系统建议配置.这里的通知脚本简单的记录一下failover事件.

# 创建通知脚本
$ vim /etc/redis/notify.sh

#! /bin/bash

echo "master failovered at `date`" > /var/log/redis/redis_issues.log
# 给脚本增加执行权限
$ chmod +x /etc/redis/notify.sh
  • sentinel client-reconfig-script redis-master /etc/redis/failover.sh

指定Sentinel failover之后重配置客户端时执行的脚本,该配置项可选,但线上系统建议配置.

  • logfile /var/log/redis/redis-sentinel.log

日志文件所在位置,默认在/var/log/redis/redis-sentinel.log.

运行Sentinel

配置完Redis和Sentinel之后,按顺序启动各个角色.启动顺序如下:Master->Slave->Sentinel,要确保按照这个顺序依次启动.

  • 启动Redis
$ systemctl start redis
  • 启动Sentinel

运行Sentinel有两种方式:

虽然Redis Sentinel有单独的软件安装包,但实际上它只是一个运行在特殊模式下的Redis实例.当前Redis Stable版已经自带了redis-sentinel这个工具.你可以在启动一个普通Redis实例时通过给定--sentinel选项来启动Redis Sentinel.

第一种:用单独的可执行文件redis-sentinel

$ redis-sentinel /etc/redis/sentinel.conf

第二种:使用redis-server的—sentinel选项

$ redis-server /etc/redis/sentinel.conf --sentinel

以上两种方式,都必须指定一个Sentinel的配置文件sentinel.conf.需要确保配置文件是可写的,因为Sentinel会往配置文件里添加很多信息作为状态持久化,这是为了重启等情况下可以正确地恢复 Sentinel的状态.

当配置文件无法写入时,Sentinel会启动失败.Sentinel默认监听26379端口,所以运行前必须确定该端口没有被别的进程占用.

我们这里用redis-sentinel方式来启动:

$ systemctl start redis-sentinel
  • 测试Sentinel

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!