Nginx (7):nginx高可用配置

news2025/1/20 22:04:41

所谓的高可用,就是虽然nginx可以反向代理,如果某个内部服务器down了,可以使用其他的内部服务器,然而万一nginx挂了呢????布置多个nginx再反向代理nginx??反向套娃,总有一个是头部的nginx,就还会出现这个问题。
而高可用的方法是:两台并列的nginx,都可以处理内部服务器,如果有一台nginx挂了,另一个迅速顶上。所谓的顶上,其实就是修改第二个nginx的ip地址为第一个nginx服务器,然而这样很复杂,问题很多,例如万一挂掉的nginx恢复了呢,这时候ip冲突了就。这里换一种思路,使用虚拟ip地址,它是固定的字符串,外部就用它访问,只不过它是飘忽不定的,一会在第一台nginx,一会在第二台nginx,是不固定的,这样就避免了很多问题。
这就会用到一个小软件——keepalived。咱们可以来模拟一下。

  • 模拟:在之前的设置中,都是01虚拟机作为nginx服务器,这里我们把01虚拟机克隆一下,作为并列的两个nginx服务器,如果其中一个挂了,另一个迅速顶上。
  • 首先克隆虚拟机01——然后两台都下载安装keepalived软件
    这里下载安装还有一些坑,下载安装命令很简单:
sudo apt-cache search keepalived
sudo apt-get install keepalived

但是我发现安装完之后,在/etc/keepalived目录下却没有相应的keepalived.conf文件。
首先尝试启动

/etc/init.d/keepalived status # 查看状态
/etc/init.d/keepalived stop  # 停止
/etc/init.d/keepalived start # 启动

systemctl start keepalived # 启动
systemctl status keepalived # 查看状态

然后查看状态,发现
在这里插入图片描述
没有配置文件,果然启动失败了,那么怎么生成配置文件呢,额,这里有个模板,在/usr/share/doc/keepalived/samples 目录下的模板文件keepalived.conf.sample,复制到/etc/keepalived目录下,改名字为keepalived.conf即可。重新启动
在这里插入图片描述
成了。

  • 配置01虚拟机
    keepalived.conf配置文件:
global_defs {
   router_id lb111 #起一个名字
}

vrrp_instance atguigu {# 后面atguigu是实例名字,随便起
    state MASTER # 表示是主机,不是备用
    interface ens33 #对应本机网卡的名字,用ifconfig查看
    virtual_router_id 50 #不用改
    nopreempt
    priority 100 #主备竞选时候的优先级
    advert_int 1 #间隔检测的时间
    authentication { #这个是分组,一个局域网内可能有多台机器配置
        auth_type PASS #keepalived了,总得区分开谁跟谁是一组配置
        auth_pass 1111 #这个只要同组保持一致就行
    }
    virtual_ipaddress {#虚拟ip,可以虚拟好几个,咱们就用一个
        192.168.200.11 #来实验就行
        #192.168.200.12
        #192.168.200.13
    }
}

ifconfig网卡:
这里修改完配置文件之后重启keepalived发现报错了:
keepalived daemon is already running
原因其实是上一次不正常退出,而它daemon还在运行,这次重启发现daemon还在运行,他以为已经启动了。解决方法也很简单,先杀死keepalived所有进程,systemctl stop keepalived其实是没用的,这个玩意的进程很难杀死,具体遵循下面的文章,可以破解:

https://blog.csdn.net/liuyichen999521/article/details/127570525

启动成功后,看看IP是不是变了:
在这里插入图片描述
可以看到,多了一个虚拟地址。(要用ip addr才能看到哦,ifconfig看不到)。

  • 配置04虚拟机
    这里配置文件可是有差别的,不能完全复制,
global_defs {
   router_id lb110 #变一个
}

vrrp_instance atguigu {# atguigu,必须一致!!!
    state BACKUP #备用机
    interface ens33
    virtual_router_id 50 #必须一致!!!
    nopreempt
    priority 50 # 优先级低一点,因为是备用机
    advert_int 1
    authentication { #必须一致!!!
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.125.100
    }
}


