当前位置: 首页 > news >正文

Redis5主备安装-Redis

本次Redis有两台服务器及3个独立IP:主服务器的ip地址是192.168.31.190,从服务器的IP地址是192.168.31.191,vipIP地址是192.168.31.216

主备方案承载Redis最大的好处是无需考虑Redis崩后无法访问。

 前提是需要优先安装keepalived,其次安装Redis。

1、master配置

! Configuration File for keepalivedglobal_defs {router_id master
}vrrp_script chk_redis {script "/data/keepalived/redis_check.sh"interval 2    
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 150advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.31.216 dev ens33 label ens33:1}track_script {chk_redis}notify_master "/data/keepalived/redis_master.sh master"notify_backup /data/keepalived/redis_backup.shnotify_fault /data/keepalived/redis_fault.shnotify_stop /data/keepalived/redis_stop.sh
}

2、backup1配置

! Configuration File for keepalived
global_defs {router_id backup1
}
vrrp_script chk_redis {script "/data/keepalived/redis_check.sh"interval 2
}
vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.31.216 dev ens33 label ens33:1}track_script {chk_redis  }notify_master "/data/keepalived/redis_master.sh master"notify_backup /data/keepalived/redis_backup.shnotify_fault /data/keepalived/redis_fault.shnotify_stop /data/keepalived/redis_stop.sh
}

3、创建脚本目录

mkdir -p /data/keepalived

4、编辑监听脚本

vi /data/keepalived/redis_check.sh
#!/bin/bash
ALIVE=`redis-cli -a 123456 PING` 
if [ "$ALIVE" == "PONG" ];thenecho $ALIVEexit 0
elsesystemctl stop keepalived.serviceexit 1
fi

5、默认监听脚本

vi /data/keepalived/redis_fault.sh
#!/bin/bash 
LOGFILE=/data/keepalived/redis-state.log
echo "[fault]" >> $LOGFILE 
date >> $LOGFILE

6、停止监听脚本

vi /data/keepalived/redis_stop.sh
#!/bin/bash 
LOGFILE=/data/keepalived/redis-state.log
echo "[stop]" >> $LOGFILE 
date >> $LOGFILE

7、master服务器master脚本

vi /data/keepalived/redis_master.sh
#!/bin/bash
REDISCLI="redis-cli -a 123456"
LOGFILE="/data/keepalived/redis-state.log"
echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "Being master...." >> $LOGFILE 2>&1
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF 192.168.31.191 6379 >> $LOGFILE  2>&1
sleep 10
echo "Run REPLICAOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI REPLICAOF NO ONE >> $LOGFILE 2>&1
date >> $LOGFILE
在该节点的keepalived第一次启动,指keepalived组中仅有这一台或者这一台的优先级别最高,自动成为主节点,然后就会调用该脚本;
脚本中先从备机上同步数据,如果备机没有运行或故障了,则过几秒执行命令使这个节点的Redis成为主节点(提供读写能力)。
邮件配置
contact=(1509454760@qq.com) #接收者邮箱,多个以空格分隔
HOST_IP=[192.168.31.190] #本机ip
notify() {mailsubject="Redis发生切换($HOST_IP)" #邮件主题mailbody="$(date +'%F %T'): vrrp transition, $HOST_IP keepalived changed to be $1" #邮件正文for receiver in ${contact[*]}doecho "$mailbody" | mail -s "$mailsubject" $receiver #发送邮件done
}
case $1 in
master)notify master;;
backup)notify backup;;
fault)notify fault;;
*)echo "Usage:{master|backup|fault}"exit 1;;
esac

8、master服务器backup脚本

vi /data/keepalived/redis_backup.sh
#!/bin/bash
REDISCLI="redis-cli -a 123456"
LOGFILE="/data/keepalived/redis-state.log"
echo "[backup]" >> $LOGFILE
date >> $LOGFILE
echo "Being slave...." >> $LOGFILE 2>&1
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF 192.168.31.191 6379 >> $LOGFILE  2>&1
sleep 15
echo "Run REPLICAOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI REPLICAOF NO ONE >> $LOGFILE 2>&1
当这个原来是主节点,但是中途挂了,最后又重新启动后,这个时候已经由一个备节点变成了主节点,则keepalived会执行该脚本;
该脚本首先等一段时间,给备机充足的时间切换为主节点,然后该脚本执行命令,让本节点的Redis成为新主节点Redis的备份服务。

