nginx+keepalived健康检查案例详解(解决nginx出现故障却不能快速切换到备份服务器的问题)

news2025/5/22 3:03:35

文章目录

    • 简介
    • 配置过程
      • 前置环境请看
      • 创建健康检查脚本
      • 结果测试


简介

在我们通过nginx+keepalived实现高可用后,会发现nginx出现故障的时候keepalived并不会将虚拟ip切换到备份服务器上其原理就是nginx和keepalived是两个独立的服务,Nginx的故障状态不会触发Keepalived本身的故障转移机制。
所以我们可以通过配置健康检查机制来解决这个问题

配置过程

前置环境请看

链接: keepalived+nginx实现高可用的案例详解(主从模式)
lvs和nginx的配置都在前置环境里

主机名ip服务虚拟ip
ngx1192.168.10.11nginx+keepalived192.168.10.111
ngx2192.168.10.12nginx+keepalived192.168.10.111

创建健康检查脚本

vim /etc/keepalived/chk_nginx_port.sh
#!/bin/bash
nginx_count=$(ps -C nginx --no-header | wc -l)
if [ $nginx_count -eq 0 ]; then
    echo "Nginx is not running"
	systemctl start nginx
	nginx_count=$(ps -C nginx --no-header | wc -l)
	if [ $nginx_count -eq 0 ]; then
		systemctl stop keepalived
    fi
fi

简单解释
这个脚本的作用是监测 Nginx 服务的运行状态,并在其未运行时尝试启动它。如果 Nginx 启动失败,脚本会停止 Keepalived 服务。

赋予这个脚本执行权限

chmod +x /etc/keepalived/chk_nginx_port.sh

更改keepalived配置文件

vim /etc/keepalived/keepalived.conf
global_defs {
   router_id LVS_DEVEL1
}

vrrp_script chk_nginx_port {
  script "/etc/keepalived/chk_nginx_port.sh"
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.111
    }
    track_script {
        chk_nginx_port
}
}

重启keepalived

systemctl restart keepalived

这个是主从的配置,所以从端不需要配置健康检查
如果是双主配置,另一端同理

结果测试

ngx1停止nginx服务

vim /etc/nginx/nginx.conf

随便添几个字母,让nginx起不来就好
在这里插入图片描述
重启nginx

systemctl restart nginx

可以看到会报错
在这里插入图片描述
查看ip

ip add

可以发现虚拟ip已经转移
在这里插入图片描述
到ngx2查看ip

ip add

可以看到转移过来的虚拟ip
在这里插入图片描述

访问虚拟ip
也是ngx2的web页面
在这里插入图片描述

其他服务同理,更改脚本内容即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2163570.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中国留学人员联谊会东南亚和南亚分会新会员入会仪式暨座谈会举行

中国留学人员联谊会东南亚和南亚分会新会员入会颁证仪式 暨学习贯彻党的二十届三中全会精神座谈会在京举行 2024月9月22日下午,欧美同学会(中国留学人员联谊会)东南亚和南亚分会新会员入会颁证仪式暨留学人员学习贯彻党的二十届三中全会精神…

AI做毛绒萌宠,1个爆款猛涨1.5万粉(内附教程)

用AI做自媒体博主,涨粉真是轻而易举呀~ 通过AI萌宠视频快速吸引粉丝,今天给大家深入解析一个成功案例——通过可爱萌宠视频,迅速积累3.2W粉丝,获赞与收藏14.1万,单条视频最高点赞更是高达4.7万,基本每条视…

吐血整理 ChatGPT 3.5/4.0 新手使用手册~ 【亲测好用】

以前我也是通过官网使用,但是经常被封号,就非常不方便,后来有朋友推荐国内工具,用了一阵之后,发现:稳定方便,用着也挺好的。 最新的 GPT-4o、4o mini,可搭配使用~ 1、 最新模型科普&…

智能养殖场人机交互检测系统源码分享

智能养殖场人机交互检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Co…

Springboot原理之bean的依赖功能、自动配置

1. Bean管理 Spring 当中提供的注解 Component 以及它的三个衍 生注解( Controller 、 Service 、 Repository )来声明 IOC 容器中的 bean 对象,同时我们也学 习了如何为应用程序注入运行时所需要依赖的 bean 对象,也就是依赖注…

[000-002-01].第29节:MySQL数据库缓冲池

1、什么是数据缓冲池: 1.InnoDB 存储引擎是以页为单位来管理存储空间的,我们进行的增删改查操作其实本质上都是在访问页面(包括读页面、写页面、创建新页面等操作),而磁盘 I/O 需要消耗的时间很多,而在内存…

电脑如何录屏?无水印、高清晰度电脑录屏教程

现如今,电脑录屏已成为我们工作、学习和娱乐中不可或缺的一部分,日常可以用来录制教学视频、游戏直播、会议记录等等,但有些朋友可能还不知道怎么高清录制视频,今天就给大家带来了几个简单又实用的方法,需要的朋友快码…

