学工系统网站建设的意义/新手网络推广怎么干
Nginx 和 Keepalived 是常用于构建高可用性(High Availability)架构的工具。Nginx 是一款高性能的Web服务器和反向代理服务器,而Keepalived则提供了对Nginx服务的健康状态监测和故障切换功能。
下载Nginx
在服务器1和服务器2分别下载nginx
yum install nginx
配置Nginx
在服务器1配置,vim /usr/share/nginx/html/index.html
在服务器2配置, vim /usr/share/nginx/html/index.html
启动Nginx
启动服务器1和服务器2的nginx
nginx # 启动nginx
nginx -s reload # 重启nginx
nginx -t # 检查nginx配置
访问服务
访问服务1
访问服务2
Keepalived架构
环境搭建
VIP | IP | 主机名 | 主/从 |
192.168.2.3 | keepalived 1 | Master | |
192.168.2.200 | |||
192.168.2.4 | keepalived 2 | Backup |
keepalived的安装
前置下载,keepalived需要gcc
yum install gcc
yum install openssl openssl-devel
通过链接wget获取
wget https://www.keepalived.org/software/keepalived-2.0.20.tar.gz --no-check-certificate
创建keepalived目录,方便管理资源
mkdir keepalived
将压缩文件进行解压缩,解压缩到指定的目录
tar -zxf keepalived-2.0.20.tar.gz -C keepalived/
对keepalived进行配置,编译和安装
cd keepalived/keepalived-2.0.20./configure --sysconf=/etc --prefix=/usr/localmake && make install
以上服务器2同理
安装完成后,有两个文件需要我们认识下,一个是 /etc/keepalived/keepalived.conf
(keepalived的系统配置文件,我们主要操作的就是该文件),一个是/usr/local/sbin目录下的keepalived
,是系统配置脚本,用来启动和关闭keepalived
Keepalived配置
服务器1 ,vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {#通知邮件,当keepalived发送切换时需要发email给具体的邮箱地址notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}#设置发件人的邮箱信息notification_email_from Alexandre.Cassen@firewall.loc#指定smpt服务地址smtp_server 192.168.2.1#指定smpt服务连接超时时间smtp_connect_timeout 30#运行keepalived服务器的一个标识,可以用作发送邮件的主题信息router_id keepalived1vrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}
vrrp_instance VI_1 {state MASTER #有两个值可选MASTER主 BACKUP备interface ens33 #vrrp实例绑定的接口,用于发送VRRP包[当前服务器使用的网卡名称]virtual_router_id 51 #指定VRRP实例ID,范围是0-255priority 100 #指定优先级,优先级高的将成为MASTERadvert_int 1 #指定发送VRRP通告的间隔,单位是秒authentication { #vrrp之间通信的认证信息auth_type PASS #指定认证方式。PASS简单密码认证(推荐)auth_pass 1111 #指定认证使用的密码,最多8位}virtual_ipaddress { #虚拟IP地址设置虚拟IP地址,供用户访问使用,可设置多个,一行一个192.168.2.200}
}
服务器2,vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {#通知邮件,当keepalived发送切换时需要发email给具体的邮箱地址notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}#设置发件人的邮箱信息notification_email_from Alexandre.Cassen@firewall.loc#指定smpt服务地址smtp_server 192.168.2.1#指定smpt服务连接超时时间smtp_connect_timeout 30#运行keepalived服务器的一个标识,可以用作发送邮件的主题信息router_id keepalived2vrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}
vrrp_instance VI_1 {state BACKUP#有两个值可选MASTER主 BACKUP备interface ens33 #vrrp实例绑定的接口,用于发送VRRP包[当前服务器使用的网卡名称]virtual_router_id 51 #指定VRRP实例ID,范围是0-255priority 90 #指定优先级,优先级高的将成为MASTERadvert_int 1 #指定发送VRRP通告的间隔,单位是秒authentication { #vrrp之间通信的认证信息auth_type PASS #指定认证方式。PASS简单密码认证(推荐)auth_pass 1111 #指定认证使用的密码,最多8位}virtual_ipaddress { #虚拟IP地址设置虚拟IP地址,供用户访问使用,可设置多个,一行一个192.168.2.200}
}
Keepalived启动
在服务器1、2启动服务
cd /usr/local/sbin
./keepalived
测试
查看服务器1
查看服务器2,虚拟IP没有存在在服务器2
当把192.168.2.3服务器上的keepalived关闭后,再次查看ip
systemctl disable keepalived
systemctl stop keepalived
查看服务器1,虚拟IP没有存在在服务器1
查看服务器2
虚拟IP(VIP)会在MASTER节点上,当MASTER节点上的keepalived出问题以后,因为BACKUP无法收到MASTER发出的VRRP状态通过信息,就会直接升为MASTER。VIP也会"漂移"到新的MASTER。
测试Nginx
systemctl start keepalived # 启动
我们把192.168.2.3服务器的keepalived再次启动下,由于它的优先级高于服务器192.168.2.4的,所有它会再次成为MASTER,VIP也会"漂移"过去,然后我们再次通过浏览器访问nginx:
如果把192.168.2.3服务器的keepalived关闭掉,再次访问相同的地址
Nginx状态检测脚本
效果实现了以后, 我们会发现要想让vip进行切换,就必须要把服务器上的keepalived进行关闭,而什么时候关闭keepalived呢?应该是在keepalived所在服务器的nginx出现问题后,把keepalived关闭掉,就可以让VIP执行另外一台服务器,但是现在这所有的操作都是通过手动来完成的,我们如何能让系统自动判断当前服务器的nginx是否正确启动,如果没有,要能让VIP自动进行"漂移" 。
vrrp_script
keepalived只能做到对网络故障和keepalived本身的监控,即当出现网络故障或者keepalived本身出现问题时,进行切换。但是这些还不够,我们还需要监控keepalived所在服务器上的其他业务,比如Nginx,如果Nginx出现异常了,仅仅keepalived保持正常,是无法完成系统的正常工作的,因此需要根据业务进程的运行状态决定是否需要进行主备切换,这个时候,我们可以通过编写脚本对业务进程进行检测监控。
编写脚本
vim /root/keepalived/ck_nginx.sh ,这是一个 Bash 脚本,用于检查 Nginx 服务是否正在运行,并在 Nginx 未启动时启动它,并在启动失败后关闭 Keepalived 服务
#!/bin/bash
num=`ps -C nginx --no-header | wc -l`
if [ $num -eq 0 ];then/usr/sbin/nginx #使用 which nginx 可查找到nginx的启动目录sleep 2if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; thenkillall keepalivedfi
fi
设置权限
为脚本文件设置权限
chmod 755 ck_nginx.sh
Keepalived添加配置
vim /etc/keepalived/keepalived.conf ,将脚本添加到Keepalived配置
global_defs {...
}
vrrp_script ck_nginx {script "/root/keepalived/ck_nginx.sh" #执行脚本的位置interval 2 #执行脚本的周期,秒为单位weight -20 #权重的计算方式
}
以上服务器2同理
测试
服务器1,停止nginx服务
systemctl stop nginx
查看服务器1,虚拟IP不在此服务器
查看服务器2 ,虚拟IP转移到此服务器
如果master服务死掉后backup会变成master,但是当master服务又好了的时候 master此时会抢占VIP,这样就会发生两次切换对业务繁忙的网站来说是不好的。所以我们要在配置文件加入 nopreempt 非抢占,但是这个参数只能用于state 为backup,故我们在用HA的时候最好master 和backup的state都设置成backup 让其通过priority来竞争。
相关文章:

Nginx+Keepalived实现服务高可用
Nginx 和 Keepalived 是常用于构建高可用性(High Availability)架构的工具。Nginx 是一款高性能的Web服务器和反向代理服务器,而Keepalived则提供了对Nginx服务的健康状态监测和故障切换功能。 下载Nginx 在服务器1和服务器2分别下载nginx …...

picodet onnx转其它芯片支持格式时遇到
文章目录 报错信息解决方法两模型精度对比 报错信息 报错信息为: Upsample(resize) Resize_0 not support attribute coordinate_transformation_mode:half_pixel. 解决方法 整个模型转换过程是:paddle 动态模型转成静态,再用paddle2onnx…...

【学习笔记】CF704B Ant Man
智商不够啊,咋想到贪心的😅 非常经典的贪心模型🤔 首先,从小到大将每个 i i i插入到排列中,用 D P DP DP记录还有多少个位置可以插入,可以通过钦定新插入的位置左右两边是否继续插入数来提前计算贡献。注…...

SQLines数据迁移工具
Data and Analytics Platform Migration - SQLines Tools SQLines提供的工具可以帮助您在不同的数据库平台之间传输数据、转换数据库模式(DDL)、视图、存储过程、包、用户定义函数(udf)、触发器、SQL查询和SQL脚本。 SQLines SQL Converter OverviewCommand LineConfigurati…...

pkl文件与打开(使用numpy和pickle)
文章目录 1. 什么是pkl文件2. 如何打开?Reference 1. 什么是pkl文件 1)python中有一种存储方式,可以存储为.pkl文件。 2)该存储方式,可以将python项目过程中用到的一些暂时变量、或者需要提取、暂存的字符串、列表、…...

