做网站linux主机/h5网站制作平台

做网站linux主机,h5网站制作平台,logo设计品牌,福州最好的网站建设Redis Sentinel 是 Redis 官方提供的高可用性(HA)解决方案,用于管理 Redis 主从架构中的故障检测和故障转移。通过 Redis Sentinel,可以实现 Redis 主从集群的自动故障恢复,确保服务的高可用性。本文将详细介绍Redis S…
Redis Sentinel 是 Redis 官方提供的高可用性(HA)解决方案,用于管理 Redis 主从架构中的故障检测和故障转移。通过 Redis Sentinel,可以实现 Redis 主从集群的自动故障恢复,确保服务的高可用性。本文将详细介绍Redis Sentinel的原理、配置方法以及实践步骤。

1 Redis Sentinel简介

1.1 什么是Redis Sentinel

Redis Sentinel是一个分布式系统,用于监控Redis主从节点的健康状态,并在主节点发生故障时自动将从节点提升为新的主节点。它还可以通知客户端主从节点的变化。

1.2 Redis Sentinel的核心功能

  • 监控:持续监控主从节点的健康状态
  • 通知:当 Redis 实例出现故障时,通知管理员或其他应用程序
  • 自动故障转移:当主节点故障时,自动将从节点提升为新的主节点
  • 配置提供者:为客户端提供最新的主节点地址

1.3 Redis Sentinel的优势

  • 高可用性:自动故障转移,减少人工干预
  • 无缝切换:客户端可以自动感知主从节点的变化
  • 易于扩展:支持多个Sentinel节点,避免单点故障

2 Redis Sentinel工作原理

1. Sentinel节点
  • Sentinel是一个独立的进程,可以部署在多个服务器上,每个Sentinel节点会监控Redis主从节点的状态
2. 故障检测
  • Sentinel 会定期向 Redis 主从节点发送ping命令,检测其是否正常运行
  • 如果主节点在指定时间内未响应,Sentinel会将其标记为“主观下线”
  • 多个Sentinel节点会通过投票机制确认主节点是否“客观下线”
3. 故障转移
  • 当主节点被确认为“客观下线”后,Sentinel会选举一个从节点作为新的主节点
  • Sentinel会向其他从节点发送peplicaof命令,使其复制新的主节点
  • Sentinel会更新客户端的配置,使其连接到新的主节点
4. 客户端连接
  • 客户端通过 Sentinel 获取当前的主节点地址,并在主从切换后自动更新连接

3 Redis Sentinel配置与实践

3.1 环境装备

主机IP

角色

端口

说明

192.168.10.32

Redis Master + Sentinel

6379/26379

主节点及哨兵节点1

192.168.10.31

Redis Slave + Sentinel

6379/26379

从节点及哨兵节点2

192.168.10.30

Redis Slave + Sentinel

6379/26379

从节点及哨兵节点3

3.2 Redis主从复制配置

3.2.1 主节点配置

vim /usr/local/redis/redis.conf
# 编辑/usr/local/redis/redis.conf文件,修改如下项的内容
bind 0.0.0.0
protected-mode no
requirepass lahmy1c@
daemonize yes
logfile /var/log/redis-server.log# 修改完如上内容后重启服务
ps -ef |grep redis|grep -v grep |awk '{print $2}'|xargs kill -9 
/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf

3.2.2 从节点配置

vim /usr/local/redis/redis.conf
# 编辑/usr/local/redis/redis.conf文件,修改如下项的内容
bind 0.0.0.0
protected-mode no
requirepass lahmy1c@
replicaof 192.168.10.32 6379
masterauth lahmy1c@
daemonize yes
logfile /var/log/redis-server.log# 修改完如上内容后重启服务
ps -ef |grep redis|grep -v grep |awk '{print $2}'|xargs kill -9 
/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf

3.2.3 查看主从复制状态

# 主节点
[root@node3 redis]# /usr/local/redis/bin/redis-cli -a lahmy1c@ info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.10.31,port=6379,state=online,offset=210,lag=0
slave1:ip=192.168.10.30,port=6379,state=online,offset=210,lag=1
master_failover_state:no-failover
master_replid:ca76bcd56c1d7aec579fc0976d630857da32b34c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:210
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:210
[root@node3 redis]# # 从节点
[root@node2 redis]# /usr/local/redis/bin/redis-cli -a lahmy1c@ info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:slave
master_host:192.168.10.32
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_read_repl_offset:224
slave_repl_offset:224
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:ca76bcd56c1d7aec579fc0976d630857da32b34c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:224
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:224
[root@node2 redis]# [root@node1 redis]# /usr/local/redis/bin/redis-cli -a lahmy1c@ info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:slave
master_host:192.168.10.32
master_port:6379
master_link_status:up
master_last_io_seconds_ago:8
master_sync_in_progress:0
slave_read_repl_offset:224
slave_repl_offset:224
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:ca76bcd56c1d7aec579fc0976d630857da32b34c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:224
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:224
[root@node1 redis]# 

