keepalive和nginx高可用集群
keepalived 和 nginx 高可用集群搭建
主备模式

zyj86主机和zyj87主机安装nginx和keepalived
yum install nginx keepalived -y
systemctl enable --now nginx.service keepalived.service
主调度器配置
编辑zyj86主机(主)配置文件
vi /etc/keepalived/keepalived.conf
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.3.86smtp_connect_timeout 30router_id zyj86 # 访问到主机,本机的hostname,需要修改
}vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh" # 检测脚本位置interval 2 #(检测脚本执行的间隔)weight 2 # 权重
}vrrp_instance VI_1 {state MASTER # 备份服务器上将 MASTER 改为 BACKUP,需要修改interface ens160 #网卡名字,使用ifconfig查看,需要修改virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90advert_int 1 # 每隔1秒发送心跳authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.3.188 #VRRP虚拟地址,也可以绑定多个虚拟ip}track_script {chk_nginx}}
重启keepalived
systemctl restart keepalived.service
从调度器配置
编辑zyj87主机(从)配置文件
vi /etc/keepalived/keepalived.conf
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.3.87smtp_connect_timeout 30router_id zyj87 # 访问到主机,本机的hostname,需要修改
}vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh" # 检测脚本位置interval 2 #(检测脚本执行的间隔)weight 2 # 权重
}vrrp_instance VI_1 {state BACKUP # 备份服务器上将 MASTER 改为 BACKUP,需要修改interface ens160 #网卡名字,使用ifconfig查看,需要修改virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同priority 99 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90advert_int 1 # 每隔1秒发送心跳authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.3.188 #VRRP虚拟地址,也可以绑定多个虚拟ip}track_script {chk_nginx}}
重启keepalived
systemctl restart keepalived.service
zyj86 zyj87主机编写Nginx状态检测脚本
vi /etc/keepalived/nginx_check.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then# 这里需要替换成自己的nginx安装路径# 尝试重新启动nginxsystemctl restart nginx# 睡眠2秒sleep 2if [ $A -eq 0 ];then#启动失败,将keepalived服务杀死。killall keepalivedfi
fi
给脚本添加执行权限
chmod +x /etc/keepalived/nginx_check.sh
修改zyj86和zyj87主机的nginx配置文件
vi /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;events {worker_connections 1024;
}http {log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 2048;include /etc/nginx/mime.types;default_type application/octet-stream;# Load modular configuration files from the /etc/nginx/conf.d directory.# See http://nginx.org/en/docs/ngx_core_module.html#include# for more information.include /etc/nginx/conf.d/*.conf;#访问主机列表upstream myserver {server 192.168.3.88 weight=1;server 192.168.3.89 weight=1;}server {listen 80 default_server;listen [::]:80 default_server;server_name _;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location / {proxy_pass http://myserver;}}}
重启nginx
systemctl restart nginx
后台服务器配置
yum install httpd -y
zyj88主机
echo 88 > /var/www/html/index.html
zyj89主机
echo 89 > /var/www/html/index.html
启动服务
systemctl enable --now httpd
访问测试:

当其中一台调度器宕机后依旧可以访问
互为主备模式

zyj86主机和zyj87主机安装nginx和keepalived
yum install nginx keepalived -y
systemctl enable --now nginx.service keepalived.service
第一台调度器配置
编辑zyj86主机配置文件
vi /etc/keepalived/keepalived.conf
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.3.86smtp_connect_timeout 30router_id zyj86 # 访问到主机,本机的hostname,需要修改
}vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh" # 检测脚本位置interval 2 #(检测脚本执行的间隔)weight 2 # 权重
}vrrp_instance VI_1 {state MASTER # 备份服务器上将 MASTER 改为 BACKUP,需要修改interface ens160 #网卡名字,使用ifconfig查看,需要修改virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90advert_int 1 # 每隔1秒发送心跳authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.3.188 # VRRP虚拟地址,也可以绑定多个虚拟ip}track_script {chk_nginx}
}vrrp_instance VI_2 {state BACKUP # 备份服务器上将 MASTER 改为 BACKUP,需要修改interface ens160 #网卡名字,使用ifconfig查看,需要修改virtual_router_id 52 # 主、备机的 virtual_router_id 必须相同priority 79 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90advert_int 1 # 每隔1秒发送心跳authentication {auth_type PASSauth_pass 2222}virtual_ipaddress {192.168.3.199 #VRRP虚拟地址,也可以绑定多个虚拟ip}track_script {chk_nginx}
}
重启keepalived
systemctl restart keepalived.service
第二台调度器配置
编辑zyj87主机配置文件
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.3.86smtp_connect_timeout 30router_id zyj86 # 访问到主机,本机的hostname,需要修改
}vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh" # 检测脚本位置interval 2 #(检测脚本执行的间隔)weight 2 # 权重
}vrrp_instance VI_1 {state BACKUP # 备份服务器上将 MASTER 改为 BACKUP,需要修改interface ens160 #网卡名字,使用ifconfig查看,需要修改virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同priority 99 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90advert_int 1 # 每隔1秒发送心跳authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.3.188 # VRRP虚拟地址,也可以绑定多个虚拟ip}track_script {chk_nginx}
}vrrp_instance VI_2 {state MASTER # 备份服务器上将 MASTER 改为 BACKUP,需要修改interface ens160 #网卡名字,使用ifconfig查看,需要修改virtual_router_id 52 # 主、备机的 virtual_router_id 必须相同priority 80 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90advert_int 1 # 每隔1秒发送心跳authentication {auth_type PASSauth_pass 2222}virtual_ipaddress {192.168.3.199 #VRRP虚拟地址,也可以绑定多个虚拟ip}track_script {chk_nginx}
}
重启keepalived
systemctl restart keepalived.service
zyj86 zyj87主机编写Nginx状态检测脚本
vi /etc/keepalived/nginx_check.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then# 这里需要替换成自己的nginx安装路径# 尝试重新启动nginxsystemctl restart nginx# 睡眠2秒sleep 2if [ $A -eq 0 ];then#启动失败,将keepalived服务杀死。killall keepalivedfi
fi
给脚本添加执行权限
chmod +x /etc/keepalived/nginx_check.sh
修改zyj86和zyj87主机的nginx配置文件
vi /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;events {worker_connections 1024;
}http {log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 2048;include /etc/nginx/mime.types;default_type application/octet-stream;# Load modular configuration files from the /etc/nginx/conf.d directory.# See http://nginx.org/en/docs/ngx_core_module.html#include# for more information.include /etc/nginx/conf.d/*.conf;#访问主机列表upstream myserver {server 192.168.3.88 weight=1;server 192.168.3.89 weight=1;}server {listen 80 default_server;listen [::]:80 default_server;server_name _;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location / {proxy_pass http://myserver;}}}
重启nginx
systemctl restart nginx
后台服务器配置
yum install httpd -y
zyj88主机
echo 88 > /var/www/html/index.html
zyj89主机
echo 89 > /var/www/html/index.html
启动服务
systemctl enable --now httpd
访问测试:

当其中一台调度器宕机后依旧可以访问
相关文章:
keepalive和nginx高可用集群
keepalived 和 nginx 高可用集群搭建 主备模式 zyj86主机和zyj87主机安装nginx和keepalived yum install nginx keepalived -y systemctl enable --now nginx.service keepalived.service主调度器配置 编辑zyj86主机(主)配置文件 vi /etc/keepalived…...
二分查找题总结
二分查找题总结 hot100搜索插入位置搜索二维矩阵在排序数组中查找元素的第一个和最后一个位置搜索旋转排序数组寻找旋转排序数组中的最小值寻找两个正序数组的中位数 hot100 搜索插入位置 题目链接: 35.搜索插入位置 代码: class Solution {public in…...
仕考网:公务员面试流程介绍
通知进面信息——资格审查——面试签到——抽签候考 面试形式: 面试分为结构化和无领导小组两种形式 1.在结构化面试中,当轮到某位考生时,引导员将在候考室宣布其编号,随后考生跟随引导人员前往考场入口。考生在开始考试时需回…...
(十五)SpringCloudAlibaba-Sentinel持久化到Nacos
前言 在前面我们已经将Sentinel配置的规则持久化到系统的文件中。本章节我们将Sentinel持久化到Nacos中; 传送门(Sentinel数据持久化到文件)https://blog.csdn.net/weixin_45876411/article/details/140742963 默认情况下 Sentinel 只能接收到 Nacos 推送的消息,但…...
GitHub图床
GitHub图床 文章目录 GitHub图床图床介绍Github访问GitHub手动修改hostsgithub520 加速器创建账户创建仓库创建token PicGoTypora 图床介绍 图床 存放图片的地方 为什么设置图床呢 在我认识图床之前, 有一个问题 [^放在typora上面的图片, 其实是一个链接, 并且将图片存放在本地…...
记一次高版本view-design的组件迁移到自身项目的低版本
背景 npm i -S view-design当前老项目使用view-design这个组件库,但是当我们去官网查看该组件库最新版本,竟然发现没有博主想用的image/ImagePreivew这两个基础组件 说实话,有点离谱了哈!! 自己造轮子? …...
QT运行ROS工程
文章目录 使用QT创建ROS工程项目配置修改cmake环境配置运行设置 运行 使用QT创建ROS工程 工程名字和路径 下一步(直接选择默认选项就可以)->完成 完成之后 是这样的 接下来在工作空间里面创建功能包 鼠标选中src点击右键->添加新文件 name::功能包的名字…...
电脑技巧:如何在Win11电脑上调整设置,让屏幕更加护眼?
目录 一、调整屏幕亮度 二、启用夜间模式 三、调整色彩设置 四、使用第三方护眼软件 五、保持良好的用眼习惯 总结 随着长时间使用电脑的人越来越多,护眼问题也变得越来越重要。Win11作为更新的操作系统,提供了更多的设置选项来帮助我们保护眼睛。本文将详细介绍如何在…...
【数据结构】排序算法篇二
【数据结构】排序算法篇二 1. 快速排序(hoare版本)(1)基本思想:(2)动态图解:(3)代码实现:(4)特性总结: 2. 快速…...
python进阶篇-day09-数据结构与算法(非线性结构与排序算法)
非线性结构(树状结构) 特点: 每个节点都可以有n个子节点(后继节点) 和 n个父节点(前驱节点) 代表: 树, 图...... 概述 属于数据结构之 非线性结构的一种, 父节点可以有多个子节点(后续节点) 特点 有且只有1个根节点 每个节点都可以有1个父节点及任意个子节点, 前提: 根节点除…...
线性代数基础
Base 对于矩阵 A,对齐做 SVD 分解,即 U Σ V s v d ( A ) U\Sigma V svd(A) UΣVsvd(A). 其中 U 为 A A T AA^T AAT的特征向量,V 为 A T A A^TA ATA的特征向量。 Σ \Sigma Σ 的对角元素为降序排序的特征值。显然,U、V矩阵…...
LCR 021
题目:LCR 021 解法一:计算链表长度 遍历两次,第一次获取链表长度 L(包括虚拟节点),第二次遍历到第 L-n 个节点(从虚拟节点遍历) public ListNode removeNthFromEnd(ListNode head, …...
【阿雄不会写代码】全国职业院校技能大赛GZ036第四套
也不说那么多了,要用到这篇博客,肯定也知道他是干嘛的,给博主点点关注点点赞!!!这样博主才能更新更多免费的教程,不然就直接丢付费专栏里了,需要相关文件请私聊...
Vue组件:使用$emit()方法监听子组件事件
1、监听自定义事件 父组件通过使用 Prop 为子组件传递数据,但如果子组件要把数据传递回去,就需要使用自定义事件来实现。父组件可以通过 v-on 指令(简写形式“”)监听子组件实例的自定义事件,而子组件可以通过调用内建…...
数据分析-埋点
1、数据埋点的定义 针对特定用户行为或事件进行捕获、处理何发送的相关技术及其实施过程。 2、数据埋点的原理 埋点是数据采集的重要方式。通过在页面上植入代码,监控用户行为(例:页面加载、按钮点击等)。用户一旦触发了该事件,就会根据埋点信息将相关数…...
【文心智能体】通过工作流使用知识库来实现信息查询输出,一键查看旅游相关信息,让出行多一份信心
欢迎来到《小5讲堂》 这是《文心智能体平台》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 创建灵感基本配置头像名称和简介人物设定角色与目标思考路…...
服务器监控工具都是监控服务器的哪些性能和指标
服务器监控工具通常用于确保服务器及其相关服务的正常运行。这些工具可以帮助管理员快速识别并解决问题,从而减少停机时间和性能下降的风险。以下是服务器监控工具通常会监控的一些主要内容: 系统健康状态: CPU使用率 内存(RAM&…...
不小心删除丢失了所有短信?如何在 iPhone 上查找和恢复误删除的短信
不小心删除了一条短信,或者丢失了所有短信?希望还未破灭,下面介绍如何在 iPhone 上查找和恢复已删除的短信。 短信通常都是非正式和无关紧要的,但短信中可能包含非常重要的信息。因此,如果您删除了一些短信以清理 iPh…...
【skyvern 快速上手】一句话让AI帮你实现爬虫+自动化
目录 skyvern介绍主要特点工作流程 部署(重点介绍源码部署)源码部署docker快速部署 运行(基于源码)后端前端 快速使用示例总结 skyvern介绍 Skyvern 是一款利用大语言模型(LLM)和计算机视觉技术来自动化浏…...
【C++ Primer Plus习题】14.1
大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include "wine.h" …...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