3d渲染农场全面升级,好用的渲染平台值得了解
什么是渲染农场? 渲染农场是专门从事 3D 渲染的大型机器集合,称为渲染节点,这些机器组合在一起执行一项任务(渲染 3D 帧和动画)。通过将渲染工作分配给数百台机器,可以显着减少渲染时间,从而使…...

1.5 JAVA程序运行的机制
**1.5 Java程序的运行机制** --- **简介:** Java程序的运行涉及两个主要步骤:编译和运行。这种机制确保了Java的跨平台特性。 **主要内容:** 1. **Java程序的执行过程**: - **编译**:首先,扩展名为.jav…...

基于FPGA的拔河游戏设计
基于FPGA的拔河游戏机 设计内容: (1)拔河游戏机需要11个发光二极管排成一行,开机 后只有中间一个亮点,作为拔河的中间线。 游戏双方 各持一个按键,迅速且不断地按动产生脉冲,哪方按 得快,亮点就向哪方移动, 每按一次,亮点移动一次。 移到任一方二极管的终端,该方就…...

关联规则挖掘(下):数据分析 | 数据挖掘 | 十大算法之一
⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…...

8、【Qlib】【主要组件】预测模型:模型训练和预测
8、【主要组件】预测模型:模型训练和预测 简介基本类Example简介 预测模型(Forecast Model)旨在对股票做出预测评分。用户可以通过 qrun 在自动化工作流中使用预测模型。 由于 Qlib 中的组件设计成了松耦合方式,预测模型也可以作为一个独立模块使用。 基本类 Qlib 提供了…...

