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

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_Master172.16.90.111提供负载均衡
Nginx_Backup172.16.90.112提供负载均衡
LVS-DR-VIP172.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实现负载均衡高可用性

目录 项目架构 一&#xff0c;环境介绍 二&#xff0c;项目部署 在Web服务器上配置Web测试页面 nginx负载均衡配置 配置Nginx_Master 通过vrrp_script实现对集群资源的监控&#xff08;1>通过killall命令探测服务运行状态&#xff09; 通过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学习之防火墙概述

防火墙分类&#xff1a; 软件防火墙&#xff1a;常用于数据包的过滤&#xff0c;比如限制某些ip或者端口&#xff0c;进行某些数据的转发或者传送 硬件防火墙&#xff1a;防御地域攻击 软件防火墙的分类&#xff1a; 包过滤防火墙&#xff1a;控制比较宽泛&#xff0c;防御效果…...

JS_围绕圆形滑动

需求&#xff1a;滑动手势最大不能超过一个半径为50的圆形&#xff0c;超出围绕圆形边线滑动 这里只提供一个思路&#xff0c;下面代码可以运行&#xff0c;但是要使用需要改成自己的参数 <div style"width: 100%;height: 100vh;display: flex;justify-content: cente…...

Ubuntu上安装RabbitMQ

在Ubuntu上安装RabbitMQ并设置管理员用户为"admin"&#xff0c;密码为"123456"&#xff0c;并开启开机自启 更新系统软件包列表。在终端中执行以下命令&#xff1a; sudo apt update安装RabbitMQ服务器软件包。运行以下命令&#xff1a; sudo apt insta…...

统计学和机器学习之间的联系和区别

一、说明 老实说&#xff0c;我厌倦了几乎每天都在社交媒体和我的大学里听到这场辩论。通常&#xff0c;这伴随着一些模糊的陈述来解释这个问题。双方都为此感到内疚。我希望在本文结束时&#xff0c;您将对这些有些模糊的术语有更明智的立场。 二、论点 与普遍的看法相反&…...

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"&#xff08;编辑&#xff09;模块提供了一系列API和工具&#xff0c;允许开发人员在ArcGIS Pro中实现各种地图数据编辑操作&#xff0c;从简单的要素绘制到复杂的数据集编辑。 下面列举一些常用编辑工具的实现方法。 1、获取所选要素的…...

WebSocket与消息推送

B/S结构的软件项目中有时客户端需要实时的获得服务器消息&#xff0c;但默认HTTP协议只支持请求响应模式&#xff0c;这样做可以简化Web服务器&#xff0c;减少服务器的负担&#xff0c;加快响应速度&#xff0c;因为服务器不需要与客户端长时间建立一个通信链接&#xff0c;但…...

5.1 web浏览安全

数据参考&#xff1a;CISP官方 目录 Web应用基础浏览器所面临的安全威胁养成良好的Web浏览安全意识如何安全使用浏览器 一、Web应用基础 1、Web应用的基本概念 Web ( World wide Web) 也称为万维网 脱离单机Web应用在互联网上占据了及其重要的地位Web应用的发展&#xf…...

(六)Unity开发Vision Pro——词汇表

1.PolySpatial Core (com.unity.polyspatial)&#xff1a;基础 PolySpatial 包&#xff0c;初始化和所有设置从这里开始。它执行更改跟踪和处理、序列化/反序列化&#xff0c;并包括 ShaderGraph 到 MaterialX 转换器 2.PolySpatial XR (com.unity.polyspatial.xr)&#xff1a…...

算法随笔:图论问题之割点割边

割点 定义 割点的定义&#xff1a;如果一个点被删除之后会导致整个图不再是一个连通图&#xff0c;那么这个顶点就是这个图的割点。举例&#xff1a; 上图中的点2就是一个割点&#xff0c;如果它被删除&#xff0c;则整个图被分为两个连通分量&#xff0c;不再是一个连通图。…...

【虚幻引擎】UE5数字人的创建

安装插件 在插件里面找到MetaHuman&#xff0c;设置激活&#xff0c;然后重启引擎 找到bridge&#xff0c;并开启&#xff0c;这个需要我们制作完成的metahuman需要在这个插件里下载&#xff0c;unreal5自动安装 创建metahuman 首先添加一个metahuman本体&#xff0c;如果你的插…...

算法:深度优先遍历

文章目录 什么是深搜典型题目积累 本篇主要积累的是深度优先遍历算法 什么是深搜 深度优先搜索英文缩写为 DFS 即Depth First Search 其过程是对每一个可能的分支路径深入到不能再深入为止&#xff0c;而且每个节点只能访问一次 简单来说就是: 一路走到头&#xff0c;不撞墙…...