3.3 Sentinel配置(所有节点)

3.3.1 编辑sentinel.conf文件

# 处理sentinel.conf配置文件
grep -v '^$\|#' /root/tool/redis-6.2.9/sentinel.conf > /usr/local/redis/sentinel.conf# 编辑/usr/local/redis/sentinel.conf,修改或者增加如下内容
port 26379
daemonize yes
pidfile /var/run/redis/redis-sentinel.pid
logfile /var/log/redis-sentinel.log
dir /tmp
sentinel monitor mymaster 192.168.10.32 6379 2
sentinel auth-pass mymaster lahmy1c@
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 15000
sentinel parallel-syncs mymaster 1
关键参数说明:
  • sentinel monitor:监控主节点(名称、IP、端口、quorum数)
  • sentinel auth-pass:主节点认证密码
  • sentinel down-after-milliseconds:判定节点不可达的超时时间(毫秒)
  • sentinel failover-timeout:故障转移超时时间(毫秒)
  • sentinel parallel-syncs:故障转移后并行同步的从节点数

3.3.2 启动sentinel服务

# 在所有节点执行如下命令
/usr/local/redis/bin/redis-sentinel /usr/local/redis/sentinel.conf

 3.3.3 检查sentinel状态

 /usr/local/redis/bin/redis-cli -p 26379 info sentinel[root@node3 bin]# /usr/local/redis/bin/redis-cli -p 26379 info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.10.32:6379,slaves=2,sentinels=3
[root@node3 bin]#

3.3.4 查看主从状态

# 查看主节点状态
/usr/local/redis/bin/redis-cli -p 26379 sentinel master mymaster[root@node3 bin]#  /usr/local/redis/bin/redis-cli -p 26379 sentinel master mymaster1) "name"2) "mymaster"3) "ip"4) "192.168.10.32"5) "port"6) "6379"7) "runid"8) "2c673d7bcd9757ef165bce5aa7a835801318ccb9"9) "flags"
10) "master"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "180"
19) "last-ping-reply"
20) "181"
21) "down-after-milliseconds"
22) "5000"
23) "info-refresh"
24) "4149"
25) "role-reported"
26) "master"
27) "role-reported-time"
28) "546489"
29) "config-epoch"
30) "0"
31) "num-slaves"
32) "2"
33) "num-other-sentinels"
34) "2"
35) "quorum"
36) "2"
37) "failover-timeout"
38) "15000"
39) "parallel-syncs"
40) "1"
[root@node3 bin]# # 查看从节点状态
/usr/local/redis/bin/redis-cli -p 26379 sentinel slaves mymaster[root@node2 redis]# /usr/local/redis/bin/redis-cli -p 26379 sentinel slaves mymaster
1)  1) "name"2) "192.168.10.30:6379"3) "ip"4) "192.168.10.30"5) "port"6) "6379"7) "runid"8) "e2204c7b72ceee7476f532226824bbeabcf0fd3d"9) "flags"10) "slave"11) "link-pending-commands"12) "0"13) "link-refcount"14) "1"15) "last-ping-sent"16) "0"17) "last-ok-ping-reply"18) "885"19) "last-ping-reply"20) "885"21) "down-after-milliseconds"22) "5000"23) "info-refresh"24) "6055"25) "role-reported"26) "slave"27) "role-reported-time"28) "668938"29) "master-link-down-time"30) "0"31) "master-link-status"32) "ok"33) "master-host"34) "192.168.10.32"35) "master-port"36) "6379"37) "slave-priority"38) "100"39) "slave-repl-offset"40) "137279"41) "replica-announced"42) "1"
2)  1) "name"2) "192.168.10.31:6379"3) "ip"4) "192.168.10.31"5) "port"6) "6379"7) "runid"8) "80996e2f4e6bfbcc2470431e05cb45bdd105ab36"9) "flags"10) "slave"11) "link-pending-commands"12) "0"13) "link-refcount"14) "1"15) "last-ping-sent"16) "0"17) "last-ok-ping-reply"18) "885"19) "last-ping-reply"20) "884"21) "down-after-milliseconds"22) "5000"23) "info-refresh"24) "6056"25) "role-reported"26) "slave"27) "role-reported-time"28) "668943"29) "master-link-down-time"30) "0"31) "master-link-status"32) "ok"33) "master-host"34) "192.168.10.32"35) "master-port"36) "6379"37) "slave-priority"38) "100"39) "slave-repl-offset"40) "137279"41) "replica-announced"42) "1"
[root@node2 redis]# 

