Keepalived配置Nginx自动重启,实现不间断服务

2023-11-17

续接上篇https://blog.csdn.net/qq_44299529/article/details/122987503

上回说到我们应该让nginx不间断的工作,只要主节点nginx没问题,就可以重启。除非主节点nginx出错,才切换成备用节点的nginx。那么现在就让我们来实现。

步骤:

1、进入到keepalived的配置文件,新建 check_nginx_alive_or_not.sh 脚本文件

2、check_nginx_alive_or_not.sh 脚本文件内容如下,根据注释,自行修改

#!/bin/bash

A=`ps -C nginx --no-header |wc -l`
#判断nginx是否宕机,如果宕机了,尝试重启
if [ $A -eq 0 ];then
        # nginx的启动目录
        /usr/local/nginx/sbin/nginx
        # 等待3秒再次检查nginx,如果没有重启成功,则停止keepalived,使其启动备用机
        sleep 3
        if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
                kill keepalived
        fi
fi

3、给予文件可执行权限

chmod +x check_nginx_alive_or_not.sh

 4、进入主配置文件keepalived.conf,设置上述执行脚本文件check_nginx_alive_or_not.sh自动执行。       

vim keepalived.conf 

(1)先在里面添加一段每隔2秒执行脚本文件check_nginx_alive_or_not.sh的脚本

vrrp_script check_nginx_alive{
        script "/etc/keepalived/check_nginx_alive_or_not.sh"
        interval 2 #每隔2秒运行上一行脚本
        weight 10 #如果脚本运行成功,则升级权重 +10
        # weight -10 #如果脚本运行失败,则权重 -10
}

(2)在节点中调用上方写好的脚本check_nginx_alive

#调用上方写好的脚本check_nginx_alive
    track_script{
        check_nginx_alive  #追踪nginx脚本
    }

 :wq 保存,退出。

5、修改了keepalived的配置文件,需要重启。

为测试效果,在重启之前,先把nginx停了

 访问虚拟ip:192.168.217.2

 重启keepalived。 systemctl restart keepalived

(注:我这里已经把keepalived注册为系统服务,所以可以这样重启,如果不清楚的可以查看上一篇看最后的扩展。如果不想做也没关系,手动kill它的进程再重启) 