此时虚拟ip被01虚拟机占用了,所以ip addr不显示虚拟ip。

  • 测试方法:用其他机器,ping 192.168.125.100,也就是ping虚拟ip,发现通了,此时一旦挂掉虚拟主机01,你会发现有一个请求超时,然后立刻通了,然后去04虚拟机,ip addr,发现出现了192.168.125.100,也就是说,完成了ip漂移。
    在这里插入图片描述
    在这里插入图片描述
    绝了~
    这个时候依然可以使用常规nginx的代理功能,访问:
http://192.168.125.100:80/

在这里插入图片描述
没毛病

  • 拓展:keepalived是通过监听对方的keepalived进程来实现检测的,而万一虚拟机上的nginx坏了,keepalived没出问题,那这是检测不到的呀!!那可咋整,keepalived又不是为nginx服务的,他只是检测虚拟机是不是好使。
  • 这里可以通过写脚本的方式,它在虚拟机本机上跑,通过它把keepalived和nginx联系起来,脚本不断去检测nginx是否报错,如果出问题就kill掉keepalived进程,触发ip漂移。
  • 可见keepalived不是专门服务于nginx的,把nginx换成redis、mysql一样可以和keepalived配合。

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

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

相关文章

数据结构学习笔记(V):树与二叉树

目录 1 树 1.1 树的定义和基本术语 1.定义 2.基本术语 1.2 树的性质 2 二叉树 2.1 二叉树的定义和基本术语 1.定义 2.特殊二叉树 2.2 二叉树性质 2.3 二叉树存储结构 1.顺序存储 2.链式存储 3 二叉树进阶 3.1 二叉树顺序遍历 1.先序遍历 2.中序遍历 3.后序遍…

第十二周总结

这周我来总结一下数论分块和佩尔方程: 已知正整数n,求,对n/i下取整,相当于把一组数分块了,首先我们来找一下规律:n20时 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 …

现代密码学导论-20-流密码

目录 3.6 实际操作和加密方式 3.6.1 流密码 CONSTRUCTION 3.30 使用伪随机函数构造流密码 3.6.2 流密码的同步模式 CONSTRUCTION 3.31 流密码的异步模式 3.6 实际操作和加密方式 现代密码学导论-14-基于伪随机发生器的EAV安全_南鸢北折的博客-CSDN博客 CONSTRUCTION 3.17…

Spring Cloud整合Nacos集群

目录 第一章 微服务架构图 第二章 Spring Cloud整合Nacos集群 第三章 Spring Cloud GateWay 第四章 Spring Cloud Alibaba 整合Sentinel 第五章 Spring Cloud Alibaba 整合SkyWalking链路跟踪 第六章 Spring Cloud Alibaba 整合Seata分布式事务 第七章 Spring Cloud 集成Auth用…

计量数据分析数据库-Stata分析包使用指南、计量分析资料等八大数据大全

一、计量前沿stata 分析包使用指南 当考虑自变量X对因变量Y的影响时,如果X通过影响变量M来影响Y,则称M为中介变量(mediator或mediating variable) (Judd & Kenny, 1981; Baron &Kenny,1986)。X通过中介变量M对Y产生的影响就是中介效应&#xff…

【深入理解C++】可调用对象、std::function、std::bind()

文章目录1.可调用对象1.1 函数指针1.2 具有operator()成员函数的类对象/仿函数/函数对象1.3 可被转换为函数指针的类对象1.4 类成员函数指针2.std::function2.1 绑定普通函数2.2 绑定类的静态成员函数2.3 绑定具有operator()成员函数的类对象2.4 绑定可被转换为函数指针的类对象…