kettle安装
kettle安装 安装java环境 mkdir /data/java ln -s /data/java/ /opt/ cd /opt/javatar zxvf jdk-8u171-linux-x64.tar.gz#java export JAVA_HOME/opt/java/jdk1.8.0_171 export JRE_HOME$JAVA_HOME/jre export CLASSPATH$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH$J…...

基于生物地理学优化的BP神经网络(分类应用) - 附代码
基于生物地理学优化的BP神经网络(分类应用) - 附代码 文章目录 基于生物地理学优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.生物地理学优化BP神经网络3.1 BP神经网络参数设置3.2 生物地理学算法应用 4…...

第二证券:买基金1w一个月能赚多少?
跟着经济的开展和出资观念的改动,越来越多的人开始出资基金,购买基金已成为普遍且盛行的出资方式之一。在这个商场中,人们最重视的问题莫过于“买基金1w一个月能赚多少?”本文将从多个角度分析这一问题,协助出资者更全…...

蓝桥杯每日一题2023.10.7
跑步锻炼 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 简单枚举,对于2的情况特判即可 #include<bits/stdc.h> using namespace std; int num, ans, flag; int m[13] {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; bool is_ren(int n) {if((n %…...

Linux 系统为何产生大量的 core 文件?
Author:rab 目录 一、问题分析二、解决方案扩展 一、问题分析 上一篇刚讲到《Docker 配置基础优化》,这里再补充一下。就在中秋国庆这段小长假里,接收到了线上服务器磁盘告警通知,线上服务器架构是一个 Docker Swarm 集群&#x…...