继续访问虚拟ip,成功!!!

 当然你也可以自己测试,不断输入 ./nginx -s stop 把nginx关闭,看是否能正常访问。

 嘿嘿,是不是不管怎么杀死nginx,都可以访问成功了呢~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Keepalived配置Nginx自动重启,实现不间断服务 的相关文章

  • Nginx no-www 到 www 以及 www 到 no-www

    我在用按照教程在 Rackspace 云上安装 nginx http www howtoforge com running phpmyadmin on nginx lemp on debian squeeze ubuntu 11 04并在网
  • X-FRAME-OPTIONS: DENY 通过 nginx 来自 Django 站点在哪里?

    我的 Django 网站使用django summernote https github com summernote django summernote在 iframe 中 并抛出此错误 多个具有冲突值的 X Frame Options
  • 使用 Clapprjs 在网页上流式传输 .m3u8

    我使用 nginx rtmp 将 rtmp 转换为 hls 并使用 Clappr 在网页中进行流式传输 但 Clappr 采用旧的 ts 段 导致 404 错误 因为它在服务器上被删除 如何解决这个问题 抱歉 这是我第一次使用 nginx
  • nginx 服务器中不允许方法 405 错误

    我们的反应应用程序在我们的本地机器上正常工作 但我们将其延迟到更高的环境中 它不起作用 它发送405 Method not allowed error 页面正在加载 每当我们要求时submit form这个问题来了 下面是我的nginx c
  • 如何在Python中在后台运行长时间运行的作业

    我有一个运行长时间运行的作业 大约几个小时 的网络服务 我正在使用 Flask Gunicorn 和 nginx 来开发它 我想做的是让需要很长时间才能完成的路线 调用创建线程的函数 然后 该函数将向路由返回一个 guid 并且路由将返回一
  • Nginx 对 cms 后端的重写规则

    我需要在 nginx 服务器中制定 url 重写规则 服务器块 就像我之前的 apache 服务器一样 这是 htaccess 中的代码 我需要将其实现 转换 到我现有的代码中 RewriteRule A Za z0 9 A Za z0 9
  • 为从 nginx 反向代理转发的请求添加唯一 id

    我们运行 nginx 作为反向代理 将请求转发到运行 Compojure 的 Clojure 应用程序 Compojure 是一个封装 Jetty 的库 为我们的应用程序提供服务 Web 请求的能力 目前 我们捕获 nginx 和 Cloj
  • 使用 client_body_in_file_only 进行 nginx 文件上传

    晚上好 我需要将静态内容上传到 nginx 服务器 1 9 因此上传模块不适用于此版本 我读过这篇文章 Nginx 直接文件上传 无需通过后端传递 https coderwall com p swgfvw nginx direct file
  • uWSGI重启时停机

    每次当我有代码更新时重新启动服务器时 我都会遇到 uwsgi 问题 当我使用 sudo restart account 重新启动 uwsgi 时 停止和启动实例之间存在一个小间隙 导致停机并停止所有当前请求 当我尝试 sudo reload
  • 为什么 nginx 接受 Host 标头与 server_name 不匹配的请求?

    我有一个这样设置的站点 nginx 作为代理服务器 通过 UNIX 套接字代理为 Django 站点提供服务的 Gunicorn 实例的请求 这是我的 nginx 配置 server listen 80 server name api my
  • 如何设置带有子域和反向代理且不使用启用站点的 nginxconf?

    我读到没有必要使用sites enabled https stackoverflow com questions 41303885 nginx do i really need sites available and sites enabl
  • nginx 将虚拟目录重写为文件

    这应该很容易做到 但我的头撞在墙上了 如果我收到对 www mysite com mypath 的请求 我想提供 www mysite com myotherpath thisfile html 的内容 我如何使用 nginx 配置来做到这
  • nginx - 记录 SSL 握手失败

    我正在运行启用了 SSL 的 nginx 服务器 我的协议 密码设置相当安全 我已经在 ssllabs com 上检查过它们 但是 因为这是一个由我无法控制的 http 客户端调用的 Web 服务 所以我担心兼容性 重点是 有没有办法在我的
  • 如果我在不打算升级到 websocket 连接的 HTTP 请求中包含“Upgrade”和“Connection”标头,会发生什么情况?

    我有一个 Nginx 服务器块 用于代理对 node js 服务器的请求 该服务器同时提供 HTTP 内容和 WS websocket 内容 是否可以在不应升级到 Websocket 连接的请求上添加升级标头 即使用 Nginx 代理到服务
  • kubernetes 集群中 django 应用程序的 Nginx 配置

    我在为部署在 kubernetes 中的 django 应用程序创建 nginx 配置文件时遇到困难 Nginx 和 app 是同一集群中的两个独立容器 据我了解 容器可以通过 127 0 0 1 XX 和主机名相互通信 我为此使用 min
  • Nginx - 自定义 404 页面

    Nginx PHP 在 fastCGI 上 对我来说非常有用 当我输入不存在的 PHP 文件的路径时 我不会得到默认的 404 错误页面 任何无效的 html 文件都会出现该错误页面 而只会得到 未指定输入文件 如何自定义此 404 错误页
  • Nginx反向代理返回404

    我的 Nginx 安装并运行 下面是配置 etc nginx nginx conf 我要全部转发 api 到我的 tomcat 服务器 该服务器在同一服务器上的端口 9100 上运行 类型http myhost 9100 api apps有
  • 将应用程序级别用户名/用户 ID 注入 nginx/Apache 日志

    有没有办法将应用程序级别的用户名或 id 在本例中为 django 用户名或 id 注入 Apache 或 ngnix 日志中 请注意 我不是询问 HTTP 身份验证用户名 我目前正在使用一个简短的自定义中间件将此数据添加到响应标头 如下所
  • Docker 中的 NGINX 缓存 IP 地址并提供错误的 Content-Type

    Summary 我想让NGINX 不是NGINX Plus 通过使用变量从DNS名称重新解析IP地址proxy pass 如建议的这篇 Nginx 官方文章 在变量中设置域名 部分 https www nginx com blog dns
  • 抑制 nginx 访问被拒绝错误日志

    我在 nginx 中设置了一些规则来拒绝 IP 访问 这很有效 但对于来自被拒绝 IP 的每个请求 都会记录以下开头的错误 error 7325 0 5761 access forbidden by rule client 有没有办法抑制这