4 模拟故障转移

4.1 模拟主节故障

/usr/local/redis/bin/redis-cli -p 6379 -a lahmy1c@ shutdown

4.2 观察Sentinel日志

# /var/log/redis-sentinel.log日志将记录选举新主节点的过程
54489:X 18 Mar 2025 15:22:23.593 # +sdown master mymaster 192.168.10.32 6379
54489:X 18 Mar 2025 15:22:23.733 # +new-epoch 1
54489:X 18 Mar 2025 15:22:23.740 # +vote-for-leader 255e219ef39458216f990a50b89de6b41e739ec4 1
54489:X 18 Mar 2025 15:22:24.675 # +odown master mymaster 192.168.10.32 6379 #quorum 3/2
54489:X 18 Mar 2025 15:22:24.676 # Next failover delay: I will not start a failover before Tue Mar 18 15:22:54 2025
54489:X 18 Mar 2025 15:22:24.814 # +config-update-from sentinel 255e219ef39458216f990a50b89de6b41e739ec4 192.168.10.32 26379 @ mymaster 192.168.10.32 6379
54489:X 18 Mar 2025 15:22:24.814 # +switch-master mymaster 192.168.10.32 6379 192.168.10.31 6379
54489:X 18 Mar 2025 15:22:24.818 * +slave slave 192.168.10.30:6379 192.168.10.30 6379 @ mymaster 192.168.10.31 6379
54489:X 18 Mar 2025 15:22:24.819 * +slave slave 192.168.10.32:6379 192.168.10.32 6379 @ mymaster 192.168.10.31 6379
54489:X 18 Mar 2025 15:22:29.829 # +sdown slave 192.168.10.32:6379 192.168.10.32 6379 @ mymaster 192.168.10.31 6379

4.3 验证新主节点

/usr/local/redis/bin/redis-cli -p 6379 -a lahmy1c@ info replication# 此时主节点已经转移到了master_host:192.168.10.31
[root@node1 redis]# /usr/local/redis/bin/redis-cli -p 6379 -a lahmy1c@ info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:slave
master_host:192.168.10.31
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_read_repl_offset:232120
slave_repl_offset:232120
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:124c2940281b400d9240f9237c660db96b23166a
master_replid2:ca76bcd56c1d7aec579fc0976d630857da32b34c
master_repl_offset:232120
second_repl_offset:184978
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:232120
[root@node1 redis]# 

5 总结

通过如上步骤,我们就完成了redis sentinel模式的搭建配置。

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

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

相关文章

【深度】JADC2的层级结构以及全域Mesh网络

文章目录 内容摘要1. 引言2. JADC2层级结构3. JADC2转变为CJADC24. 与工业领域自动化金字塔和全域MESH网络的异同4.1 工业领域自动化金字塔4.2 全域Mesh网络 #JADC2 #Mesh网络 #融合计划 #ABMS #超越计划 #人工智能 #普罗米修斯 **专栏说明:主要研究作战概念、新型作…

210、【图论】课程表(Python)

题目 思路 这道题本质上是一个拓扑排序。每次先统计每个点的入度个数、然后再统计点与点之间的邻接关系,找到入度为0的点作为起始遍历点。之后每遍历到这个点之后,就把这个点后续的邻接关系边的点入度减去一。当某个点入度为0时,继续被加入其…

Mock接口编写教程-axios-mock-adapter(React)

Mock模拟接口编写教程 直接在前端实现接口模拟 1.第一步 设置模拟接口 // mock.ts import axios from axios import MockAdapter from axios-mock-adapter// 创建一个模拟适配器 const mock new MockAdapter(axios)// 设置模拟接口 export const setupMock () > {mock.…

CCF 编程能力认证 C++ 四级宝典

CCF编程能力等级认证(以下简称GESP)2025年四次认证时间分别为:3月22日、6月28日、9月27日、12月20日,认证方式为线下机考,认证语言包括:C、Python和Scratch三种语言,其中Scratch认证为一到四级&…

OpenCV图像拼接(4)图像拼接模块的一个匹配器类cv::detail::BestOf2NearestRangeMatcher

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::detail::BestOf2NearestRangeMatcher 是 OpenCV 库中用于图像拼接模块的一个匹配器类,专门用于寻找两幅图像之间的最佳特征点匹配…

【C#语言】C#中的同步与异步编程:原理、示例与最佳实践

文章目录 ⭐前言⭐一、同步编程:简单但低效的线性执行🌟代码示例🌟执行流程示意图🌟同步编程特点 ⭐二、异步编程:非阻塞的高效执行🌟代码示例🌟执行流程示意图🌟异步编程核心机制&a…

el-input 不可编辑,但是点击的时候出现弹窗/或其他操作面板,并且带可清除按钮

