Redis系列之哨兵Sentinel集群搭建

news2024/11/16 3:31:58

在上一篇博客,我们已经知道怎么搭建一个redis主从复制集群,但是主从集群如果出现服务器宕机的情况,是不会自动选举master的,所以需要搭建更加高可用的集群模式,哨兵模式,哨兵集群会自动监控,如果出现master服务器宕机的情况,会重新选举新的master,保证系统的高可用

实验环境

  • CentOS7
  • Xshell6
  • XFtp6
  • Redis6.2.2

主从关系

  • 主节点:192.168.65.109
  • 从节点1:192.168.66.149
  • 从节点2:192.168.66.108

哨兵也是3个,3个节点都搭建一个哨兵,所以架构是“一主二从三哨兵“这种模式

修改配置文件

先复制一下sentinel.conf配置文件到统一的config目录

# 到配置文件目录
cd /usr/local/redis/redis-6.2.2
# 复制配置文件
cp sentinel.conf /usr/local/redis/config/sentinel.conf

修改sentinel.conf配置文件

# sentinel服务端的端口
port 26379
# 设置为后台启动,改为yes
daemonize yes
# 设置要监控的master,mymaster自己命名的master名称,接着是master的ip和端口,2是quornum,当两个哨兵都认为主节点不可用的时候,就会重新选举
sentinel monitor mymaster 192.168.65.109 6379 2
# 30s后联系不到系统,认为关闭
sentinel down-after-milliseconds mymaster 30000 
# 故障转移重试时间间隔,默认为3min
sentinel failover-timeout mymaster 180000

启动Sentinel服务

如果没设置环境变量,就先用下面的方法执行

./redis-sentinel ../sentinel.conf

因为之前设置了环境变量,所以直接用命令执行

# 到配置文件目录
cd /usr/local/redis/config
# 启动sentinel服务
redis-sentinel sentinel.conf

连接Sentinel服务

同样还是适用redis-cli客户端

[root@localhost src]# ./redis-cli -p 26379
127.0.0.1:26379>

Sentinel常用命令

  • 查看master信息
[root@localhost ~]# redis-cli -p 26379
127.0.0.1:26379> sentinel master mymaster
 1) "name"
 2) "mymaster"
 3) "ip"
 4) "192.168.66.108"
 5) "port"
 6) "6379"
 7) "runid"
 8) "8f39372397fa4bd3aa13657736612146a7dc9a77"
 9) "flags"
10) "master"
11) "link-pending-commands"
12) "-1"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "185"
19) "last-ping-reply"
20) "185"
21) "down-after-milliseconds"
22) "30000"
23) "info-refresh"
24) "490"
25) "role-reported"
26) "master"
27) "role-reported-time"
28) "2584984"
29) "config-epoch"
30) "67"
31) "num-slaves" # 从节点数量
32) "2"
33) "num-other-sentinels" # 其它哨兵数量
34) "2"
35) "quorum" # 配置的quornum
36) "2"
37) "failover-timeout"
38) "180000"
39) "parallel-syncs"
40) "1"
  • 查询主库地址
[root@localhost ~]# redis-cli -p 26379
127.0.0.1:26379> sentinel get-master-addr-by-name mymaster
1) "192.168.65.109"
2) "6379"

  • 其它命令
    其它常有命令可以查看redis官网:https://www.redisdocs.com/zh-cn/docs/management/sentinel/#sentinel-api
    在这里插入图片描述

验证哨兵选举

现在模拟主节点关闭

[root@localhost src]# redis-cli -p 6379
127.0.0.1:6379> info replication
# Replication
role:master # 角色
connected_slaves:2 # 从节点数量
slave0:ip=192.168.66.108,port=6379,state=online,offset=308,lag=0 # 从节点的信息,状态,偏移量
slave1:ip=192.168.66.149,port=6379,state=online,offset=308,lag=1
master_failover_state:no-failover
master_replid:77f2fcefc1507a0fe8e6ab6f82f7873fc3f62d7a # master启动时生成的40位16进制的随机字符串,用来标识master节点
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:308 # master已经写入的偏移量
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576 # 缓存区大小
repl_backlog_first_byte_offset:1
repl_backlog_histlen:308 # 缓存区已有数据的大小,是一个环形,跟mysql的redo log一样会覆盖
127.0.0.1:6379>shutdown
not connect

去其它从节点查看信息,发现192.168.66.108这个从节点升级为主节点

[root@localhost config]# redis-cli -p 6379
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.66.149,port=6379,state=online,offset=597460,lag=0
slave1:ip=192.168.65.109,port=6379,state=online,offset=597750,lag=0
master_failover_state:no-failover
master_replid:d4bc1cd5c8b2860300456e29fdbe38708cd8ac48
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:597895
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:597895