9、backup1服务器master脚本

vi /data/keepalived/redis_master.sh
#!/bin/bash
REDISCLI="redis-cli -a 123456"
LOGFILE="/data/keepalived/redis-state.log"
echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "Being master...." >> $LOGFILE 2>&1
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF 192.168.31.190 6379 >> $LOGFILE  2>&1
sleep 10
echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1
当该节点在主节点挂掉之后会执行;
脚本会先从主节点同步数据,然后脚本执行命令让本机Redis独立为主服务(提供读写能力)
邮件配置
contact=(1509454760@qq.com) #接收者邮箱,多个以空格分隔
HOST_IP=[192.168.31.191] #本机ip
notify() {mailsubject="Redis发生切换($HOST_IP)" #邮件主题mailbody="$(date +'%F %T'): vrrp transition, $HOST_IP keepalived changed to be $1" #邮件正文for receiver in ${contact[*]}doecho "$mailbody" | mail -s "$mailsubject" $receiver #发送邮件done
}
case $1 in
master)notify master;;
backup)notify backup;;
fault)notify fault;;
*)echo "Usage:{master|backup|fault}"exit 1;;
esac

10、backup1服务器backup脚本

vi /data/keepalived/redis_backup.sh
#!/bin/bash
REDISCLI="redis-cli -a 123456"
LOGFILE="/data/keepalived/redis-state.log"
echo "[backup]" >> $LOGFILE
date >> $LOGFILE
echo "Being slave...." >> $LOGFILE 2>&1
sleep 15
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF 192.168.31.190 6379 >> $LOGFILE  2>&1
该脚本是在主节点的Redis成为主服务时,或主节点服务已经开启,备机服务再开启后自动执行;
脚本先等待一段时间,让主节点切换为主服务,然后脚本执行命令使本节点的Redis成为主节点的备机。

11、授权

cd /data/keepalived/
chmod +x *.sh
touch redis-state.log

12、启动注意事项

#优先启动master服务器的keepalived,但是前提是Redis已经启动完毕咯,第二是keepalived端口已经放出来咯
#第一次启动时,backup1节点的服务一定是在主master节点服务都开启后才启动,本机Redis只能提供读的功能(可配置为可写,但不安全)。
systemctl start keepalived.service #启动服务
systemctl stop keepalived.service #停止服务
systemctl restart keepalived.service #重启服务
ps -ef|grep keepalive #检查keepalive服务
ip addr #检查vip是否启动

13、测试

redis-cli -h 192.168.31.216 -p 6379
auth 123456
set id 1
get id
redis-cli -h 192.168.31.190 -p 6379
auth 123456
get id
redis-cli -h 192.168.31.191 -p 6379
auth 123456
get id
确认都有数据的情况下,停止192.168.31.190的Redis,正常来说,会将192.168.31.216IP漂移到192.168.31.191这台服务器上,然后测试
190这台服务器上的操作
systemctl stop redis.service
ps -ef|grep keepalive #检查keepalive服务
ip addr #检查vip是否启动
191这台服务器上的操作
ps -ef|grep keepalive #检查keepalive服务
ip addr #检查vip是否启动
redis-cli -h 192.168.31.216 -p 6379
auth 123456
set name wangyulong
get name
redis-cli -h 192.168.31.191 -p 6379
auth 123456
get name
再次整个漂移是成功的
如果再次启动192.168.31.190的Redis服务以及keepalive服务,正常来说又会回到以前
systemctl start redis.service #启动redis服务 
systemctl start keepalived.service #启动服务
然后到192.168.31.191这台服务器上去查看keepalive服务以及vip是否存在
ps -ef|grep keepalive #检查keepalive服务
ip addr #检查vip是否启动
正常来说,在192.168.31.191这台服务器上keepalive服务是正常运行的,而VIP却是不存在的。因为vip又回到了主服务(192.168.31.190)上
再到192.168.31.190这台服务器上去查看keepalive服务以及vip是否存在
ps -ef|grep keepalive #检查keepalive服务
ip addr #检查vip是否启动
正常来说,在192.168.31.190这台服务器上keepalive服务是正常运行的,VIP服务也是正常运行的。最后首先采用vip连接到redis服务里面,查看name是否存在
redis-cli -h 192.168.31.216 -p 6379
auth 123456
get name
redis-cli -h 192.168.31.190 -p 6379
auth 123456
get name

 前提是需要优先安装keepalived,其次安装Redis

