虚拟主机域名注册-常见问题 → 服务器知识 → 操作系统 | ||||
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集群(启用集群模式)。这将是一篇独立于前两篇的文章。
|
||||
>> 相关文章 | ||||
没有相关文章。 |