Web_python_template_injection SSTI printer方法
这题挺简单的 就是记录一下不同方法的rce python_template_injection ssti了 {{.__class__.__mro__[2].__subclasses__()}} 然后用脚本跑可以知道是 71 {{.__class__.__mro__[2].__subclasses__()[71]}} 然后直接 init {{.__class__.__mro__[2].__subclasses__()[71].__i…...

TCP/IP网络江湖——江湖导航(网络层上篇)
目录 一、引言 二、IP地址与路由 三、IP协议与数据包转发 3.1 IP协议:网络江湖的规矩...

数据结构——AVL树(详解 + C++模拟实现)
文章目录 前言AVL树的概念AVL树节点的定义AVL树类框架AVL树的插入AVL树的旋转新节点插入较高子树的左侧 —— 左左: 右单旋新节点插入较高右子树的右侧——右右: 左单旋新节点插入较高左子树的右侧 —— 左右: 先左单旋然后再有单旋新节点插入较高右子树的左侧&…...

redis 雪崩,穿透,击穿及解决方案
一、缓存雪崩: 1. 原因: 缓存雪崩是指在我们设置缓存时大量采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力过重雪崩。 2. 解决方案: 将失效时间分散,通过生成随机数使得key的过期时间…...

Flutter环境搭建及新建项目
一、下载安装压缩包 https://storage.flutter-io.cn/flutter_infra_release/releases/stable/windows/flutter_windows_3.10.6-stable.zip 二、解压缩 解压之后,将里面的flutter整体拿出来 三、配置环境变量 将flutter/bin全路径配置到系统环境变量里面 四、运行…...

【面试题精讲】深拷贝和浅拷贝区别了解吗?什么是引用拷贝?
“ 有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top ” 首发博客地址[1] 面试题手册[2] 系列文章地址[3] 深拷贝和浅拷贝的区别: 深拷贝(Deep Copy)和浅拷贝&#…...

CentOS7.9中使用packstack安装train版本
这里写目录标题 材料准备为什么选择packstack安装静态ip系统配置使用阿里云yum源安装packstack部署openstack 材料准备 ecs云服务器8核心16g内存一台,系统盘100GB,系统CentOS7.9vpc网段:192.168.0.1/24eip一个,带宽5M以上 为什么…...

mfw git泄露构造闭合
这题也挺有想法 第一次确实没有想到 首先我们可以扫出 git 然后 我们githack 泄露一下 然后我们看index.php代码 <?phpif (isset($_GET[page])) {$page $_GET[page]; } else {$page "home"; }$file "templates/" . $page . ".php";/…...

UE5修改导航网格的参数
Unreal Engine 4 - Recast NavMesh Size, how to Change Agent Radius / Tutorial - YouTubehttps://www.youtube.com/watch?vf3hF6xdmCTk 修改当前的 代理半径就是一般贴边的长度 修改编辑器的...

郁金香2021年游戏辅助技术中级班(七)
郁金香2021年游戏辅助技术中级班(七) 058-C,C写代码HOOK分析封包数据格式A059-C,C写代码HOOK分析封包数据格式B-detours劫持060-C,C写代码HOOK分析封包数据格式C-过滤和格式化061-C,C写代码HOOK分析封包数据格式D-写入配置文件062-C,C写代码HOOK分析封包…...

【网络】路由器和交换机的区别
🍁 博主 "开着拖拉机回家"带您 Go to New World.✨🍁 🦄 个人主页——🎐开着拖拉机回家_Linux,大数据运维-CSDN博客 🎐✨🍁 🪁🍁 希望本文能够给您带来一定的帮助…...

SQL的CASE WHEN函数、CAST函数、CONVERT() 函数、COALESCE()函数、DATEDIFF()函数
一、CASE WHEN简单使用 SELECT CASE WHEN age > 18 AND age < 25 THEN 18-25WHEN age > 25 AND age < 35 THEN 25-35WHEN age > 35 AND age < 45 THEN 36-45ELSE 45END AS age_groupFROM peopleGROUP BY age_group;二、CASE WHEN语句与聚合函数一起使用 SE…...

前后端分离计算机毕设项目之基于springboot+vue的房屋租赁系统《内含源码+文档+部署教程》
博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…...

《Spring框架前世今生》
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...

基于树种优化的BP神经网络(分类应用) - 附代码
基于树种优化的BP神经网络(分类应用) - 附代码 文章目录 基于树种优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.树种优化BP神经网络3.1 BP神经网络参数设置3.2 树种算法应用 4.测试结果:5.M…...