然后,重新启动之前的主节点192.168.65.109,发现这个之前的主节点变成了从节点

Sentinel开机启动

拓展,设置Sentinel重启linux开机时候也能自行启动,需要进行配置即可

# 到init.d目录
cd /etc/init.d
# 新增一个redis-sentinel自启动脚本文件
vi redis-sentinel

加上自启动执行脚本,redis配置的位置请自行更改

#!/bin/sh
# chkconfig: 2345 80 90
# description:redis sentinel auto run
REDISPORT=26379
REDISPATH=/usr/local/redis
EXEC=${REDISPATH}/bin/redis-sentinel
CLIEXEC=${REDISPATH}/bin/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="${REDISPATH}/config/sentinel.conf"
case "$1" in
  start)
    if [ -f $PIDFILE ]
    then
        echo "$PIDFILE exists, process is already running or crashed"
    else
        echo "Starting Redis sentinel..."
        $EXEC $CONF
    fi
    ;;
  stop)
    if [ ! -f $PIDFILE ]
    then
        echo "$PIDFILE does not exist, process is not running"
    else
        PID=$(cat $PIDFILE)
        echo "Stopping ..."
        $CLIEXEC -p $REDISPORT shutdown
        while [ -x /proc/${PID} ]
        do
          echo "Waiting for Redis-sentinel to shutdown ..."
          sleep 1
        done
        echo "Redis-sentinel stopped"
    fi
    ;;
  *)
    echo "Please use start or stop as first argument"
    ;;
esac

保存配置文件,加上可执行权限

# 加上可执行权限
chmod +x /etc/init.d/redis-sentinel
# 查询权限是否加成功
ll -ls

设置redis sentinel开机启动

chkconfig redis-sentinel on

查看开机启动列表

chkconfig --list

重启系统

reboot

查看redis进程

ps -elf | grep redis

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1612395.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习发展中的继承和创新

深度学习是一步一步发展而来的,新的成就也是在原有的基础上,逐步取得突破,有一些东西是一点一点变化,突破发展而来的,也就是每一次小的突破和每一次小的突破累积起来,构成一个明显的进步。我们可以通过观察…

python 文件 成绩分析2

‘’’ 文件score.txt中存储了学生的考试信息,内容如下 小明,98,96 小刚,90,94 小红,90,94 小王,98,96 小刘,80,90 小赵,90,96 第二列是数学成绩,第三列是语文成绩 请写程序分析: 哪些同学语文成绩是相同的?哪些同学数学成绩是相同的?哪些同学语文和数…

C语言—字符指针,指针数组和数组指针详解

