帮助中心

立即注册 咨询客服

当前位置:首页 > 帮助中心> 如何在CentOS 8中使用Sentinel设置Redis以实现高可用性

如何在CentOS 8中使用Sentinel设置Redis以实现高可用性

发布时间:2020年04月10日 08:57:21    来源: A5互联

Redis通过Redis Sentinel分布式系统提供高可用性。Sentinel帮助监控Redis实例,检测故障并自动进行角色切换,从而使Redis部署能够抵抗任何类型的故障。

它具有监视Redis实例(主数据库和副本数据库)的功能,支持通过脚本通知其他服务/进程或系统管理员,自动故障转移以在主数据库关闭时将副本提升到主数据库,并为客户端提供配置以发现当前数据库。提供特定服务的管理员。

本文演示了如何在CentOS 8中使用Redis Sentinel设置高可用性的Redis,包括配置Sentinel、检查设置状态和测试故障转移。

先决条件:

如何在CentOS 8中设置Redis复制(禁用集群模式)

测试环境设置

Master Server and Sentinel1: 10.42.0.247

Redis Replica1 and Sentinel2: 10.42.0.21

Redis Replica2 and Sentinel3: 10.42.0.34

根据Redis Sentinel文档,至少需要三个Sentinel实例才能进行可靠的部署。考虑到我们上面的设置,如果主服务器发生故障,Sentinels2和Sentinel3将就该故障达成一致,并能够授权故障转移,从而使客户端操作得以继续。

步骤1:启动和启用Redis Sentinel服务

1.在CentOS 8上,Redis Sentinel服务与Redis服务器一起安装(我们已经在Redis Replication Setup中进行了安装)。

要启动Redis标记服务并使其能够在系统启动时自动启动,请使用以下systemctl命令。另外,通过检查其状态来确认它已启动并正在运行(在所有节点上执行此操作):

# systemctl start redis-sentinel

# systemctl enable redis-sentinel

# systemctl status redis-sentinel

启动Redis Sentinel服务

步骤2:在所有Redis节点上配置Redis Sentinel

2.在本节中,我们将介绍如何在我们所有节点上配置Sentinel。Sentinel服务的配置格式与Redis服务器类似。要对其进行配置,请使用/etc/redis-sentinel.conf自文件配置文件。

首先,创建一个原始文件的备份,然后打开它进行编辑。

# cp /etc/redis-sentinel.conf /etc/redis-sentinel.conf.orig

# vi /etc/redis-sentinel.conf

3.默认情况下,Sentinel监听端口26379,请在所有实例上验证。请注意,必须将bind参数注释掉(或设置为0.0.0.0)。

port 26379

设置Sentinel侦听接口和端口

4.接下来,告诉Sentinel监视我们的主服务器。你可以把 "mymaster "换成一个自定义的名称。

#On Master Server and Sentinel1

sentinel monitor mymaster 127.0.0.1 6379 2

#On Replica1 and Sentinel2

sentinel monitor mymaster 10.42.0.247 6379 2

#On Replica1 and Sentinel3

sentinel monitor mymaster 10.42.0.247 6379 2

将Redis Master设置为Monitor

重要提示:当重启服务时,必须将sendinel monitor语句放在sendinel auth-pass语句之前,以避免出现 "No such master with the specified name. "的错误。

5.如果要监视的Redis主服务器设置了密码(在本例中为主服务器),请提供密码,以便Sentinel实例可以使用受保护实例进行身份验证。

sentinel auth-pass mymaster Securep@55Here

设置主认证密码

6.然后设置主机(或任何附加的副本或标记)不访问的毫秒数,以将其视为“ 主观关闭 ”状态。

以下配置意味着,只要我们在5秒内(1秒等于1000毫秒)没有收到来自ping的任何答复,主机就会被视为发生故障。

sentinel down-after-milliseconds mymaster 5000

设置主停机时间

7.接下来,设置故障转移超时,单位是毫秒,它定义了很多东西(请阅读配置文件中的参数文档)。

sentinel failover-timeout mymaster 180000

设置故障转移超时

8.然后,设置在故障转移后可以重新配置为使用新主服务器的副本数。由于我们有两个副本,因此我们将设置一个副本,将另一个副本提升为新的主副本。

sentinel parallel-syncs mymaster 1

设置并行同步副本数

请注意,Redis Replica1和Sentinel2以及Reddis Replica1和Sentinel2上的配置文件应该相同。

9.接下来,在所有节点上重新启动Sentinel服务以应用最近的更改。

# systemctl restart redis-sentinel

10.接下来,在所有节点上的防火墙中打开端口26379,以使Sentinel实例开始通话,并使用firewall-cmd 接收来自其他Sentinel实例的连接。

# firewall-cmd --zone=public --permanent --add-port=26379/tcp

# firewall-cmd --reload

11.所有的副本都将被自动发现。重要的是,Sentinel 会自动更新配置,并提供关于副本的其他信息。您可以通过打开每个实例的 Sentinel 配置文件并查看该文件来确认。

例如,当您查看主服务器的配置文件的末尾时,应该可以看到如下截图所示的已知-sentinels和已知-replica语句。

在Master中自动生成的配置

在copy1和copy2上应该是相同的情况。

在副本服务器1中自动生成的配置

在Replica2中自动生成的配置

请注意,每次在故障转移期间将副本提升为主状态时,以及每次在设置中发现新的Sentinel时,Sentinel配置也会被重写/更新。

步骤3:检查Redis Sentinel设置状态

12.现在,使用info sentinel命令,如下所示检查主服务器上的Sentinel状态/信息。

# redis-cli -p 26379 info sentinel

从以下屏幕截图中看到的命令输出中,我们有两个副本/从属服务器和三个sentinel。

检查主控上的Sentinel信息

13.要显示有关主服务器的详细信息(称为mymaster),请使用sentinel master命令。

# redis-cli -p 26379 sentinel master mymaster

显示有关Sentinel Master的详细信息

14.要显示有关从站和sentinel的详细信息,请分别使用sentinel slaves命令和sentinel sentinels命令。

# redis-cli -p 26379 sentinel slaves mymaster

# redis-cli -p 26379 sentinel sentinels mymaster

15.接下来,按如下所示使用sentinel get-master-addr-by-name命令从从属实例中按名称询问主服务器的地址。

输出应为当前主实例的IP地址和端口:

# redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

在从站上按名称获取主站地址

步骤4:测试Sentinel故障转移

16.最后,让我们在Sentinel设置中测试自动故障转移。在Redis / Sentinel主机上,使Redis主机(在端口6379上运行)睡眠60秒。然后按以下方式查询副本/从属服务器上当前主服务器的地址。

# redis-cli -p 6379

127.0.0.1:6379> AUTH Securep@55Here

127.0.0.1:6379> debug sleep 60

# redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

# redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

从查询的输出中,新的主服务器现在是IP地址为10.42.0.34的副本/从服务器2,如以下屏幕截图所示。

测试Redis Sentinel故障转移

您可以从Redis Sentinel文档中获取更多信息。在本系列的下一篇,也就是最后一篇中,我们将探讨如何在CentOS 8中设置Redis集群(启用集群模式)。这将是一篇独立于前两篇的文章。