加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (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实例组成
副标题[/!--empirenews.page--]

《Redis Sentinel集群部署》要点:
本文介绍了Redis Sentinel集群部署,希望对您有用。如果有疑问,可以联系我们。

什么是Redis Sentinel

Redis Sentinel是用来实现Redis高可用的一套解决方案.Redis Sentinel由两个部分组成:由一个或者多个Sentinel实例组成Sentinel系统;由一个主Redis服务器(Master Redis)和多个从Redis服务器(Slave Redis)组成主从备份的Redis系统.

Sentinel系统本身是一个分布式的系统,它的作用是监视Redis服务器,在Master Redis下线时,自动将某个Slave Redis提升为新的主服务器.Redis系统由Master Redis处理客户端的命令请求,Slave Redis作为主服务器的备份而存在.

Redis Sentinel主要作用

  • 监控(Monitoring):Sentinel 会不断地检查你的主服务器和从服务器是否运作正常.
  • 提醒(Notification):当被监控的某个Redis服务器出现问题时,Sentinel可以通过API向管理员或者其他应用程序发送通知.
  • 自动故障迁移(Automatic failover):当一个主服务器不能正常工作时,Sentinel会开始一次自动故障迁移操作,它会将失效主服务器的其中一个从服务器升级为新的主服务器,并让失效主服务器的其他从服务器改为复制新的主服务器;当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址,使得集群可以使用新主服务器代替失效服务器.

Redis Sentinel系统架构图

Sentinel的原理并不复杂:

  • 启动N个Sentinel实例,这些Sentinel实例会去监控你指定的Redis Master/Slaves.
  • 当Redis Master节点挂掉后,Sentinel实例通过ping检测失败发现这种情况就认为该节点进入 SDOWN状态,也就是检测的Sentinel实例主观地(Subjectively)认为该Redis Master节点挂掉.
  • 当一定数目(Quorum参数设定的Sentinel实例都认为该Master挂掉的情况下,该节点将转换进入ODOWN状态,也就是客观地(Objectively)挂掉的状态.
  • 接下来Sentinel实例之间发起选举,选择其中一个Sentinel实例发起failover过程:从Slave中选择一台作为新的Master,让其它Slave从新的Master复制数据,并通过Pub/Sub发布事件.
  • 使用者客户端从任意Sentinel实例获取Redis配置信息,并监听(可选)Sentinel发出的事件: SDOWN,ODOWN以及failover等,并做相应主从切换,Sentinel还扮演了服务发现的角色.
  • Sentinel的Leader选举采用的是Raft协议.

构建Redis Sentinel集群

Redis Sentinel环境准备

Redis Sentinel

?

一个一主多从的Redis系统中,可以使用多个Sentinel进行监控任务以保证系统足够稳健.此时,不仅Sentinel会同时监控主数据库和从数据库,Sentinel之间也会相互监控.在这里,建议大家Sentinel至少部署三个,并且使用奇数个Sentinel.

安装Redis和Sentinel

在三台服务器上分别安装Redis和Sentinel.需要注意的是,如果要给Redis设置密码,需要在三个Redis的配置文件中设置相同的密码.

安装的Redis版本必须在2.8版本以上.

$ apt-get install redis-server redis-sentinel

配置Redis和Sentinel

配置Redis

三台Redis主机配置类似,只是初次配置时角色不同.这里以主机dev-master-01为例,其它两台按实际情况修改就行了.

Redis默认会绑定到127.0.0.1,这里要在多台机器间通信,我们将它绑定到主机IP上.

$ vim /etc/redis/redis.conf
bind 192.168.2.210

如果要给Redis设置密码,需要在三个Redis的配置文件中设置相同的密码.

$ vim /etc/redis/redis.conf
requirepass "000000"

设置主从复制

在两个Slave Redis的配置文件中声明所从属的主数据库.

$ vim /etc/redis/redis.conf
slaveof 192.168.2.210 6379

这里需要注意一点:当一个Master配置需要密码才能连接时,客户端和Slave在连接时都需要提供密码.Master通过requirepass设置自身的密码,不提供密码无法连接到这个Master.Slave通过masterauth来设置访问Master时的密码.

Sentinel可以切换主从数据库,主数据库可能会变成从数据库,所以三台机器上都需要同时设置requirepassmasterauth配置项.

$ vim /etc/redis/redis.conf
requirepass "000000"
masterauth "000000"

配置Sentinel

redis-sentinel软件包中默认包含了一个名为sentinel.conf的文件,默认在/etc/redis/sentinel.conf.这里以主机dev-master-01为例,其它两台配置类似,按实际情况修改就行了.

运行一个Sentinel所需的最少配置如下所示:

$ vim /etc/redis/sentinel.conf

daemonize yes
port 26379
bind 192.168.2.210
sentinel monitor redis-master 192.168.2.210 6379 2
sentinel down-after-milliseconds redis-master 5000
sentinel failover-timeout redis-master 180000
sentinel parallel-syncs redis-master 2
sentinel auth-pass redis-master 000000
sentinel notification-script redis-master /etc/redis/notify.sh
sentinel client-reconfig-script redis-master /etc/redis/failover.sh
logfile /var/log/redis/redis-sentinel.log

以上配置项说明:

  • daemonize yes

以后台进程模式运行.

  • port 26379

Sentinel实例之间的通讯端口,该端口号默认为26379.

  • bind 192.168.2.210

(编辑:东莞站长网)

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