Redis哨兵模式之Sentinel模式(二)

一、多节点哨兵如何配置?

哨兵配置原理图

  • 注意:sentinel哨兵模式的搭建是建立在redis主从复制节点配置基础而搭建,在主从配置中从库需要配置好replicaof关联上主库并关闭安全模式,然后设置好bind端口才能关联上机器,而这里的如果设置了一台哨兵机器,首先哨兵机器会通过monitor来监控你的主机器redis-master是否有宕机的可能(状态表现为sdown-,odown-),然后哨兵会自动对slave配置文件进行配置,定位到master机器,然后后期只针对master机器进行监控即可

## 关闭redis服务
pkill redis## 创建3个哨兵文件
sentinel_26379.conf、sentinel_26380.conf、sentinel_26381.conf模版如下:                                                                                                                                                                                            port 26379
daemonize yes
pidfile /var/run/redis-sentinel_26379.pid
logfile /var/log/sentinel_26379.log(哨兵日志)
dir /data/26379
sentinel monitor mymaster 10.0.0.7 6379 2(填写主库地址)
sentinel down-after-milliseconds mymaster 3000
acllog-max-len 128
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
SENTINEL resolve-hostnames no
SENTINEL announce-hostnames no

哨兵节点突发宕机,如何裁决?

  • 如果发生了意外故障主节点突然宕机了,那么就只能通过投票选举让哨兵之间进行商量选举出最终的主机,然后switch-fork实现了主从间关系的转移,最后确定之后重新绑定master、slave之间的关系

redis配置文件详解

二、LNMP对接哨兵服务

根据博客一Redis哨兵模式之Sentinel模式(一)-CSDN博客的信息已经完成了主从节点与哨兵节点的调试工作,那么现在问题来了,我究竟如何能让php-fpm后端连接上redis哨兵来监控主master宕机并进行灵活的转换呢????

由于php-fpm后端管理页面无法直接填写哨兵来完成与redis协议,可以考虑的解决方案有两种要么对php源码文件编写(通常交给程序员解决),要么通过shell脚本来实现master 脚本的动态获取,然后将主master节点依照哨的情况进行动态切换

  • 首先需要完成后端php_redis连接的配置

  • 写shell脚本方式来动态获取哨兵

#!/bin/bash 
############################
## auto check redis master
############################
while true 
doREDIS_MASTER=$(grep -aiE "monitor mymaster" /usr/local/redis/sentinel.conf | awk '{print $4}')grep -aiE "$REDIS_MASTER" /etc/hostsif [ $? -ne 0 ];thensed -i '/redis.jf.com/d' /etc/hostsecho "$REDIS_MASTER" >>  /etc/hostsecho Change time:`date`fisleep 5
done    

三、MYSQL读写分离

  • 场景分析

当用户首次访问网页时,首先会将数据请求转发到到MySQL服务器如果首次数据量过大,那么就会导致首次服务器就会出现宕机风险,此时我们就引入了分库 ,分布式机器或MYSQL读写分离来进一步缓解服务器压力了

  • 原理分析

MYSQL读写分离的本质是将增删改的数据交给主库去处理,而数据查询就需要交给从库来做进一步的处理了,MYSQL读写分离实际上是基于MySQL主从复制而设定的,这样设计保证了在master端口写入数据,slave同步后,Web应用就可以直接读取从库的数据了。

  • mycat中间件

  • 实验部署

机器准备

master(主机)10.0.0.6
slave(从机)10.0.0.7
mycat机器10.0.0.8

实验步骤