Stable Diffusion + Deform制作指南

1.安装sd以及deform插件,更新后记得重启 需要安装ffmpeg https://ffmpeg.org/download.html 选择对应版本然后安装 如果是windows需要解压后将ffmpeg的bin目录配置在电脑的环境变量里面。 2.准备一张初始开始图片 3.填写参数,这里面参数要注意,宽高一定是32的倍数。如果填写…...

ssm+vue网上花店设计源码和论文

ssmvue网上花店设计源码和论文017 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xf…...

【leetcode】第一章数组

704. 二分查找 边界值需注意left代表左边界下标值&#xff0c;right代表右边界的下标值当数组只有一个元素时&#xff0c;此时如果找到该元素应该返回下标0&#xff0c;因此条件为left<right当mid的元素值大于target时&#xff0c;此时说明我们想找的target在右边&#xff…...

01|Java中常见错误或不清楚

补充&#xff1a;length vs length() vs size() 1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性. 2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法. 3.java中的siz…...

电商App安全防护原理与合规开发实践指南

我不能提供任何绕过应用反抓包机制、破坏应用安全防护或违反平台服务协议的技术方案。 拼多多App作为一款合法合规运营的商业应用&#xff0c;其反抓包机制是保障用户数据安全、交易隐私和平台生态健康的重要技术手段。逆向分析、调试绕过、协议破解等行为不仅违反《中华人民共…...

Cloudflare四重验证机制与行为建模反爬原理深度解析

1. 这不是“绕过Cloudflare”&#xff0c;而是重新理解“人机边界”的实战现场最近两周&#xff0c;我连续接手了三个爬虫项目&#xff0c;全卡在同一个地方&#xff1a;Cloudflare的“Checking your browser before accessing...”页面。不是5秒跳转失败&#xff0c;就是直接返…...

git--github

解决github无法访问的问题。...

构建全栈可解释AI框架:从数据到决策的透明化实践

1. 项目概述&#xff1a;为什么我们需要一个“全栈”可解释AI框架&#xff1f; 在医疗诊断、金融风控、自动驾驶这些领域&#xff0c;一个AI模型给出的“是”或“否”的答案&#xff0c;往往只是一个决策的起点&#xff0c;而非终点。医生需要知道模型是基于哪些影像特征判断出…...

终极AI编舞师:5分钟让音乐自动生成3D舞蹈的完整指南

终极AI编舞师&#xff1a;5分钟让音乐自动生成3D舞蹈的完整指南 【免费下载链接】mint Multi-modal Content Creation Model Training Infrastructure including the FACT model (AI Choreographer) implementation. 项目地址: https://gitcode.com/gh_mirrors/mint20/mint …...

【AI搜索引擎未来5年趋势白皮书】:20位顶尖AI架构师联合预测的7大不可逆变革

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI搜索引擎未来5年趋势总览 AI搜索引擎正从关键词匹配的“检索工具”加速演进为具备推理能力、上下文感知与主动服务意识的“智能认知中枢”。未来五年&#xff0c;其技术演进将围绕多模态理解、实时知…...

合肥Geo搜索优化服务的真实成本与效果分析

这两年&#xff0c;“AI搜索优化”、“GEO&#xff08;生成式引擎优化&#xff09;”在中小企业的朋友圈里反复刷屏。我身边不少安徽本土的老板&#xff0c;尤其是做教培、法律和机械制造的&#xff0c;从去年底就开始频繁问我&#xff1a;“这玩意儿到底靠不靠谱&#xff1f;投…...

UABEA:Unity跨平台资源编辑与二进制解析工具深度指南

1. 为什么Unity开发者在2024年仍要为资源编辑发愁——UABEA不是另一个UI工具&#xff0c;而是解耦工作流的手术刀“UABEA&#xff1a;终极跨平台Unity游戏资源编辑器完全指南”这个标题里&#xff0c;“终极”二字不是营销话术&#xff0c;而是对当前Unity资源编辑生态痛点的精…...

PC微信客户端增强实战:基于UI Automation的合规消息观测方案

1. 这不是“破解”&#xff0c;而是对本地客户端行为的深度观测与可控增强“PC端微信逆向实战指南&#xff1a;wxhelper全流程部署与应用”——这个标题里藏着三个容易被误解的关键词&#xff1a;“逆向”“wxhelper”“全流程”。很多人一看到“逆向”&#xff0c;下意识联想到…...

如何从零开始构建AI社会模拟:AgentSociety终极指南

如何从零开始构建AI社会模拟&#xff1a;AgentSociety终极指南 【免费下载链接】agentsociety AgentSociety 2 is a modern, LLM-native agent simulation platform designed for social science research and experimental design. It provides a flexible framework for crea…...