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日

相关文章

  • linux下用Proftpd搭建ftp服务器及配置方法

    下面是 “linux下用Proftpd搭建ftp服务器及配置方法”的完整攻略。 安装Proftpd 在Linux中安装Proftpd的方式有多种,常见的两种方式是使用包管理器进行安装,或者从源代码编译安装。 使用包管理器进行安装 以Debian/Ubuntu为例,使用以下命令进行安装: sudo apt-get update sudo apt-get ins…

    database 2023年5月22日
    00
  • DBMS中触发器和过程的区别

    DBMS中触发器和过程都是数据库中的一种对象,主要是为了实现数据库的自动化操作和处理,但是它们在实现方式和作用上有很大的差异。下面我将详细讲解它们之间的区别。 触发器(Trigger) 触发器是一种特殊的存储过程,它是与一个特定的表关联的操作,当该表上的数据发生特定的事件时(如修改、插入或删除),就会自动触发执行特定的脚本。触发器可以用于维护数据完整性、更新…

    database 2023年3月27日
    00
  • 带例子详解Sql中Union和Union ALL的区别

    以下是“带例子详解Sql中Union和Union ALL的区别”的攻略: 1. Union和Union ALL的基本概念 在SQL语句中,Union和Union ALL是用来合并两个或多个SELECT语句的关键字。它们的基本语法如下: SELECT column1, column2, … FROM table1 UNION [ALL] SELECT co…

    database 2023年5月21日
    00
  • Mysql写入数据十几秒后被自动删除了如何解决

    问题说明: 在使用Mysql时,有时会出现写入数据成功,但是过了十几秒后数据却自动被删除的情况。这种问题可能是由于Mysql有一个默认设置,在某些情况下会自动回滚事务,导致数据被删除。此时可以通过更改Mysql的设置来解决这个问题。 解决步骤: 编辑Mysql配置文件 首先需要编辑Mysql的配置文件my.cnf。找到[mysqld]部分,将innodb_r…

    database 2023年5月22日
    00
  • MySQL如何导入SQL数据库的实战举例

    下面是MySQL如何导入SQL数据库的完整攻略,包含以下步骤: 步骤一:准备SQL文件 将需要导入的SQL数据库文件准备好,比如名为“example.sql”的文件。 步骤二:登录MySQL 在命令行窗口中输入以下命令登录MySQL服务器: mysql -u用户名 -p密码 其中,“用户名”和“密码”分别为你的MySQL登录名和密码。 步骤三:创建数据库 在…

    database 2023年5月22日
    00
  • SQL Server还原完整备份和差异备份的操作过程

    下面就是SQL Server还原完整备份和差异备份的操作过程: 1. 还原完整备份 1.1. 预备工作 在还原完整备份之前,需要进行以下预备工作: 确认备份文件的位置:确认要还原的完整备份文件的位置,可以是本地磁盘,也可以是网络共享文件夹等。 确认要还原的数据库名称:确认还原的完整备份文件对应的数据库名称,以便于在还原时指定正确的数据库。 确认还原的时间点:…

    database 2023年5月18日
    00
  • Python的Flask框架使用Redis做数据缓存的配置方法

    flask配置redis 首先得下载flask的缓存插件Flask-Cache,使用pip下载。 sudo pip install flask_cache 为应用扩展flask_cache   app = Flask(__name__) 1 config = { 2 ‘CACHE_TYPE’: ‘redis’, 3 ‘CACHE_REDIS_HOST’: ‘…

    Redis 2023年4月11日
    00
  • Redis之哈希(hashes)类型命令

    Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。 Redis 中每个 hash 可以存储 232 – 1 键值对(40多亿)。 使用场景 : 用户信息     hset : 新建一个哈希表,设置成功返回1,如果已存在覆盖旧值,返回0(值可以为””) 127.0.0.1:6379> hset …

    Redis 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部