##(mycat机器操作)
## Jdk环境安装部署
yum -y install java## mycat的jar包和zip包上传
mycat2-1.21-release-jar-with-dependencies.jar
mycat2-install-template-1.21.zip## 压缩mycat程序
unzip mycat2-install-template-1.21.zip 
\mv mycat /usr/local/## 拷贝mycat依赖环境
cp mycat2-1.21-release-jar-with-dependencies.jar /usr/local/mycat/lib/#授予Mycat bin目录下文件执行权限;
chmod +x /usr/local/mycat/bin/*#查看Mycat程序是否部署成功;
ls -l /usr/local/mycat/## (master机器操作)
## 创建专有用户
CREATE USER 'mycat'@'%' IDENTIFIED BY 'aaaAAA111.';
#授权用户访问;
GRANT XA_RECOVER_ADMIN ON *.* to 'mycat'@'%';
GRANT ALL PRIVILEGES ON *.* to 'mycat'@'%';
FLUSH PRIVILEGES;
# 创建数据原型库mycat----->mycat数据表存放地
create database mycat;## 修改mycat数据源配置(参见下图)vim /usr/local/mycat/conf/datasources/prototypeDs.datasource.json## 创建物理型数据库实现读写分离
## 拷贝模板文件,生成master和slave配置文件
\cp prototypeDs.datasource.json master.datasource.json
\cp prototypeDs.datasource.json slave-01.datasource.json

mycat配置文件修改

mycat-master数据源配置信息

mycat-slave数据源配置信息

配置物理数据源cluster集群信息

cd  /usr/local/mycat/conf/clusters
\cp prototype.cluster.json master-slave.cluster.json

## 配置cluster.conf文件配置信息
cat>master-slave.cluster.json<<EOF
{"clusterType":"MASTER_SLAVE","heartbeat":{"heartbeatTimeout":1000,"maxRetry":3,"minSwitchTimeInterval":300,"slaveThreshold":0},"masters":["master"],"replicas":["slave-01"],"maxCon":5000,"name":"master-slave","readBalanceType":"BALANCE_ALL","switchType":"NOT_SWITCH"
}
EOF

将物理数据库与集群绑定起来

cd /usr/local/mycat/conf/schemas

## 创建discuz框架文件
cat>discuz.schema.json<<EOF
{"schemaName": "discuz","targetName": "master-slave","normalTables": {}
}
EOF

mycat数据读取流程

修改 Mycat 登录用户信息

cd /usr/local/mycat/conf/users/

#修改root.user.json文件,代码;
{"dialect":"mysql","ip":null,"password":"aaaAAA111.","transactionType":"xa","username":"root"
}

有关mycat启动服务、查看状态、帮助情况

#启动服务;
/usr/local/mycat/bin/mycat start
#查看服务状态;
/usr/local/mycat/bin/mycat status
#查看Mycat帮助信息;
/usr/local/mycat/bin/mycat --help

 检查是否存在报错问题(无法连接上mysql数据库):

下面针对mycat服务启动时发现mysql服务器未创建用户解决方案

ALTER USER 'root'@'localhost' IDENTIFIED BY 'aaaAAA111.';

update mysql.user set host='%' where user="root";

检查mycat的监听端口

netstat -tnlp | grep -E "8066|9066"

mysql测试连接情况

验证读写分离

## 在slave中创建数据表
create table t1 (id char(20),name char(20),job char(10));
insert into t1 values (01,'wanger','IT'); 
insert into t1 values (02,'zhangsan','IT'); 

补充一个MySQL从服务器配置mycat读写分离

(配置了一主两从架构)

开放的一台新机器IP地址为10.0.0.5

## 安装mysql,mysql-server软件包
yum -y install mysql mysql-server## 将master机器加上读锁
flush  tables  with  read  lock;
## 数据备份完成之后解开锁
unlock tables;## 备份主表的数据
mysqldump -B -uroot -paaaAAA111. --all-databases > 0707all.sql## 将主表的数据发送给新机器
scp -r 0707all.sql 10.0.0.5:/root/## 重启mysql服务
service mysqld start## 编辑mysql配置,编写server-id配置
vim /etc/my.cnf.d/mysql-server.cnf ## 数据导入
mysql -uroot -p < 0707all.sql ## 与master机器绑定建立关联(根据master状态来决定)
change master to 
master_host='10.0.0.6',master_user='repl',master_password='123456',master_log_file='mysql-bin.000005',master_log_pos=2679454;
start slave;
show slave status\G;## 检查还无法启动
stop slave;
reset slave;##拷贝02数据源(修改name)
cp slave-01.datasource.json slave-02.datasource.json## 修改集群架构配置文件
cd ../clusters/
vim master-slave.cluster.json(在replica中加入slave-02) 

mysql-mycat引擎一主两从架构

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

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

    相关文章

    基于Excel的数据分析思维与分析方法

    数据分析一定要会Excel、SQL和Python&#xff1f;非常肯定地回答您&#xff0c;Python、R语言、Excel函数和VBA&#xff0c;以及高级数据分析软件&#xff0c;都学不到&#xff0c;您将学到&#xff1a;5个有效的数据分析利器&#xff0c;以及分析思维 一、描述性统计分析 在…

    计算机网络笔记(不全)

    一、计算机网络体系结构1.计算机网络的概念计算机网络&#xff1a;由若干结点和连接这些结点的链路组成。结点可以是计算机、集线器、交换机、路由器等。互连网(internet)&#xff1a;多个计算机网络通过路由器互相连接而成&#xff0c;可用任意协议通信。互联网(因特网Interne…

    XML Schema 复合元素

    XML Schema 复合元素 引言 XML(可扩展标记语言)作为一种灵活的标记语言,广泛应用于数据交换和存储。XML Schema 是一种用于描述和定义 XML 文档结构的语言,它定义了 XML 文档的元素、属性、类型和约束。本文将详细介绍 XML Schema 中的复合元素,并探讨其在实际应用中的重…

    华为云Flexus+DeepSeek征文 | 弹性算力实战:Flexus X实例自动扩缩容策略优化

    华为云FlexusDeepSeek征文 | 弹性算力实战&#xff1a;Flexus X实例自动扩缩容策略优化 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 总有一行代码&#xff0c;能点亮万千星辰。 &#x1f50d; 在技术的宇宙中&#xff0c;我愿做永不停歇的探索者…

    【仓颉】运行环境配置VSCode + Win11

    作者&#xff1a;大李子 团队&#xff1a;坚果派 十年iOS&#xff0c;All in转鸿蒙 前言 “仓颉编程语言是一款面向全场景智能的新一代编程语言&#xff0c;主打原生智能化、天生全场景、高性能、强安全。融入鸿蒙生态&#xff0c;为开发者提供良好的编程体验。” ——摘自仓…

    【K线训练软件研发历程】【日常记录向】1.K线滑动窗口

    文章目录 当前效果未来发展思路技术选型值得分享的技术点数据加载、解析的代码echats的代码当前效果 👆相当于有个hello world了。 未来发展思路 开源 技术选型 界面直接采用electron,等开源后,可以直接挂release,用户下载安装包后,一键安装,一键运行,降低使用门槛…

    抖音解析下载工具 v1.0.0:免安装单文件,一键无水印保存高清视音频

    宝子们&#xff0c;今天给你们带来一款超轻量的抖音下载神器——抖音解析下载工具 v1.0.0。 它只有单文件&#xff0c;双击就能用&#xff0c;免安装、无广告、完全免费&#xff0c;复制粘贴链接即可一键解析下载高清无水印视频/音频&#xff0c;简直不要太方便&#xff01; 为…

    Ingress——2

    目录 ‌一. 域名重定向&#xff08;HTTP→HTTPS/旧域名跳转&#xff09;‌ ‌二. 前后端分离Rewrite&#xff08;路径改写&#xff09;‌ ‌三. 混合配置示例&#xff08;重定向Rewrite&#xff09;‌ ‌四. SSL/TLS配置&#xff08;HTTPS加密&#xff09;‌ ‌五. 基本认…

    12. grafana-Dashboard的Variable(过滤)使用

    说明制作这样一个选择过滤的下拉框&#xff0c;可以选择某个服务器的步骤1. 点击最上面的Dashboard settings2. 选择Variables 并点击ADD variable3. 写出过滤的标签名和查询条件&#xff08;label_values(查询条件)&#xff09;4. 点击 save as... 保存退出5. 出来后左上角就…

    Cursor一键续杯pro教程,支持最新1.0系列版本

    使用前检查&#xff1a; 使用前请先看左下角&#xff0c;是否获取到Cursor的版本号 如果没有请先在 功能页面 -→ 自定义Cursor路径 选择你Cursor的安装的路径&#xff0c;并开启后重启YCursor&#xff0c;获取到版本后才能正常使用功能 检查软件左下角的权限标识是否为绿色 如…

    pyhton基础【25】面向对象进阶六

    目录 十七.单例模式 实现单例模式的两种方式 __new__方法概述 单例模式的使用场景 十七.单例模式 引入 单例模式是一种常用的软件设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取这个实例。 实现单例模式的两种方式 使用类属性创…

    后端树形结构

    案例 在后端开发中&#xff0c;树形结构数据的查询和处理是一个常见的需求&#xff0c;比如部门管理、分类目录展示等场景。接下来&#xff0c;我们以一个部门管理系统为例&#xff0c;详细介绍如何实现后端的树查询功能。 案例背景 假设我们正在开发一个公司的内部管理系统&am…

    高效沟通04-RIDE说服模型

    高效沟通专栏–组织运转的命脉与个人成功的基石 目录 1. RIDE模型的核心理念2. RIDE模型的应用场景3. RIDE模型使用步骤4. RIDE模型示例与练习4.1 应用RIDE模型:4.2 练习:你来试试!5. 总结RIDE模型是一种结构化的说服框架,旨在帮助你在沟通(尤其是书面沟通或需要清晰逻辑…

    利用selenium获取网页数据,脚本加载慢问题的解决办法

    问题&#xff1a;最近在写一个脚本去获取一个网站的数据&#xff0c;用到一个表格中的数据&#xff0c;条目是1000条&#xff0c;需要逐条去获取网站上对应的数据&#xff0c;遇到的问题是脚本运行后&#xff0c;很久才开始打开驱动浏览器。经过很多次尝试&#xff0c;主要原因…

    Ubuntu查看本机代理的实操指南

    快速确认代理状态的必要性在Ubuntu系统中&#xff0c;代理设置是跨境访问、企业内网连接、开发调试的重要配置。无论是排查网络卡顿、验证代理是否生效&#xff0c;还是确保特定应用走代理通道&#xff0c;快速查看当前代理状态都是关键步骤。图形界面查看&#xff0c;可视化操…

    三格电子——双通道 CAN(FD)转以太网

    【SG-CAN(FD)NET-210】 一、功能描述 CANFD 完全向下兼容 CAN &#xff0c;以下统称 CAN(FD) 。 SG-CAN(FD)NET-210 是一款用来把 CANFD 总线数据转为网口数据的设 备。 网口支持 TCP Sever 、 TCP Client 、 UDP Sever 、 UDP Client 四种模式。 可以通过软件配置…

    【一起来学AI大模型】卷积神经网络(CNN):视觉识别的革命性架构

    一、CNN的核心思想与生物启示 卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;是受生物视觉皮层启发的深度学习架构&#xff0c;专门用于处理网格状拓扑数据&#xff08;如图像、视频、音频&#xff09;。其核心创新在于&#xff1a; 局部感受野&#xff…

    创建和编辑Crontab的方法

    计划任务&#xff0c;在 Linux 中一般使用Crontab&#xff0c;通过crontab命令&#xff0c;我们可以在固定的间隔时间执行指定的系统指令或 Shell 脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。 创建…

    在职场中如何培养创新思维?

    芯片研发人员&#xff0c;授权发明专利40&#xff0c;聊聊技术层面的创新&#xff0c; 创新的本质&#xff0c;是旧有知识的创造性组合&#xff0c; 不存在无中生有的创新&#xff0c; 你必须建立本领域的知识体系&#xff0c;对过往各种创新&#xff0c;烂熟于心&#xff0…

    设备健康管理平台功能深度对比:中讯烛龙如何以预测性维护重构工业运维范式?

    全球制造业因非计划停机每年损失超千亿美元​&#xff0c;而搭载预测性维护系统的企业&#xff0c;设备可用率可提升至99.8%​​。 在工业4.0与智能制造浪潮下&#xff0c;设备健康管理平台已从“可选工具”升级为“核心生产力工具”。面对市场上功能繁杂的解决方案&#xff0c…