Nginx的HA高可用的搭建

news2024/12/23 23:32:31

1. 什么是高可用

高可用(High Availability, HA)是一种系统设计策略,旨在确保服务或应用在面对硬件故障、软件缺陷或任何其他异常情况时,仍能持续稳定地运行。它通过实现冗余性、故障转移、负载均衡、数据一致性、监控自动化、预防性维护、灾难恢复计划以及服务级别协议等关键要素,来减少服务中断时间,提升服务的可靠性和稳定性。

2. 高可用的原理 -- keepalived

思考

  1.  Nginx如果宕机,导致客户无法访问到项目。--- 搭建Nginx高可用
  2.  如果Nginx主节点宕机,如何才能切换到从节点。 -- 使用keepalived组件

3. 搭建HA高可用

我这边用来两台虚拟机

安装keepalived

yum install -y keepalived 

默认安装在/etc/keepalived下

修改keepalived.conf配置文件

global_defs {
    notification_email {
      acassen@firewall.loc
      failover@firewall.loc
      sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    # ip的地址
    smtp_ server 192.168.111.188  // 改为自己的ip
    smtp_connect_timeout 30
    router_id 192.168.111.188 // 改为自己的ip
}
# 执行脚本
vrrp_script chk_http_port {
    script "/usr/local/src/nginx_check.sh"
    interval 2  # 每2s执行一次该脚本
    weight -20  # keepalive宕机  权重-20 优先级
}

vrrp_instance VI_1 {
    state MASTER # 角色
    interface ens33 # 网卡名
    virtual_router_id 51 # id 保证主从相同
    priority 100  # 优先级 主节点大于从节点
    advert_int 1
    authentication {
        auth type PASS
        auth pass 1111
        }
    virtual_ipaddress { 
        192.168.111.50 # 虚拟ip. 使用逗号隔开
    }
    track_script {
         chk_http_port # 追踪nginx脚本
    }
    
}

从节点

global_defs {
    notification_email {
      acassen@firewall.loc
      failover@firewall.loc
      sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    # ip的地址
    smtp_ server 192.168.111.189
    smtp_connect_timeout 30
    router_id 192.168.111.189
}
# 执行脚本
vrrp_script chk_http_port {
    script "/usr/local/src/nginx_check.sh"
    interval 2  # 每2s执行一次该脚本
    weight -20  # keepalive宕机  权重-20 优先级
}

vrrp_instance VI_1 {
    state BACKUP # 角色
    interface ens33 # 网卡名
    virtual_router_id 51 # id 保证主从相同
    priority 90  # 优先级 主节点大于从节点
    advert_int 1
    authentication {
        auth type PASS
        auth pass 1111
        }
    virtual_ipaddress { 
        192.168.111.50 # 虚拟ip. 使用逗号隔开
    }
    track_script {
         chk_http_port # 追踪nginx脚本
    }
    
}

nginx_check.sh

#!/bin/bash
# 检查是否开启nginx---统计nginx进程的个数
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
        pkill -9 keepalived
fi

注意修改权限

修改权限: chmod 777 nginx_check.sh

启动

nginx         
keepalived    systemctl start|stop keepalived

4. 演示

现在是用第一台虚拟机进行代理

故意把第一台给宕掉,看看会不会自动切换到第二台

成功!!!

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

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

相关文章

MySQL下载安装(保姆式教程)以及解决一些可能的问题

目录 MySQL的下载和安装 显示路径已经存在问题解决 注意: 端口被占用问题解决 注意: 服务名占用问题解决 注意: 应用配置问题解决 注意: MySQL环境配置 检查MySQL是否成功安装 如何将MySQL文件删除干净 MySQL的下载和安装 首先直接…

Python(字符串)

方法名描述说明 str.lower() 将str字符串全部转化为小写字母,结果为一个新的字符串str.upper()将str字符串全部转化为大写字母,结果为一个新的字符串str.split(sepNone)将str按照指定的分隔符sep分隔,结果为列表类型str.count(sub)结果为…

Golang | Leetcode Golang题解之第239题滑动窗口最大值

题目: 题解: func maxSlidingWindow(nums []int, k int) []int {n : len(nums)prefixMax : make([]int, n)suffixMax : make([]int, n)for i, v : range nums {if i%k 0 {prefixMax[i] v} else {prefixMax[i] max(prefixMax[i-1], v)}}for i : n - 1…

使用C#实现无人超市管理系统——数据结构课设(代码+PPT+说明书)

说明:这是自己做的课程设计作业,得分情况98/100 如果想要获取私信我 本项目采用线性表中的链表来进行本次系统程序的设计。链表分为两条线,分别是存储用户信息和商品信息,并且都设为公共属性,方便对用户信息和商品信息…

QT5:多窗口跳转

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助 目录 前言 一、环境 二、步骤 三、代码实现 四、效果图 前言 学习使用qt5完成多窗口(界面)跳转:从主界面可分别跳转至界面一和界面二&#xf…

echarts实现3d柱状效果

代码如下,单个的调第一个方法,多个柱状的调第二个方法,具体情况修改参数或者二次开发即可 //3d柱状图 export function getEcharts3DBar (xAxisData:string[][name1,name2,name3], data:number[][1,2,3], colorObj:IBaseObject{topStartColo…

【中项】系统集成项目管理工程师-第2章 信息技术发展-2.1信息技术及其发展-2.1.4信息安全与2.1.5信息技术的发展

前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…

css前端面试题

1.什么是css盒子模型? 盒子模型包含了元素内容(content)、内边距(padding)、边框(border)、外边距(margin)几个要素。 标准盒子模型和IE盒子模型的区别在于其对元素的w…

QT调用VNC并放到一个窗口中

1.VNC资源下载 本例中的这个VNC可以从以下连接中下载,也可以从官网上下载,应该都是类似的。 https://download.csdn.net/download/xiaoding_ding/89549092 下载完成后放到项目的release文件夹中 2.程序中引用 2.1在主界面中放置一个按钮,…

NAS新品“翻车”后,绿联科技要上市了

在消费电子市场回暖的东风中,又一消费电子知名企业登陆A股。 近日,深圳市绿联科技股份有限公司(下称“绿联科技”)开启申购,将在创业板上市。本次上市,绿联科技的发行价为21.21元/股,发行数量为…

【自动驾驶汽车通讯协议】SPI通讯:深入理解与应用

文章目录 0. 前言1. 工作原理2. 模式与配置2.1 CPOL (Clock Polarity)2.2 CPHA (Clock Phase)2.3 组合模式 3. 特性与优势4. 在自动驾驶汽车中的应用5. 结论 0. 前言 按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见…

给定一整数数组,其中有p种数出现了奇数次,其他数都出现了偶数次,怎么找到这p个数?

给定一长度为m的整数数组 ,其中有p种不为0的数出现了奇数次,其他数都出现了偶数次,找到这p个数。 要求:时间复杂度不大于O(n),空间复杂度不大于O(1)。 由于时间复杂度不大于O(n),则不能在遍历数组中嵌套遍…

SpringMVC源码深度解析(中)

接上一遍博客《SpringMVC源码深度解析(上)》继续聊。最后聊到了SpringMVC的九大组建的初始化,以 HandlerMapping为例,SpringMVC提供了三个实现了,分别是:BeanNameUrlHandlerMapping、RequestMappingHandlerMapping、RouterFunctio…

基于VMware(虚拟机) 创建 Ubunton24.04

目录 1.设置 root 密码 2. 防火墙设置 2.1 安装防火墙 2.2 开启和关闭防火墙 2.3 开放端口和服务规则 2.4 关闭端口和删除服务规则 2.5 查看防火墙状态 3. 换源 3.1 源文件位置 3.2 更新软件包 1.设置 root 密码 1. 切换到 root 用户 sudo -i 2. 设置新密码&#…

STM32 CAN外设(基于STMF103C8T6)

STM32内置bxCAN外设(CAN控制器),支持CAN2.0A和2.0B,可以自动发送CAN报文和按照过滤器自动接收指定CAN报文,程序只需处理报文数据而无需关注总线的电平细节 波特率最高可达1兆位/秒3个可配置优先级的发送邮箱2个3级深度的接…

前端表格解析方法

工具类文件 // fileUtils.tsimport { ref } from vue; import * as xlsx from xlsx;interface RowData {[key: string]: any; }export const tableData ref<RowData[]>([]);export async function handleFileSelect(url: string): Promise<void> {try {const res…

【Git远程操作】忽略特殊文件 | 配置命令别名

目录 忽略特殊文件 配置命令别名 忽略特殊文件 前面我们讲到git提供了一个特殊的配置文件.gitignore模板 在⽇常开发中&#xff0c;我们有些⽂件不想或者不应该提交到远端&#xff0c;⽐如保存了数据库密码的配置⽂件&#xff0c;那怎么让 Git 知道呢&#xff1f;在 Git ⼯作…

python-网络并发模型

3. 网络并发模型 3.1 网络并发模型概述 什么是网络并发 在实际工作中&#xff0c;一个服务端程序往往要应对多个客户端同时发起访问的情况。如果让服务端程序能够更好的同时满足更多客户端网络请求的情形&#xff0c;这就是并发网络模型。 循环网络模型问题 循环网络模型只能…

【应急响应】Windows应急响应手册(勒索病毒篇)

文章目录 前言一、勒索病毒简述保护现场确定勒索病毒家族根据勒索病毒类型寻找解决方法寻找加密器解决勒索善后阶段常规安全检查阶段 前言 本篇内容围绕勒索病毒事件进行分析&#xff0c;通过使用技术手段来确定勒索病毒家族并寻找解密方法&#xff0c;实战中过程中可参考文中…

【JavaScript 算法】堆排序:优先队列的实现

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、算法原理堆的定义堆排序的步骤 二、算法实现构建最大堆注释说明&#xff1a; 三、应用场景四、总结 堆排序&#xff08;Heap Sort&#xff09;是一种基于堆数据结构的排序算法&#xff0c;具有较好的时间复杂度表现。堆…