redis sentinel监控高可用集群实现的配置步骤

Redis Sentinel是Redis分布式系统的监控工具,它能够监控Redis集群中每个节点的运行状态,并在节点故障时进行自动故障转移,从而保证Redis集群的高可用性。下面是采用Redis Sentinel实现高可用集群监控的完整配置步骤:

  1. 安装Redis Sentinel

首先需要安装Redis Sentinel。可以通过以下命令进行安装:

sudo apt-get install redis-server redis-tools redis-sentinel
  1. 配置Redis主从及Sentinel节点

主从节点分别运行在不同的机器上,Sentinel节点也可以运行在不同的机器上。配置文件的示例如下:

主节点:

# /etc/redis/redis.conf

port 6379 # main port
bind 127.0.0.1 # bind to local IP address
dir /var/lib/redis # data directory
logfile "/var/log/redis/redis-server.log"

requirepass password # set password for redis server
masterauth password # set password for slave server to connect
masterinfoformat "ip=%s,port=%s,state=%s,info=%s" # set the format of master node info that is sent to the slave node

从节点:

# /etc/redis/redis.conf

port 6380 # slave port
slaveof 127.0.0.1 6379 # set the address and port of the master node
bind 127.0.0.1 # bind to local IP address
dir /var/lib/redis # data directory
logfile "/var/log/redis/redis-server.log"

requirepass password # set password for redis server
masterauth password # set password for slave server to connect

Sentinel节点:

# /etc/redis/sentinel.conf

port 26379 # sentinel port
bind 127.0.0.1 # bind to local IP address
dir /var/lib/redis # data directory
logfile "/var/log/redis/redis-sentinel.log"

sentinel monitor mymaster 127.0.0.1 6379 2 # set sentinel to monitor the master node, and set the quorum to 2
sentinel down-after-milliseconds mymaster 5000 # set the time after which a node is considered down
sentinel failover-timeout mymaster 60000 # set the time after which a failover is considered successful
sentinel auth-pass mymaster password # set the password for monitoring
  1. 启动Redis主从及Sentinel节点

在启动前,需要确保主从节点的Redis服务已启动。然后可以依次启动主从节点和Sentinel节点:

启动主节点:

redis-server /etc/redis/redis.conf

启动从节点:

redis-server /etc/redis/redis.conf --port 6380 --slaveof 127.0.0.1 6379

启动Sentinel节点:

redis-sentinel /etc/redis/sentinel.conf
  1. 检查Redis Sentinel是否生效

在已启动Redis Sentinel节点的机器上,运行以下命令:

redis-cli -p 26379 sentinel master mymaster

则会显示当前master节点的信息,如下所示:

1) "name"
2) "mymaster"
3) "ip"
4) "127.0.0.1"
5) "port"
6) "6379"
7) "runid"
8) "long-string-of-characters"
9) "flags"
10) "master"
11) "pending-commands"
12) "0"
13) "last-ok-ping-reply"
14) "429"
15) "last-ping-reply"
16) "429"
17) "info-refresh"
18) "5847"
19) "num-other-sentinels"
20) "0"
21) "quorum"
22) "2"
23) "failover-timeout"
24) "60000"
25) "parallel-syncs"
26) "1"
  1. 故障转移测试

在主节点所在的机器上,在Redis配置文件中的bind后加上0.0.0.0,并重启Redis服务。然后可以观察到Sentinel节点会自动检测到主节点故障,进行故障转移,将从节点提升为主节点。运行以下命令,检查主节点信息:

redis-cli -p 26379 sentinel masters

切换完成后,从节点会输出如下信息:

slave: ip=127.0.0.1,port=6380,state=online,offset=XXX,lag=0,slave_read_only=1

示例1:添加Sentinel节点

可以通过添加Sentinel节点的方式,提高Redis集群的可用性。示例如下:

  1. 在另外一台机器上配置Redis Sentinel:
# /etc/redis/sentinel.conf

port 26380 # sentinel port
bind 0.0.0.0 # bind to all IP addresses
dir /var/lib/redis # data directory
logfile "/var/log/redis/redis-sentinel.log"

sentinel monitor mymaster 127.0.0.1 6379 2 # set sentinel to monitor the master node, and set the quorum to 2
sentinel down-after-milliseconds mymaster 5000 # set the time after which a node is considered down
sentinel failover-timeout mymaster 60000 # set the time after which a failover is considered successful
sentinel auth-pass mymaster password # set the password for monitoring
  1. 启动新的Sentinel节点:
redis-sentinel /etc/redis/sentinel.conf
  1. 在已启动的Sentinel节点中添加新的Sentinel节点:
redis-cli -p 26379 sentinel add mymaster 127.0.0.1 26380

示例2:查看Redis Sentinel状态

可以通过以下命令查看每个Sentinel节点的状态:

redis-cli -p 26379 sentinel sentinels mymaster

输出示例如下:

1) 1) "name"
   2) "127.0.0.1:26379"
   3) "ip"
   4) "127.0.0.1"
   5) "port"
   6) "26379"
   7) "runid"
   8) "f35aa380bd0595e2f5d85e22ee5fec5eaaa18476"
   9) "flags"
  10) "sentinel"
  11) "pending-commands"
  12) "0"
  13) "last-ok-ping-reply"
  14) "0"
  15) "last-ping-reply"
  16) "0"
  17) "info-refresh"
  18) "1644"
  19) "num-other-sentinels"
  20) "3"
  21) "quorum"
  22) "2"
  23) "failover-timeout"
  24) "60000"
  25) "parallel-syncs"
  26) "1"
2) 1) "name"
   2) "127.0.0.1:26381"
   3) "ip"
   4) "127.0.0.1"
   5) "port"
   6) "26381"
   7) "runid"
   8) "c63ec77f2b11654a3e7a23acacc046ff5d43caf5"
   9) "flags"
  10) "sentinel"
  11) "pending-commands"
  12) "0"
  13) "last-ok-ping-reply"
  14) "0"
  15) "last-ping-reply"
  16) "0"
  17) "info-refresh"
  18) "1644"
  19) "num-other-sentinels"
  20) "3"
  21) "quorum"
  22) "2"
  23) "failover-timeout"
  24) "60000"
  25) "parallel-syncs"
  26) "1"

可见当前存在两个Sentinel节点。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:redis sentinel监控高可用集群实现的配置步骤 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • redis的两种安装方法 C# Redis

     原:https://www.cnblogs.com/caokai520/p/4409712.html   概念   Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zs…

    Redis 2023年4月13日
    00
  • SQL 使用CASE表达式标记行数据

    下面我来为您详细讲解SQL使用CASE表达式标记行数据的完整攻略。 CASE表达式 SQL中的CASE表达式,可以根据条件返回不同的值。它通常用于WHERE语句或SELECT语句中。CASE表达式可以通过以下几个步骤实现: 指定CASE表达式。 指定要比较的值或表达式。 为每个匹配条件指定执行的操作,包括一个ELSE操作(可选)。 以下是一个简单的示例,它显…

    database 2023年3月27日
    00
  • JAVA基础面试题整理

    JAVA基础面试题整理攻略 面试是求职的重要环节,对于开发岗位来说,JAVA基础知识是面试中常见的考察点。本文整理了JAVA基础面试题攻略,帮助开发者更好地准备面试。 面试前的准备 面试前,需要对JAVA基础知识进行复习和整理,建议按照以下方式进行: 梳理JAVA基础知识点:如集合、类、接口等等。需要了解每个知识点的概念、特性以及使用场景。 刷题巩固:刷题可…

    database 2023年5月21日
    00
  • Linux 下mysql通过存储过程实现批量生成记录

    针对 “Linux 下mysql通过存储过程实现批量生成记录” 这个问题,以下是我的完整攻略,一共包含以下几个方面: 准备工作:安装 mysql 服务器和客户端; 创建存储过程代码:包括参数定义,循环语句,插入语句等; 测试存储过程:通过执行存储过程来生成指定数量的记录; 示例说明:给出两个具体的存储过程代码示例,包括生成随机数记录和生成 IP 地址记录。 …

    database 2023年5月22日
    00
  • Firebase和Impala的区别

    Firebase是一种由Google开发的云端后端服务,提供了一整套完整的工具和服务,用于帮助开发者构建和扩展基于移动和Web的应用程序。它提供了包括实时数据库、云存储、身份验证和消息传递等开发者所需的服务,并提供了易用的UI使开发者可以更加高效的完成应用程序的构建工作。 相比之下,Impala则是一种高效的分布式SQL查询引擎,是Apache Hadoop…

    database 2023年3月27日
    00
  • mysql中常用日期比较与计算函数

    MySQL是一种非常流行的数据库管理系统,它提供了许多处理日期和时间的函数。下面我将为你详细讲解MySQL中常用日期比较与计算函数的使用方法。 函数介绍 MySQL中常用的日期比较与计算函数包括日期比较函数和日期计算函数。下面是这些函数的具体介绍: 日期比较函数 1. 日期比较函数DATEDIFF() DATEDIFF()函数用于计算两个日期之间相差的天数。…

    database 2023年5月22日
    00
  • 配置java环境变量(linux mac windows7)

    以下是配置Java环境变量的攻略: 配置Java环境变量 Linux 安装Java 对于Ubuntu,Debian等系统,可通过包管理器安装Java: sudo apt update sudo apt install default-jdk 配置环境变量 打开 ~/.bashrc 或 ~/.bash_profile 文件,添加以下内容: export JAV…

    database 2023年5月21日
    00
  • MySQL索引最左匹配原则实例详解

    MySQL索引最左匹配原则是指当我们使用多列索引进行查询时,只有索引的最左边的列才能被用于索引扫描,即只有最左前缀匹配的列会被索引扫描,这是MySQL查询优化的一个重要原则。 具体来说,当使用多列索引进行查询时,MySQL只会使用最左边的列作为索引键进行查找,找到符合条件的最左前缀匹配的行,并返回这些行的主键值;然后在这些行中再进行二次查找,即对最左前缀匹配…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部