web集群学习:nginx+keepalived实现负载均衡高可用性
目录
项目架构
一,环境介绍
二,项目部署
在Web服务器上配置Web测试页面
nginx负载均衡配置
配置Nginx_Master
通过vrrp_script实现对集群资源的监控(1>通过killall命令探测服务运行状态)
通过vrrp_script实现对集群资源的监控(2、开发检测nginx存活的shell脚本)
三,项目测试
四,实现不抢占模式
项目架构
Nginx+Keepalived实现高可用
在 Keepalived + Nginx 高可用负载均衡架构中,keepalived 负责实现高可用。它是一个高性能的服务器高可用或者热备解决方案,Keepalived主要来防止服务器单点故障的发生问题,可以通过其与Nginx的配合实现Web服务器端的高可用。使用keepalived可以保证nginx的高可用,他能监控nginx的健康状态,当nginx出现宕机时自动主备切换。
一,环境介绍
| 服务器名称 | IP | 用途 |
| Nginx_Master | 172.16.90.111 | 提供负载均衡 |
| Nginx_Backup | 172.16.90.112 | 提供负载均衡 |
| LVS-DR-VIP | 172.16.90.200 | 网站的VIP地址 |
| Web1服务器 | 172.16.90.113 | 提供Web服务 |
| Web2服务器 | 172.16.90.114 | 提供Web服务 |
二,项目部署
在Web服务器上配置Web测试页面
web01配置:
cd /usr/share/nginx/html/
echo "web test page,`hostname -I`." > index.html
systemctl restart nginx
web02配置同上
nginx负载均衡配置
两台nginx做同样配置
1、安装nginx
yum install http://nginx.org/packages/rhel/7/x86_64/RPMS/nginx-1.10.0-1.el7.ngx.x86_64.rpm
2、配置nginx反向代理
[root@nginx_master ~]# cd /etc/nginx/conf.d/
[root@nginx_master conf.d]# mv default.conf{,.bak}
[root@nginx_master conf.d]# vim web.confupstream webpools {server 172.16.90.113;server 172.16.90.114;
}server {location / {proxy_pass http://webpools;index index.html;}
}
3,重启nginx服务,并测试访问nginx
nginx -t
systemctl restart nginx
客户端访问测试负载均衡:
for ((i=1;i<=10;i++)); do curl 172.16.90.111; done
配置Nginx_Master
安装keepalived
yum install keepalived -y
通过vrrp_script实现对集群资源的监控(1>通过killall命令探测服务运行状态)
配置keepalived
vim /etc/keepalived/keepalived.confvrrp_script chk_nginx {script "killall -0 nginx"#script "</dev/tcp/127.0.0.1/80"#script "if [ -f /var/run/httpd/httpd.pid ];then exit 0;else exit 1;fi"#script "/etc/keepalived/check_nginx.sh"interval 2fall 2rise 1}vrrp_instance VI_1 {state MASTERinterface ens32 //填你对应的网卡名称virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}notify_master "/etc/keepalived/master.sh"notify_backup "/etc/keepalived/backup.sh"notify_fault "/etc/keepalived/fault.sh"track_script{chk_nginx}virtual_ipaddress {172.16.90.200/24 dev ens32}}
相关参数说明:
notify的用法:
notify_master:当当前节点成为master时,通知脚本执行任务(一般用于启动某服务,比如 nginx,haproxy等)
notify_backup:当当前节点成为backup时,通知脚本执行任务(一般用于关闭某服务,比如nginx,haproxy等)
notify_fault:当当前节点出现故障,执行的任务;
根据提供的路径脚本路径,编写提供日志记录的脚本:
vim /etc/keepalived/master.sh
#!/bin/bash
LOGFILE=/etc/keepalived/nginx_state.log
echo "[master]" >> $LOGFILE
date >> $LOGFILEvim /etc/keepalived/backup.sh
#!/bin/bash
LOGFILE=/etc/keepalived/nginx_state.sh
echo "[backup]" >> $LOGFILE
date >> $LOGFILEvim /etc/keepalived/fault.sh
#!/bin/bash
LOGFILE=/etc/keepalived/nginx_state.log
echo "[dault]" >> $LOGFILE
date >> $LOGFILE
给文件赋予执行权限
chmod +x /etc/keepalived/*.sh
Nginx_Backup配置同上
通过vrrp_script实现对集群资源的监控(2、开发检测nginx存活的shell脚本)
vim /etc/keepalived/check_nginx.sh#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];thensystemctl start nginxsleep 3
if [ `ps -C nginx --no-header |wc -l` -eq 0 ]
thensystemctl stop keepalivedfi
fi
给文件赋予执行权限
chmod +x /etc/keepalived/*.sh
配置keepalived
vim /etc/keepalived/keepalived.confvrrp_script chk_nginx {#script "killall -0 nginx"#script "</dev/tcp/127.0.0.1/80"#script "if [ -f /var/run/httpd/httpd.pid ];then exit 0;else exit 1;fi"script "/etc/keepalived/check_nginx.sh"interval 2fall 2rise 1}vrrp_instance VI_1 {state MASTERinterface ens32 //填你对应的网卡名称virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}notify_master "/etc/keepalived/master.sh"notify_backup "/etc/keepalived/backup.sh"notify_fault "/etc/keepalived/fault.sh"track_script{chk_nginx}virtual_ipaddress {172.16.90.200/24 dev ens32}}
Nginx_Backup配置同上
三,项目测试
重启主从调度的nginx和keepalived
[root@nginx_master ~]# systemctl restart nginx keepalived
[root@nginx_backup ~]# systemctl restart nginx keepalived
Master,Backup都正常,只有Master对外提供服务
[root@nginx_master ~]# ip a | grep "172.16.90.200"
inet 172.16.90.200/24 scope global ens32
Master宕机,Backup接替Master对外提供服务
模拟Master的keepalived服务器停止
[root@nginx_master ~]# systemctl stop keepalived.service
此时VIP在Backup上
[root@nginx_backup ~]# ip a | grep "172.16.90.200"
inet 172.16.90.200/24 scope global ens32
在客户机上验证是否Backup接管后还能实现负载均衡
for ((i=1;i<=10;i++)); do curl 172.16.90.200; done
Master恢复正常,Master继续提供服务,Backup停止服务
模拟Master的keepalived服务恢复正常
[root@nginx_master ~]# systemctl start keepalived.service
此时VIP在Master上
[root@nginx_master ~]# ip a | grep "172.16.90.200"
inet 172.16.90.200/24 scope global ens32
四,实现不抢占模式
上述主节点一宕机,备节点就会接管,主节点修复好了,又会重新接管服务。服务的切换存在一定的风险和不稳定性,为了避免生产中多次网络抖动,要实现不抢占模式
nopreempt 设置的是高可用集群中的不抢占功能:设置 nopreempt可以实现主节点故障恢复后不再切回到主节点,让服务一直在备用节点下工作, 直到备用节点出现故障才会进行切换。在使用不抢占功能时,在“state” 状态为 “BACKUP” 的节点上设置,而且这个节点的优先级必须高于其他节点
Nginx_Master上
vim /etc/keepalived/keepalived.confvrrp_script chk_nginx {#script "killall -0 nginx"#script "</dev/tcp/127.0.0.1/80"#script "if [ -f /var/run/httpd/httpd.pid ];then exit 0;else exit 1;fi"script "/etc/keepalived/check_nginx.sh"interval 2fall 2rise 1}vrrp_instance VI_1 {state BACKUP //原来的MASTER改为BACKUPinterface ens32 //填你对应的网卡名称virtual_router_id 51priority 100nopreept //添加这行advert_int 1authentication {auth_type PASSauth_pass 1111}notify_master "/etc/keepalived/master.sh"notify_backup "/etc/keepalived/backup.sh"notify_fault "/etc/keepalived/fault.sh"track_script{chk_nginx}virtual_ipaddress {172.16.90.200/24 dev ens32}}
相关文章:
web集群学习:nginx+keepalived实现负载均衡高可用性
目录 项目架构 一,环境介绍 二,项目部署 在Web服务器上配置Web测试页面 nginx负载均衡配置 配置Nginx_Master 通过vrrp_script实现对集群资源的监控(1>通过killall命令探测服务运行状态) 通过vrrp_script实现对集群资源…...
MFC第二十九天 CView类的分支(以及其派生类的功能)、MFC六大关键技术
文章目录 CView类的分支CEditViewCHtmlViewMainFrm.h CMainFrame 类的接口CMainView .h CListCtrl与CListView的创建原理 CTreeViewCTreeCtrl类简介CTreeCtrl类的原理以及常用功能 MFC六大关键技术视图和带分割栏的框架开发与消息路由CLeftView.cppCRightView.hCRightView.cppC…...
SpringBoot复习:(37)自定义ErrorController
所有接口统一返回的数据格式 package cn.edu.tju.domain;public class MyResponse {private int code;private String message;private String exception;private String stack;public int getCode() {return code;}public void setCode(int code) {this.code code;}public S…...
Linux学习之防火墙概述
防火墙分类: 软件防火墙:常用于数据包的过滤,比如限制某些ip或者端口,进行某些数据的转发或者传送 硬件防火墙:防御地域攻击 软件防火墙的分类: 包过滤防火墙:控制比较宽泛,防御效果…...
JS_围绕圆形滑动
需求:滑动手势最大不能超过一个半径为50的圆形,超出围绕圆形边线滑动 这里只提供一个思路,下面代码可以运行,但是要使用需要改成自己的参数 <div style"width: 100%;height: 100vh;display: flex;justify-content: cente…...
Ubuntu上安装RabbitMQ
在Ubuntu上安装RabbitMQ并设置管理员用户为"admin",密码为"123456",并开启开机自启 更新系统软件包列表。在终端中执行以下命令: sudo apt update安装RabbitMQ服务器软件包。运行以下命令: sudo apt insta…...
统计学和机器学习之间的联系和区别
一、说明 老实说,我厌倦了几乎每天都在社交媒体和我的大学里听到这场辩论。通常,这伴随着一些模糊的陈述来解释这个问题。双方都为此感到内疚。我希望在本文结束时,您将对这些有些模糊的术语有更明智的立场。 二、论点 与普遍的看法相反&…...
linux中profile.d和profile的区别
profile.d在profile中加载 profile文件 PATH"/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/scripts:/soc/bin:/soc/scripts" LD_LIBRARY_PATH"/usr/local/lib:/usr/lib:/opt/lib:/soc/lib" export SSL_LDPATH/usr/local/lib/ export ZLIB_LDPATH/usr/lo…...
MobaXterm sftp 不能拖拽文件夹了?
原因是我把mobaxterm设置成Windows管理员权限运行了,结果就不能拖动文件。把管理员权限去掉就恢复正常了。 原因是我把mobaxterm设置成Windows管理员权限运行了,结果就不能拖动文件。把管理员权限去掉就恢复正常了。 原因是我把mobaxterm设置成Windows管理员权限运行了,结果就不…...
【ArcGIS Pro二次开发】(59):Editing(编辑)模块
ArcGIS Pro SDK中的"Editing"(编辑)模块提供了一系列API和工具,允许开发人员在ArcGIS Pro中实现各种地图数据编辑操作,从简单的要素绘制到复杂的数据集编辑。 下面列举一些常用编辑工具的实现方法。 1、获取所选要素的…...
WebSocket与消息推送
B/S结构的软件项目中有时客户端需要实时的获得服务器消息,但默认HTTP协议只支持请求响应模式,这样做可以简化Web服务器,减少服务器的负担,加快响应速度,因为服务器不需要与客户端长时间建立一个通信链接,但…...
5.1 web浏览安全
数据参考:CISP官方 目录 Web应用基础浏览器所面临的安全威胁养成良好的Web浏览安全意识如何安全使用浏览器 一、Web应用基础 1、Web应用的基本概念 Web ( World wide Web) 也称为万维网 脱离单机Web应用在互联网上占据了及其重要的地位Web应用的发展…...
(六)Unity开发Vision Pro——词汇表
1.PolySpatial Core (com.unity.polyspatial):基础 PolySpatial 包,初始化和所有设置从这里开始。它执行更改跟踪和处理、序列化/反序列化,并包括 ShaderGraph 到 MaterialX 转换器 2.PolySpatial XR (com.unity.polyspatial.xr):…...
算法随笔:图论问题之割点割边
割点 定义 割点的定义:如果一个点被删除之后会导致整个图不再是一个连通图,那么这个顶点就是这个图的割点。举例: 上图中的点2就是一个割点,如果它被删除,则整个图被分为两个连通分量,不再是一个连通图。…...
【虚幻引擎】UE5数字人的创建
安装插件 在插件里面找到MetaHuman,设置激活,然后重启引擎 找到bridge,并开启,这个需要我们制作完成的metahuman需要在这个插件里下载,unreal5自动安装 创建metahuman 首先添加一个metahuman本体,如果你的插…...
算法:深度优先遍历
文章目录 什么是深搜典型题目积累 本篇主要积累的是深度优先遍历算法 什么是深搜 深度优先搜索英文缩写为 DFS 即Depth First Search 其过程是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次 简单来说就是: 一路走到头,不撞墙…...
Stable Diffusion + Deform制作指南
1.安装sd以及deform插件,更新后记得重启 需要安装ffmpeg https://ffmpeg.org/download.html 选择对应版本然后安装 如果是windows需要解压后将ffmpeg的bin目录配置在电脑的环境变量里面。 2.准备一张初始开始图片 3.填写参数,这里面参数要注意,宽高一定是32的倍数。如果填写…...
ssm+vue网上花店设计源码和论文
ssmvue网上花店设计源码和论文017 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用…...
【leetcode】第一章数组
704. 二分查找 边界值需注意left代表左边界下标值,right代表右边界的下标值当数组只有一个元素时,此时如果找到该元素应该返回下标0,因此条件为left<right当mid的元素值大于target时,此时说明我们想找的target在右边ÿ…...
01|Java中常见错误或不清楚
补充:length vs length() vs size() 1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性. 2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法. 3.java中的siz…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
【Linux】使用1Panel 面板让服务器定时自动执行任务
服务器就是一台24小时开机的主机,相比自己家中不定时开关机的主机更适合完成定时任务,例如下载资源、备份上传,或者登录某个网站执行一些操作,只需要编写 脚本,然后让服务器定时来执行这个脚本就可以。 有很多方法实现…...
【Axure高保真原型】图片列表添加和删除图片
今天和大家分享图片列表添加和删除图片的原型模板,效果包括: 点击图片列表的加号可以显示图片选择器,选择里面的图片; 选择图片后点击添加按钮,可以将该图片添加到图片列表; 鼠标移入图片列表的图片&…...
MySQL 数据库深度剖析:事务、SQL 优化、索引与 Buffer Pool
在当今数据驱动的时代,数据库作为数据存储与管理的核心,其性能与可靠性至关重要。MySQL 作为一款广泛使用的开源数据库,在众多应用场景中发挥着关键作用。在这篇博客中,我将围绕 MySQL 数据库的核心知识展开,涵盖事务及…...
【靶场】XXE-Lab xxe漏洞
前言 学习xxe漏洞,搭了个XXE-Lab的靶场 一、搭建靶场 现在需要登录,不知道用户名密码,先随便试试抓包 二、判断是否存在xxe漏洞 1.首先登录抓包 看到xml数据解析,由此判断和xxe漏洞有关,但还不确定xxe漏洞是否存在。 2.尝试xxe 漏洞 判断是否存在xxe漏洞 A.send to …...
深度学习学习率优化方法——pytorch中各类warm up策略
warm-up具体原理以及为什么这么做在之前的博客有介绍,这里直接介绍如何直接使用pytorch中的warm-up策略,在pytorch中对于warm-up所有支持的方法都有描述,可以直接阅读1。 深度学习中各类学习率优化方法(AdaGrad/RMSprop/Adam/Warm-UP)原理及其…...