相关文章:

Redis5主备安装-Redis

本次Redis有两台服务器及3个独立IP:主服务器的ip地址是192.168.31.190,从服务器的IP地址是192.168.31.191,vipIP地址是192.168.31.216 主备方案承载Redis最大的好处是无需考虑Redis崩后无法访问。 前提是需要优先安装keepalived,…...

C++票据查验、票据ocr、文字识别

现在,80、90后的人们逐渐过渡为职场上的主力人员,在工作中当然也会碰到各种各样的问题。比如,当你的老板给你一个艰难的任务时,肯定是不能直接拒绝的。那么我们该怎么做呢?翔云建议您先认真考虑老板说的任务的难度&…...

pytest.ini介绍

1.pytest.ini是什么 ? pytest.ini文件是pytest的主配置文件;pytest.ini文件的位置一般放在项目的根目录下,不能随便放,也不能更改名字。在pytest.ini文件中都是存放的一些配置选项 ,这些选项都可以通过pytest -h查看到…...

Vue项目打包成桌面应用

Vue项目打包成桌面应用 一、使用 NW.js 打包 NW.js基于Chromium和Node.js。它允许您直接从浏览器调用Node.js代码和模块,并在应用程序中使用Web技术。此外,您可以轻松地将web应用程序打包为本机应用程序。 NW官网...

DEFAULT_JOURNAL_IOPRIO