Jetpack02-LiveData 数据驱动UI更新(类似EventBus)

前提 LiveData使用了Lifecycle的生命周期,阅读本文前,请先了解Lifecycle源码。 简介 LiveData本质是数据类型,当改变数据的时候,会通知观察者,且只在界面可见的时候才会通知观察者。只能在主线程注册观察者&#xf…

CaLM 因果推理评测体系:如何让大模型更贴近人类认知水平?

CaLM 是什么 CaLM(Causal Evaluation of Language Models,以下简称“CaLM”)是上海人工智能实验室联合同济大学、上海交通大学、北京大学及商汤科技发布首个大模型因果推理开放评测体系及开放平台。首次从因果推理角度提出评估框架&#xff…

面试经典 150 题:力扣88. 合并两个有序数组

每周一道算法题启动 题目 【题目链接】 【解法一】合并后排序 排序后的数组自动省略0的数字&#xff0c;又学到了 class Solution { public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {//合并两个数组后排序for(int i0; i<…

什么人需要远程访问?如何用节点小宝实现远程访问?

随着工作任务日益繁重&#xff0c;远程控制/远程访问成为越来越多人用来提高工作效率的一种方式。远程访问&#xff08;Remote access&#xff09;用来为远程办公人员、外出人员&#xff0c;以及管理多个部门办公室服务器的系统管理员提供远程网络连接。 如何开启远程访问&…

C# winforms 使用菜单和右键菜单

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

C语言课程设计题目一:职工信息管理系统设计

文章目录 题目一&#xff1a;职工信息管理系统设计代码块employeeManagement.hemployeeManage.ctest.c 调试验证录入信息&#xff0c;并浏览验证职工号唯一保存职工信息&#xff0c;加载职工信息按职工号进行查询根据id删除职工修改职工信息 题目一&#xff1a;职工信息管理系统…

国家首次向全社会提供永久基本农田查询服务

自然资源部永久基本农田查询平台正式上线。 据悉&#xff0c;这是国家首次向全社会提供永久基本农田查询服务。 如何查询永久基本农田信息 永久基本农田查询平台正式上线&#xff0c;是对永久基本农田依法实施特殊保护的重要举措&#xff0c;是对各地已开展的永久基本农田公…

分割掩码标注转YOLO多边形标注

Ultralytics 团队付出了巨大的努力&#xff0c;使创建自定义 YOLO 模型变得非常容易。但是&#xff0c;处理大型数据集仍然很痛苦。训练 yolo 分割模型需要数据集具有其特定格式&#xff0c;这可能与你从大型数据集中获得的格式不完全相同。如果你想使用巨大的 OpenImagesV7 作…

MIPI包分析

如下图所示&#xff0c;长方形圈出来的是数据包的规定区域&#xff0c;注意SOT不在packet的定义区间。 分析可知&#xff0c;第一byte就知道包的类型&#xff0c;姑且记作VC2DT6。DT6就是6bits的data type。显而易见总共定义了64中类型&#xff0c;规范中定义了一些&#xff0…

【C++掌中宝】C++ 中的空指针救世主——nullptr

文章目录 1. 什么是 NULL&#xff1f;2. NULL 在 C 和 C 中的区别3. C11 引入 nullptr 的原因4. nullptr 与 NULL 的区别5. nullptr 的应用场景6. 模拟 nullptr 的实现7. 总结结语 1. 什么是 NULL&#xff1f; 在 C 和 C 编程中&#xff0c;NULL 常用于表示空指针&#xff0c;…

展示中国客车硬实力!苏州金龙海格纯电客车惊艳汉诺威商用车展

德国当地时间2024年9月22日&#xff0c;IAA汉诺威商用车展在德国汉诺威展览中心圆满落幕。本届展会&#xff0c;苏州金龙海格客车携新能源公交明星产品Azure7、斯堪尼亚海格高端巴士Fencer F1 Integral EV纯电车型重磅亮相&#xff0c;获得了众多参会嘉宾的好评和关注。来自欧洲…

【活动】人工智能时代,程序员如何保持核心竞争力?需要掌握哪些技能?

人工智能时代&#xff0c;程序员如何保持核心竞争力&#xff1f; 随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;程序员面临着前所未有的挑战和机遇。AI不仅改变了软件开发的方式&#xff0c;也重新定义了程序员的角色。在这种背景下&#xff0c;如何保持…

人工智能助力阿尔茨海默症治疗:微软与上海精神卫生中心的新研究

最近&#xff0c;微软研究院与上海市精神卫生中心合作&#xff0c;基于微软 Azure OpenAI 服务中的多模态大模型&#xff0c;开发了一种名为“忆我”&#xff08;ReMe&#xff09;的个性化认知训练框架。这一创新项目旨在通过数字化手段扩展自动化认知训练的范围&#xff0c;为…