1.focus“getFocus”鼠标聚焦的时候写个方法,弹窗起来 getFocus(){ this.定义的弹窗状态字段 true;} 2.点击确定的时候,数值赋值到el-input的输入框,弹窗取消(this.定义的弹段字端 false) 3.但是会有个问题就是el-input 不可点…

事件响应计划:网络弹性的关键

网络安全事件响应计划不仅仅是技术上的需要,更是企业的当务之急。在网络威胁比以往任何时候都更加复杂和频繁的时代,了解并做好准备应对这些事件可能会决定是恢复还是灾难。 以下是简要分析: 网络安全事件不仅仅是技术故障;它们…

正则表达式详解(regular expression)

💡 正则表达式(Regular Expression, regex)知识点总结 💡 正则表达式是一种用于匹配字符串的模式,广泛用于搜索、替换、验证等操作。 📌 正则表达式的主要作用 1️⃣ 字符串匹配 🧐 检查一个…

全球化2.0 | ZStack云计算系统工程师(ZCCE)国际认证培训成功举办

近日,ZStack云计算系统工程师(ZCCE)国际认证培训在上海成功举办。本次培训采用 "线下 线上直播" 双轨模式,同步开设中文与英文课程,吸引了来自中国、东南亚、独联体、北美、中东等多个国家和地区的近 90 名…

C++学习之nginx+fastDFS

目录 1.知识点概述 2.fastcgi复习 3.文件上传流程分析 4.文件下载流程和优化 5.在存储节点上安装nginx和fastdfs插件 6.mod-fdsf.com配置文件修改 7.解决nginx的worker无法启动,拷贝配置文件操作 8.客户 通过浏览器访问存储节点404问题 9.nginx服务器处理资…

【AIGC】Win10系统极速部署Docker+Ragflow+Dify

【AIGC】WIN10仅3步部署DockerRagflowDify 一、 Docker快速部署1.F2进入bios界面,按F7设置开启VMX虚拟化技术。保存并退出。2.打开控制面板配置开启服务3.到官网下载docker安装包,一键安装(全部默认勾选) 二、 RagFlow快速部署1.确…

新一代电子数据取证专家 | 苏州龙信信息科技有限公司

本文关键词:电子取证、手机取证、计算机取证、云取证 关于我们About us 苏州龙信信息科技有限公司专注于电子数据取证、大数据、信息安全等领域,核心业务主要涵盖取证工具研发、大数据融合分析、案件技术支持、取证能力培训等,先后为执法部门…

ABAP 长文本编辑器

加个屏幕 *&---------------------------------------------------------------------* *& Report YDEMO2 *&---------------------------------------------------------------------* *& *&---------------------------------------------------------…

postman小白教程(从入门到实战,详细教学)

目录 1. postman介绍 2. 下载地址 3. 安装流程 4. 注册postman账号 ① 打开postman,点击【创建账号】或【登录】,会跳转到浏览器 ② 若已有账号可以直接登录;若无账号,则创建新账号 ③ 若登录成功会弹出提示框,…

Qt 实现波浪填充的圆形进度显示

话不多说&#xff0c;先上效果图 代码示例&#xff1a; #include <QApplication> #include <QWidget> #include <QPainter> #include <QPropertyAnimation> #include <QTimer> #include <cmath>class WaveProgressBar : public QWidget {…

Linux vim mode | raw / cooked

注&#xff1a;机翻&#xff0c;未校。 vim terminal “raw” mode Vim 终端 “raw” 模式 1. 原始模式与已处理模式的区别 We know vim puts the terminal in “raw” mode where it receives keystrokes as they are typed, opposed to “cooked” mode where the command…

docker部署dify

1.安装docker 参考链接 https://ascendking.blog.csdn.net/article/details/136407383 设置docker源 vim /etc/docker/daemon.json {"registry-mirrors": ["https://docker.registry.cyou", "https://docker-cf.registry.cyou", "http…

Linux应用:Linux的信号

什么是信号 信号是一种软件中断&#xff0c;用于通知进程系统中发生了某种特定事件。它是操作系统与进程之间&#xff0c;以及进程与进程之间进行异步通信的一种方式。在 Linux 系统中&#xff0c;信号是一种比较简单的进程间通信机制。当一个信号产生时&#xff0c;内核会通过…

实时监控、数据分析!Web-Check构建你的网站健康检测系统实操方案

文章目录 前言1.关于Web-Check2.功能特点3.安装Docker4.创建并启动Web-Check容器5.本地访问测试6.公网远程访问本地Web-Check7.内网穿透工具安装8.创建远程连接公网地址9.使用固定公网地址远程访问 前言 在数字化运维领域&#xff0c;网站稳定性保障始终是开发者和运维团队的核…