做企业网站需要注意哪些/推销一个产品的方案
本次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 商品全选 需求:商品全选 1. 全选 :点击全选按钮,所有复选框都被选中 2. 全不选 :点击全不选按钮,所有复选框都被取消选中 3. 反选 : 点击反选按钮,所有复选框状态取反 <!DOCTYPE html> <html lang"en">…...

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

webrtc学习笔记3
Nodejs实战 对于我们WebRTC项目而言,nodejs主要是实现信令服务器的功能,客户端和服务器端的交互我们选择websocket作为通信协议,所以以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 : 一题代表了一类问题(前缀和思想)
前缀和的优势 给定一个数组,前缀和的特点在于,任意给出一对始末位置,能够用O(1)的时间复杂度得到始末位置之间所有元素的某种关系。 题型分析 这道题目正是“给出始末位置,检测其中元素特点”那一类,那我们就想&#…...

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

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

动手学深度学习(pytorch)学习记录12-激活函数[学习记录]
激活函数 激活函数(activation function)通过计算加权和并加上偏置来确定神经元是否应该被激活, 它们将输入信号转换为输出的可微运算。 import torch import matplotlib.pyplot as plt 简单定义一个画图的函数 def graph_drawing(x_,y_…...

微服务实战系列之玩转Docker(十)
前言 我们知道Docker的“使命”是为了快速完成应用的迁移和部署。为提升它的战斗能力,Docker官方携手发布了Docker Swarm—— 一个快速完成Docker集群构建的利器。那么请先回忆一下本系列第八篇(重点compose)和第九篇(重点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.删除 前言 上一篇博客,我们学习了一些主键的概念,并且分别创造了一些示例表,…...

SOAP @WebService WSDL
SOAP & WebService & WSDL SOAP(Simple Object Access Protocol)WebService(Web服务)WSDL(Web Services Description Language) SOAP(Simple Object Access Protocol) **是一…...

【Qt】QWidget的toolTip属性
QWidget的toolTip属性 如果一个GUI程序,界面比较复杂,按钮比较多,使用toolTip可以设置当鼠标悬停在控件上的时候,可以弹出一个提示。 API说明 setToolTip 设置 toolTip. ⿏标悬停在该 widget 上时会有提⽰说明. setToolTipDur…...

【操作系统】什么是进程?什么是线程?两者有什么区别(面试常考!!!)
什么是进程/任务(Process/Task) 当我们打开我们的电脑的任务管理器就可以看到我们的电脑正在执行的进程。 每个应用程序运行于现代操作系统之上时,操作系统会提供一种抽象,好像系统上只有这个程序在运行,所有的硬件资…...

AI -- Machine Learning
1. What is Machine Learning 1.1 Artificial Intelligence vs. Machine Learning 1.2 Relations to Other Disciplines 与其他学科的关系 1.3 Human Learning vs. Machine Learning 1.4 What is Skill in Machine Learning 什么是机器学习的技能 1.5 Two General Types of Le…...

了解交换机_1.交换机的技术发展
1.LAN的分段-单网线 最简单的网络是两台计算机通过一根网线相连: 一根网线它有很多限制,首先只能连接两台电脑,其次不能距离太远,主要因为: (1)单路网线太长会存在信号衰减;…...

ubuntu 24.04 安装 Nvidia 显卡驱动 + CUDA + cuDNN,配置 AI 深度学习训练环境,简单易懂,一看就会!
ubuntu 24.04 安装 Nvidia 显卡驱动 CUDA cuDNN,配置 AI 深度学习训练环境,简单易懂,一看就会! 1.查看本机显卡型号 lspci | grep -i nvidia输出如下: 01:00.0 3D controller: NVIDIA Corporation GM108M [GeForc…...

跟李沐学AI:目标检测的常用算法
区域神经网络R-CNN 使用启发式搜索算法来选择锚框 -> 使用预训练模型来对每个锚框抽取特征 -> 训练一个SVM对类别进行分类 -> 训练一个线性回归模型来预测边缘框偏移 锚框大小不一,如何将不同的锚框统一为一个batch? -> 兴趣区域池化层 兴趣区域(RoI…...

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(一)---UnrealCV获取深度+分割图像
前言 本系列教程旨在使用UE5配置一个具备激光雷达深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程使用的环境: ubuntu 22.04 ros2 humblewindows11 UE5.4.3python8 本系列教程将涉及以…...

Java算法解析一:二分算法及其衍生出来的问题
这个算法的前提是,数组是升序排列的 算法描述: i和j是指针可以表示查找范围 m为中间值 当目标值targat比m大时,设置查找范围在m右边:i m-1 当目标值targat比m小时,设置查找范围在m左边:j m1 当targat的…...

数学建模预测类—【一元线性回归】
每日格言:行动是治愈恐惧的良药,而犹豫拖延将不断滋养恐惧. 目录 前言 一、什么是回归分析? 1.概念理解 2.分类和一般步骤 二、一元线性回归(Matlab算法) 1.利用regress函数 2、例题讲解 总结 前言 在具体讲述线性回归…...

配置更加美观的 Swagger UI
//注册Swagger服务 private static void AddSwaggerService(IServiceCollection services){services.AddSwaggerGen(opt >{opt.SwaggerDoc("Push", new OpenApiInfo{Version "v1",Title "Push API",Description "Push API 文档"…...