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

yizhihongxing

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日

相关文章

  • 网络安全及防御之SQL注入原理介绍

    网络安全及防御之SQL注入原理介绍 SQL注入的定义 SQL注入(SQL Injection)是一种利用SQL漏洞引发的网络安全漏洞攻击方式,通过在web表单或者URL参数注入恶意的SQL代码,进而实现攻击者执行任意操作的目的。 SQL注入的攻击原理 SQL注入的攻击原理是将SQL(Structured Query Language)指令插入到已有的SQL指…

    database 2023年5月21日
    00
  • redis调优 — 内存碎片

    最近查看了一下redis运行状况,发现公司测试服务器的redis内存不太够用,但是实际占用内存的数据量其实不大,以前也没有这种情况,之前在cache层新增了一个防刷积分任务的逻辑才会这样,搜索一下原因,发现原来是产生了大量的内存碎片。 首先,查看redis的内存状态,要用info memory指令   2018-06-01_110028.png ps:(这个…

    Redis 2023年4月11日
    00
  • 个人学习Linux知识总结第2/4页

    让我来详细讲解一下“个人学习Linux知识总结第2/4页”的完整攻略: 个人学习Linux知识总结第2/4页攻略 准备工作 首先,您需要一台安装了Linux操作系统的计算机。如果您还没有安装Linux系统,可以参考本站的其他教程来完成安装。 其次,您需要了解一些基本的Linux命令,例如ls、cd、mkdir等。如果你对这些命令还不熟悉,可以参考本站的“Li…

    database 2023年5月22日
    00
  • Oracle 11g如何清理数据库的历史日志详解

    Oracle 11g如何清理数据库的历史日志详解 Oracle 11g数据库中包含大量的历史日志文件,这些文件会占用磁盘空间并降低系统的性能。因此,定期清理历史日志是数据库管理中的一个重要任务。在本文中,我们将详细介绍如何清理Oracle 11g数据库的历史日志。 步骤一:停止数据库 在清理历史日志之前,必须先停止数据库。在命令行窗口中输入以下命令停止Ora…

    database 2023年5月22日
    00
  • Swoole 协程 MySQL 客户端与异步回调 MySQL 客户端的对比

    为什么要对比这两种不同模式的客户端? 异步 MySQL 回调客户端是虽然在 Swoole 1.8.6 版本就已经发布了,但是异步回调的层层嵌套,让编码变得很别扭。如今 Swoole 4.3 版本都已经发布了,并且已经支持协程化的 MySQL 客户端,这意味着可以完全采用同步编码的模式,来进行程序开发了,对于开发者来说这是一个大好的消息。而且在 Swoole …

    MySQL 2023年4月13日
    00
  • mysql中,创建包含json数据类型的表?创建json表时候的注意事项?查询json字段中某个key的值?

    需求描述:   在mysql数据库中,创建包含json数据类型的表.记录下,在创建的过程中,需要注意的问题. 操作过程: 1.通过以下的语句,创建包含json数据类型的表 mysql> create table tab_json(id bigint not null auto_increment,data json,primary key(id)); …

    MySQL 2023年4月13日
    00
  • sql server 2012 数据库所有表里查找某字符串的方法

    通过以下步骤,您可以在 SQL Server 2012 数据库的所有表中搜索某个字符串: 步骤一:选择要搜索的数据库 首先需要选择要搜索的数据库。如果您没有具体的数据库,可以使用以下命令选择数据库: use database_name 其中,”database_name”是您要搜索的数据库名称。 步骤二:编写 SQL Server 查询 下一步是编写 SQL…

    database 2023年5月21日
    00
  • MySQL关于sql_mode解析与设置讲解

    MySQL 关于 sql_mode 解析与设置讲解 在讲解 sql_mode 之前,我们需要先了解什么是 SQL,以及 MySQL 又是什么。 SQL 是什么 SQL 是指结构化查询语言,在关系数据库管理系统中,被广泛用于数据库的管理与操作。常用的 SQL 语法有:SELECT、INSERT、UPDATE、DELETE,以及创建表、索引等相关的语法。 在我们…

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