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" …...
AI开始替人跑任务后,真正决定体验的不是模型,而是向量引擎
AI开始替人跑任务后,真正决定体验的不是模型,而是向量引擎为什么这篇文章值得你现在看 过去一年,很多人聊AI,张口就是哪个模型更强。 有人追Gemini 3.5 Flash。 有人追Qwen新模型。 有人追OpenAI的Responses API和Agent工具链。 也…...
混合精度递归Cholesky分解:算法优化与硬件加速实践
1. 混合精度递归Cholesky分解的技术背景在科学计算领域,对称正定(SPD)线性系统的求解是一个基础而关键的问题。这类问题广泛存在于计算流体动力学、气候建模、金融风险分析等实际应用中。以气候建模为例,全球大气环流模型需要求解的线性系统矩阵规模可达…...
Fortune.js未来路线图:即将推出的功能和改进终极指南
Fortune.js未来路线图:即将推出的功能和改进终极指南 【免费下载链接】fortune Non-native graph database abstraction layer for Node.js and web browsers. 项目地址: https://gitcode.com/gh_mirrors/fo/fortune Fortune.js作为一个创新的非原生图数据库…...
3步解锁GTA V无限可能:ScriptHookV脚本注入核心技术深度解析
3步解锁GTA V无限可能:ScriptHookV脚本注入核心技术深度解析 【免费下载链接】ScriptHookV An open source hook into GTAV for loading offline mods 项目地址: https://gitcode.com/gh_mirrors/sc/ScriptHookV 想象一下,你正在玩《侠盗猎车手V》…...
大模型MoE架构中活跃参数量的真相与工程实践
1. 项目概述:大模型参数规模与实际激活机制的真相你可能在各种技术社区、新闻标题甚至朋友圈里反复看到这句话:“GPT-4拥有1.8万亿参数,但每次只调用其中2%”。它听起来既震撼又神秘——就像说一座藏书一亿册的超级图书馆,每次你问…...
百度网盘macOS插件架构解析:基于运行时方法交换的SVIP权限模拟技术深度剖析
百度网盘macOS插件架构解析:基于运行时方法交换的SVIP权限模拟技术深度剖析 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 百度网盘macOS加…...
FastJson2与Spring 6整合配置详解:别再只引入一个fastjson2依赖了
FastJson2与Spring 6整合配置详解:模块化设计的正确打开方式 在Java生态中,JSON处理库的选型一直是开发者关注的焦点。FastJson以其出色的性能表现赢得了大量用户的青睐,但随着FastJson2的发布,许多开发者发现简单的依赖升级并不能…...
如何用OpCore Simplify快速配置OpenCore:面向新手的完整指南
如何用OpCore Simplify快速配置OpenCore:面向新手的完整指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为黑苹果复杂的OpenCore配…...
如何用Shutter Encoder解决专业视频工作流中的格式兼容性问题:5步完整指南
如何用Shutter Encoder解决专业视频工作流中的格式兼容性问题:5步完整指南 【免费下载链接】shutter-encoder A professional video compression tool accessible to all, mostly based on FFmpeg. 项目地址: https://gitcode.com/gh_mirrors/sh/shutter-encoder …...
别再乱关防火墙了!ESXi 7.0/8.0 安全开放自定义端口的保姆级教程(附配置文件详解)
ESXi防火墙精细化管控:安全开放自定义端口的工程实践 在虚拟化环境中,ESXi主机作为承载业务系统的核心基础设施,其网络安全防护的重要性不言而喻。许多管理员在面对需要开放非标准端口的场景时,往往陷入两难:要么粗暴关…...