字符指针 在指针的类型中我们知道有一种指针类型为字符指针 char* ; int main() {char ch w;char *pc &ch;*pc w;return 0; }还有一种使用方式如下: int main() {const char* pstr "hello world.";//这里是把一个字符串放到pstr指针变量里了吗…

WebSocket 快速入门 - springboo聊天功能

目录 一、概述 1、HTTP(超文本传输协议) 2、轮询和长轮询 3、WebSocket 二、WebSocket快速使用 1、基于Java注解实现WebSocket服务器端 2、JS前端测试 三、WebSocket进阶使用 1、如何获取当前用户信息 2、 后端聊天功能实现 一、概述 HTTP…

Linux安装Docker完整教程及配置阿里云镜像源

官网文档地址 安装方法 1、查看服务器内核版本 Docker要求CentOS系统的内核版本高于3.10 uname -r #通过 uname -r 命令查看你当前的内核版本2、首先卸载已安装的Docker(如果有) 2.1 确保yum包更新到最新 yum update2.2 清除原有的docker&#xff0c…

生物特征识别的六大技术研究

生物特征识别技术是结合了计算机科学与光学、声学、生物传感器以及生物统计学原理,通过利用人体固有的生理特征(如指纹、人脸、虹膜、掌纹、指静脉等)和行为特征(如笔迹、声音、步态等),来进行个人身份的鉴…

layui--table里使用switch

1. 项目需求 在layui.table上面渲染后的列表上面加一个switch开关,监听switch开关的动作,实现本列数据的状态切换! 实现效果如下: 2. 实现方式 下面介绍的思路都是利用table的templet模板实现的,不同的在于模板代码…

F-logic DataCube3 SQL注入漏洞复现(CVE-2024-31750)

0x01 产品简介 F-logic DataCube3是一款用于光伏发电系统的紧凑型终端测量系统。 0x02 漏洞概述 F-logic DataCube3 /admin/pr_monitor/getting_index_data.php 接口处存在SQL注入漏洞,未经身份验证的攻击者可通过该漏洞获取数据库敏感信息,深入利用可控制整个web服务器。 …

JavaEE 初阶篇-深入了解 File 文件操作(实现文件搜索、非空文件夹删除)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 File 文件概述 2.0 创建 File 类对象的方法 2.1 判断文件类型、获取文件信息的方法 2.2 创建文件、删除文件的方法 2.3 遍历文件夹的方法 3.0 文件搜索与删除 3.1…

虚拟机中的打印机,无法打印内容,打印的是白纸或英文和数字,打印不了中文

原因:打印机驱动设置不正确 解决方案: 打开打印机属性 -> 高级 -> 新驱动程序 下一页 -> Windows 更新 耐心等待,时间较长。 选择和打印机型号匹配的驱动,我选择的是: 虽然虚拟机和主机使用的驱动不…

《机器学习by周志华》学习笔记-线性模型-02

1、对数几率回归 1.1、背景 上一节我们考虑了线性模型的回归学习,但是想要做分类任务就需要用到上文中的广义线性模型。 当联系函数连续且充分光滑,考虑单调可微函数,令: 1.2、概念 找一个单调可谓函数,将分类任务的真实标记与线性回归模型的预测值联系起来,也叫做「…

关系型数据库的相关概念

表、记录、字段 表 一个实体集相当于一个表记录 一个实体相当于一个记录,在表中表表现为一行数据字段 一个字段相当于数据库表中的列 表的关联关系 一对一(一对一的表可以合并成一张表)一对多多对多 必须创建第三张表,该表通常称为联接表&#xff0c…

个人电脑信息安全注意事项

个人电脑信息安全注意事项 一、密码安全: 设置复杂且独特的密码,避免使用容易猜测或常见的密码。 定期更换密码,特别是在重要账户或应用上。 不要在多个账户上重复使用相同的密码。 使用密码管理工具来安全地存储和访问密码。 二、软件安…

Axure琐碎细节

文章目录 琐碎细节注释预览编写原型图的时候可以把颜色改为灰色标尺竖直文字左对齐Axure中的文字怎么添加元件层级问题如何找到各种各样的形状,比如三角形了 五角星了 十字架了给按钮设置简单的交互动作通过锁来等比例缩放 琐碎细节 注释 有时候我们需要给我们的元…

探索通过GPT和云平台搭建网安实战培训环境

项目背景 网络安全是一个不断演变的领域,面临着日益复杂的挑战和不断扩大的威胁。数字化时代,随着勒索攻击、数据窃取、网络钓鱼等频频出现,网络攻击的威胁指数和影响范围进一步增加,如何防范网络攻击,确保数据安全&a…

ssh免秘钥登录与时钟同步

ssh免秘钥登录及数据拷贝 ssh免秘钥登录及数据拷贝环境生成秘钥拷贝公钥到到远程服务器通过ssh-copy-id命令拷贝公钥到远程服务器通过手动拷贝公钥到远程服务器 非root用户远程拷贝公钥 设置编码方式临时设置编码永久设置方法一永久设置方法二 设置时钟同步使用 ntpdate 命令使…

yabai,openssh 竟然把 Windows 搞蓝屏了

在虚拟化技术日益普及的今天,Oracle VirtualBox 提供了一个功能强大的平台,允许用户在单一物理机上运行多个操作系统。 本文将指导你如何使用 Oracle VirtualBox 安装 Oracle Linux 9.3。 1. Oracle VirtualBox 7.0 介绍 Oracle VirtualBox 7.0 是一款由…

Compose 布局

文章目录 Compose 布局ColumnColumn属性使用 RowRow属性使用 BoxBox属性使用 ConstraintLayoutLazyColumnLazyColumn属性使用使用多类型使用粘性标题回到顶部 LazyRowLazyRow属性使用 LazyVerticalGridLazyVerticalGrid属性使用 Compose 布局 Column Compose中的”垂直线性布…

大型网站系统架构演化实例_4.数据库读写分离

1.数据库读写分离 网站在使用缓存后,使对大部分数据读操作访问都可以不通过数据库就能完成,但是仍有一部分操作(缓存访问不命中、缓存过期)和全部的写操作都需要访问数据库,在网站的用户达到一定规模后&#x…

制作一个RISC-V的操作系统十二-定时器中断

文章目录 CLINT定时器中断mtimemtimecmp机制总体框架流程时间节拍系统时钟代码 CLINT 产生软件中断和定时器中断 定时器中断 mtime 类似计数器,按照硬件对应的固定频率递增 上电后会自动复位为0,有硬件自动完成 mtimecmp 需要自己设置&#xff0…