【无标题】SAR雷达系统反设计及典型目标建模与仿真实现研究——目标生成与检测(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

408考研科目《数据结构》第八章第一节:排序的基本概念和插入排序(直接插入排序,折半插入排序,希尔排序)

文章目录教程1.排序的基本概念1.1 排序算法的评价指标1.2 排序算法的分类2. 插入排序2.1 直接插入排序2.1.1 算法效率分析2.2 折半插入排序总结2.3 希尔排序 (Shell Sort)总结教程 排序: https://www.bilibili.com/video/BV1b7411N798/?p77…

队列——算法专项刷题(七)

七、队列 常用于辅助遍历树,设计队列先进先出特性的数据结构 7.1 滑动窗口的平均值 给定一个整数数据流和一个窗口大小,根据该滑动窗口的大小,计算滑动窗口里所有数字的平均值。 实现 MovingAverage 类: MovingAverage(int si…

图书管理系(附源码PPT)

图书管理系统1 绪 论1.1 研究背景1.2 研究意义1.3 相关研究现状1.3.1 高校图书管理面临的问题1.3.2 信息化为图书管理带来新变化2 相关技术2.1 JSP 概述2.2 MySQL 数据库技术2.3 Spring2.4 SpringMVC2.5 Dbcp2.6 Maven3 系统分析3.1 需求分析3.1.1 系统的功能需求分析3.1.2 系统…

利用衍射表面消色差的混合目镜建模

1. 摘要 同时具有折射和衍射表面的混合透镜已成为一种极具潜力的解决方案应用于多种领域。在此案例中,我们将演示混合目镜的一个例子,其中利用衍射透镜表面对色差进行了校正。由ZemaxOpticStudio进行初始化设计,并导入VirtualLab Fusion进行进…

TensorRt(2)快速入门介绍

文章目录1、使用ONNX部署的示例1.1、导出模型1.2、设置batch size批处理大小1.3、指定数值精度1.4、转换模型1.5、部署模型2、使用ONNX转换为engine再部署的示例2.1、导出ONNX模型2.1.1、从TensorFlow中导出ONNX2.1.1、从PyTorch中导出ONNX2.2、ONNX 转化为 TensorRT Engine2.3…

27个超实用Chrome控制台调试技巧 Source 全局搜索(关注更新)

谷歌开发者工具提供了一系列的功能来帮助开发者高效 Debug 网页应用,让他们可以更快地查找和修复 bug。在谷歌的开发者工具中,有非常多有用的小工具,但是很多开发者并不知道。通过这篇文章,我把我常用的那些高效 Debug 的 Chrome …

ARM 汇编指令集1_2

一、两个概念:指令与伪指令 (汇编)指令,是 CPU 机器指令的助记符,经过编译后会得到一串10组成的机器码,可以由 CPU 读取执行。(汇编)伪指令,本质上不是指令(…

版本控制利器——changelog

问题描述 当前,我们项目需要进行版本的确定,人工审核代码已接近尾声,但为了防止后续继续出现该问题,我希望能够做到在每次push到master时,更新changelog 将每一个版本的commit记录下来,类似于下列 解决…

K8s 集成 Jenkins 部署Go Web项目

风离不摆烂学习日志 Day9 K8s 集成 Jenkins 部署Go Web项目 Dockerfile FROM golang:alpine as builder # 需要go环境 MAINTAINER fl1906WORKDIR /work # 源 RUN go env -w GOPROXYhttps://goproxy.cn && go env -w CGO_ENABLED0 && go env -w GO111MODULEon C…

Splunk UBA 从 Ldap 成功导入 HR 数据

1: 今天在配置Splunk UBA 的HRdata 和asset data 的时候,都要用到ldap, 所以还非要装add-on:\ add-on 的名字: Splunk Supporting Add-on for Active Directory (SA-LDAPSearch) (SA-LDAPSearch) 这个add-on 的配置: Configure the Splunk Supporting Add-on for Activ…

使用腾讯云cos搭建图片服务器

背景 当我们能不希望把图片上传到自己的服务器时,可以采用腾讯云cos帮我们免费代图片,我们只需要在自己的数据库里保存一个图片地址就行了 二、注册账号免费试用 1、注册腾讯云账号 按照腾讯云的注册方式,注册自己的账号 2、实名认证 选择个…

blender boxCutter插件

boxCutter可以用来进行bool运算 打开boxCutter 方法1:物体模式在舞台左侧选择boxCutter图标 方法2:物体模式按N,在舞台右侧的侧边栏里选择boxCutter 方法3 物体模式alta 打开BoxCutter后,舞台上方,N键的弹出菜单&…

进行 Spring 6 迁移的最佳方式

介绍 在本文中,我们将了解如何将现有应用程序迁移到Spring 6以及如何充分利用此升级。 本文中的提示基于我在Hypersistence Optimizer和高性能 Java Persistence 项目中添加对 Spring 6 的支持所做的工作。 爪哇 17 首先,Spring 6 将最低 Java 版本提…