随机推荐

  • 数组实例解析3(杨辉三角)

    根据用户输入的行数n输出对应行数的杨辉三角 具体如下 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 public class ArrayTraingleTest public static void
  • SpringMVC+ElementUl+Vue实现增、删、改、查、多条件搜索、分页功能(前端后端分离)

    使用vue element springMVC来实现增 删 改 查 搜索 分页这几个功能 对于今天老师留的作业小张与小红对话 一班小红同学对二班小张同学说 今天我们班里学了ElementUl组件可是我学没明白 老师还留了个基于vue Ele
  • HTTP和HTTPS协议的区别

    HTTP 超文本传输协议 和HTTPS 安全超文本传输协议 是用于在客户端和服务器之间传输数据的两种不同的协议 它们之间的主要区别如下 1 安全性 HTTP是明文传输协议 数据在传输过程中是以明文形式发送的 容易被第三方窃取和篡改 而HTT
  • cloudstack 创建与删除VM流程

    创建VM时 用户将命令发给ApiServlet处理 通过调度执行DeployVMCmd的execute方法 它的顺序图如下 删除VM调度执行DestroyVMCmd的execute方法 它的流程图如下 在DestroyVMCmd在执行exe
  • springboot修改默认8080端口

    springboot自带的Tomcat端口是8080 有时候项目多了就会引起端口占用的问题 所以我们需要修改其中的端口或者杀掉8080端口 1 修改springboot端口方法 我们只需要在 application properties 中
  • angularjs中state的参数4_AngularJS路由系列(四)- UI-Router的$state服务、路由事件、获取路由参数...

    http www myexception cn javascript 2041588 html ngularJS路由系列 4 UI Router的 state服务 路由事件 获取路由参数 项目文件结构 node modules public
  • 华为OD机试 - 计算误码率(Java)

    题目描述 误码率是最常用的数据通信传输质量指标 它可以理解为 在多少位数据中出现一位差错 移动通信网络中的误码率主要是指比特误码率 其计算公式如下 比特误码率 错误比特数 传输总比特数 为了简单 我们使用字符串来标识通信的信息 一个字符错误
  • python语法:多线程同时处理大量文件

    先写在前面 thread模块 简单来说 cpu的反复横跳而已 要写并发机制 还得用多进程multiprocessing模块 想要快速实现的朋友可以看看我这篇文章 是枝裕和 内 python中的多进程 zhuanlan zhihu com 当
  • conda activate激活虚拟环境时报错:Your shell has not been properly configured to use ‘conda activate‘.的解决方法

    场景 ubuntu系统 问题描述 使用conda activate pytorch想激活虚拟环境pytorch时报错 CommandNotFoundError Your shell has not been properly configu
  • 电脑注册表误删恢复办法:系统文件和设置还原法

    一 起因 为了修改电脑字体一不小心把Control Panel整个注册表给删除了 导致电脑界面变的锯齿 界面变形等各种问题 网上找了许多方法都没成功或者难度较大 最终使用系统恢复还原点将系统变成几个小时前的各种设置 包括浏览器记录 系统设置
  • Ubuntu下FFmpeg的安装方式

    FFmpeg介绍 音视频的广泛应用 直播类 音视频会议 腾讯会议 Zoom 娱乐直播 斗鱼 虎牙 音视频通话 QQ 微信 网络视频 腾讯视频 爱奇艺 短视频 抖音 快手 视频监控 海康 人工智能 人脸识别 智能音箱 概念 FFMPEG全称为
  • 性能测试学习之三--关联

    为什么要做关联 脚本里面这个值是写死的 但服务器传值每次变化 为了保证脚本的正确性 所以要将这个值取到传到脚本里面 所以要将这个值进行关联 关联就是将服务器动态变化的一个值保存为一个动态参数 以便后面需要用的该值的请求来用 一 哪些值或者哪
  • 服务器exsi 5.5安装linux,IBM X3850 X5服务器ESXi 5安装配置全过程——安装

    本系列以一台新上架的IBM X3850 X5服务器为例 从开始做RAID5到VMWARE ESXI5的安装配置进行全程演示 希望对你有些帮助 一 服务器RAID5 启动服务器 直到出现如下界面时 按CTRL H键进入配置阵列界面 点击 St
  • pytorch-geometric笔记

    这篇博客是我学习pytorch geometric 正文将以PyG代替 时做的笔记 有错误的地方在所难免 欢迎指正 非常感谢 参考pytorch geometric官网 1 图数据处理 1 1 创建自己的图数据 PyG创建图的方式很简单 假
  • K8S从入门到放弃系列-(13)Kubernetes集群mertics-server部署

    集群部署好后 如果我们想知道集群中每个节点及节点上的pod资源使用情况 命令行下可以直接使用kubectl top node pod来查看资源使用情况 默认此命令不能正常使用 需要我们部署对应api资源才可以使用此命令 从 Kubernet
  • Google浏览器打开新页面会覆盖当前页面的问题

    点击链接时使用鼠标中间的转轮点击 会在后台打开新网页 点击链接时使用Ctrl 鼠标左击 在后台打开新网页 点击连接时Ctrl Shift 左击 跳转到打开的新页面 在Google浏览器搜索 最原始页面搜索 设置 gt 回车 设置 gt 搜索
  • 相机 - 02 图像处理isp

    isp 知识 1 基本概念 1 1 isp 模块简介 参考 1 基本概念 图像处理流程图 1 光线 gt lens gt sonsor gt 光电转换 gt A D gt bayer pattern gt isp gt I O bayer
  • 【Win11尝鲜】Win 11 打开输入法自带GIF表情包、颜文字等

    Win 11 打开输入法表情包 在输入法输入文字时 可以看到win11在明显提示一个表情包按钮 win10也有这个功能 但win11更完善 点击按钮可以打开表情包部分 按windows 句号 是字母部分的句号 不是数字键盘处的点 然后就打开
  • 分享:交流负载箱 0~9.999A 可调 步进1mA

    前言 最近去客户那边 发现一个问题 他们的交流供电单元 测试很不方便 需求 供电单元输出 AC220V 50HZ 漏电保护保护功能 过载报警功能 超载保护功能 总而言之 他们需要一台 交流的电子负载 功能与直流电子负载一致 需求分析 供电端
  • Keepalived配置Nginx自动重启,实现不间断服务

    续接上篇https blog csdn net qq 44299529 article details 122987503 上回说到我们应该让nginx不间断的工作 只要主节点nginx没问题 就可以重启 除非主节点nginx出错 才切换成