/* * 这些是 CFQ(完全公平排队)实现的 I/O 优先级组。 RT 是实时类,它总是能获得优质服务。 BE 是尽力而为的调度类,是任何进程的默认类别。 IDLE 是空闲调度类,只有在没有其他人使用磁盘时才会被服务。 */ /* *…...

【阿卡迈防护分析】Vueling航空Akamai破盾实战

文章目录 1. 写在前面2. 风控分析3. 破盾实战 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python…...

使用AWS Lambda轻松开启Amazon Rekognition之旅

这是本系列文章的第一篇,旨在通过动手实践,帮助大家学习亚马逊云科技的生成式AI相关技能。通过这些文章,大家将掌握如何利用亚马逊云科技的各类服务来应用AI技术。 那么让我们开始今天的内容吧! 介绍 什么是Amazon Rekognition&…...

如何获取VS Code扩展的版本更新信息

获取VS Code 扩展的版本更新的需求 因为企业内部有架设私有扩展管理器的要求,但是对于一些官方市场的插件,希望可以自动获取这些扩展的更新并上传至私有扩展管理器。于是就有了本篇介绍的需求: 通过API的方式获取VS Code 扩展的更新。 关于…...

Python开源项目周排行 2024年第13周

#2024年第13周2024年8月5日1roop一款基于深度学习框架TensorFlow和Keras开发的单图换脸工具包,提供了丰富的功能和简洁易用的界面,使得用户可以轻松实现单图换脸操作。支持多张人脸替换成同一个人脸,勾选多人脸模式即可 人脸替换 高清修复自…...

day04--js的综合案例

1.1 商品全选 需求&#xff1a;商品全选 1. 全选 &#xff1a;点击全选按钮,所有复选框都被选中 2. 全不选 &#xff1a;点击全不选按钮,所有复选框都被取消选中 3. 反选 &#xff1a; 点击反选按钮,所有复选框状态取反 <!DOCTYPE html> <html lang"en">…...

【产品经理】定价策略

年初的时候&#xff0c;尝试自己独立运营了一个美团店铺&#xff0c;最终没有继续做下去了&#xff0c;原因是利润率太低&#xff0c;平台和骑手把利润拿走太多了&#xff0c;根本没有钱赚&#xff0c;烧钱搞流量更是深不见底。 不过也学到了很多东西&#xff0c;比如选品策略…...

webrtc学习笔记3

Nodejs实战 对于我们WebRTC项目而言&#xff0c;nodejs主要是实现信令服务器的功能&#xff0c;客户端和服务器端的交互我们选择websocket作为通信协议&#xff0c;所以以websocket的使用为主。 web客户端 websocket WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行…...

Transformer架构;Encoder-Decoder;Padding Mask;Sequence Mask;

目录 Transformer架构 Transformer架构的主要组成部分: 简单举例说明输入和输出: Encoder-Decoder 编码器/解码器组成 6、位置前馈网络(Position-wise Feed-Forward Networks) 7、残差连接和层归一化 10、掩码Mask 10.1 Padding Mask 10.2 Sequence Mask 为什么…...

【leetcode详解】特殊数组II : 一题代表了一类问题(前缀和思想)

前缀和的优势 给定一个数组&#xff0c;前缀和的特点在于&#xff0c;任意给出一对始末位置&#xff0c;能够用O(1)的时间复杂度得到始末位置之间所有元素的某种关系。 题型分析 这道题目正是“给出始末位置&#xff0c;检测其中元素特点”那一类&#xff0c;那我们就想&#…...

SQL每日一练-0814

今日SQL题难度&#xff1a;&#x1f31f;☆☆☆☆☆☆☆☆☆ 1、题目要求 找出每个部门中薪资最高的员工显示部门ID、部门名称、员工ID、员工姓名以及对应的薪资 2、表和虚拟数据 现有两个表&#xff1a;Employees 和 Departments&#xff0c;记录了员工和部门信息。…...

Android持久化技术—文件存储

Android持久化技术—文件存储 文件存储是Android中最基本的一种数据存储方式&#xff0c;它不对存储的内容进行任何的格式化处理&#xff0c;所有数据都是原封不动地保存到文件当中的&#xff0c;因而它比较适合用于存储一些简单的文本数据或二进制数据。如果你想使用文件存储…...

动手学深度学习(pytorch)学习记录12-激活函数[学习记录]

激活函数 激活函数&#xff08;activation function&#xff09;通过计算加权和并加上偏置来确定神经元是否应该被激活&#xff0c; 它们将输入信号转换为输出的可微运算。 import torch import matplotlib.pyplot as plt 简单定义一个画图的函数 def graph_drawing(x_,y_…...

微服务实战系列之玩转Docker(十)

前言 我们知道Docker的“使命”是为了快速完成应用的迁移和部署。为提升它的战斗能力&#xff0c;Docker官方携手发布了Docker Swarm—— 一个快速完成Docker集群构建的利器。那么请先回忆一下本系列第八篇&#xff08;重点compose&#xff09;和第九篇&#xff08;重点networ…...

Mysql(四)---增删查改(进阶)

文章目录 前言1.查询操作1.1.全列查询1.2.指定列查询1.3.列名为表达式查询1.4.查询中使用别名1.5.去重查询1.6.排序1.6.2.NULL 1.7.条件查询1.8.分页查询 2.修改3.删除 前言 上一篇博客&#xff0c;我们学习了一些主键的概念&#xff0c;并且分别创造了一些示例表&#xff0c;…...

SOAP @WebService WSDL

SOAP & WebService & WSDL SOAP&#xff08;Simple Object Access Protocol&#xff09;WebService&#xff08;Web服务&#xff09;WSDL&#xff08;Web Services Description Language&#xff09; SOAP&#xff08;Simple Object Access Protocol&#xff09; **是一…...

Kubernetes安全加固指南:构建安全的容器平台

Kubernetes安全加固指南&#xff1a;构建安全的容器平台 一、Kubernetes安全概述 Kubernetes安全涉及多个层面&#xff0c;包括网络安全、Pod安全、数据安全、访问控制等。构建安全的Kubernetes集群需要从多个维度进行加固。 1.1 安全维度 维度说明关注点网络安全Pod间通信…...

机器学习负结果的价值:打破发表偏见,提升研究效率与可复现性

1. 项目概述&#xff1a;为何要正视机器学习中的“负结果”&#xff1f;在机器学习圈子里混了十几年&#xff0c;从学生时代跑第一个MNIST分类器&#xff0c;到后来在工业界折腾各种落地项目&#xff0c;我见过太多“成功”的论文&#xff0c;也亲手埋葬过更多“失败”的实验。…...

2026中国GEO企业成长路径分析洞察

这份《2026 中国 GEO 企业成长路径分析洞察》由易观分析发布&#xff0c;聚焦生成式引擎优化&#xff08;GEO&#xff09;领域&#xff0c;对比中美差异、拆解本土模式、归纳四类成长路径并给出标杆案例&#xff0c;清晰揭示中国 GEO 行业的底层逻辑、竞争格局与发展方向。关注…...

《元创力》纪实录·卷宗2.1对话态对位法的预习:在“审查通过”与“舆论倒查”之间

叙事背景&#xff1a;最近关于姚晨因《监狱来的妈妈》在国际获奖而微博发声评论引发广泛关注和讨论&#xff0c;由于媒体出现一份判决文书&#xff0c;群众发现《监狱来的妈妈》电影的叙事内容与判决文书不符&#xff0c;引发了舆论声讨&#xff0c;姚晨被迫道歉&#xff0c;删…...

Windows进程内存操控终极指南:Xenos DLL注入器深度解析

Windows进程内存操控终极指南&#xff1a;Xenos DLL注入器深度解析 【免费下载链接】Xenos Windows dll injector 项目地址: https://gitcode.com/gh_mirrors/xe/Xenos 在Windows系统开发和安全研究领域&#xff0c;DLL注入技术是实现进程间通信、功能扩展和深度监控的核…...

DeepSeek模型量化部署翻车现场复盘:INT4精度崩塌、KV Cache错位、Tokenizer解码乱码——火山引擎专家团48小时根因分析报告

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;DeepSeek模型量化部署翻车现场复盘&#xff1a;INT4精度崩塌、KV Cache错位、Tokenizer解码乱码——火山引擎专家团48小时根因分析报告 凌晨三点&#xff0c;DeepSeek-R1-32B模型在火山引擎VEP&#xff08;Vol…...

高性能Python多智能体建模框架:Mesa 3.0架构解析与工程实践指南

高性能Python多智能体建模框架&#xff1a;Mesa 3.0架构解析与工程实践指南 【免费下载链接】mesa Mesa is an open-source Python library for agent-based modeling, ideal for simulating complex systems and exploring emergent behaviors. 项目地址: https://gitcode.c…...

四线三格英语本模板word版pdf版作文纸可打印

高清四线三格英语书写本&#xff0c;兼具 Word、PDF 双格式&#xff0c;标准作文纸版式&#xff0c;页面规整适配打印&#xff0c;日常练字、英语习作、课业书写均可使用。 我用夸克网盘给你分享了「英语四线三格打印纸」&#xff08;50款&#xff09;&#xff0c; 链接&#x…...

免费开源!NVIDIA显卡色彩校准终极方案:novideo_srgb完整指南

免费开源&#xff01;NVIDIA显卡色彩校准终极方案&#xff1a;novideo_srgb完整指南 【免费下载链接】novideo_srgb Calibrate monitors to sRGB or other color spaces on NVIDIA GPUs, based on EDID data or ICC profiles 项目地址: https://gitcode.com/gh_mirrors/no/no…...

天际模组编排师:用LOOT主列表告别游戏崩溃的智能解决方案

天际模组编排师&#xff1a;用LOOT主列表告别游戏崩溃的智能解决方案 【免费下载链接】skyrimse The TES V: Skyrim Special Edition masterlist. 项目地址: https://gitcode.com/gh_mirrors/sk/skyrimse 你是否曾因《上古卷轴V&#xff1a;天际 特别版》模组冲突而烦恼…...