Nginx-keepalived-高可用

Nginx 高可用 通常 借助 Keepalived 实现, Keepalived 能通过 VRRP (虚拟路由冗余协议)让多个 Nginx 服务器 组成一个 热备集群,当主服务器故障时自动切换到备用服务器,保障服务不间断。

一、环境准备

角色IP 地址
主服务器(Master)192.168.159.129
备用服务器(Backup)192.168.159.130
虚拟IP(VIP)192.168.159.120
Keepalived版本1.4.5

二、源码安装 Keepalived 服务

2.1 在节点 Mater 上安装 keepalived

# 安装依赖
yum install openssl-devel libnl3-devel ipset-devel -y
yum install libnfnetlink-devel -y# 下载源码
wget https://www.keepalived.org/software/keepalived-1.4.5.tar.gz# 解压
tar -zxvf  keepalived-1.4.5.tar.gzcd keepalived-1.4.5./configure --prefix=/usr/local/keepalivedmake && make install

2.1.1 配置文件配置

# 配置文件 keepalived.conf 配置
mkdir -p /etc/keepalivedvim keepalived.conf# 配置文件内容
! Configuration File for keepalivedglobal_defs {router_id NGINX_MASTERscript_user rootenable_script_security
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1mcast_src_ip 192.168.159.129authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.159.200}
}

2.1.2 把keepalived 配置成系统命令

  • 创建 服务文件

    vim /etc/systemd/system/keepalived.service[Unit]
    Description=Keepalived High Availability Service
    After=network.target[Service]
    Type=forking
    PIDFile=/var/run/keepalived.pid
    ExecStart=/usr/local/keepalived/sbin/keepalived --pid=/var/run/keepalived.pid --config=/etc/keepalived/keepalived.conf
    ExecReload=/bin/kill -HUP $MAINPID
    KillMode=process
    Restart=on-failure[Install]
    WantedBy=multi-user.target
    
  • 重新加载 Systemd 配置并启动服务

    sudo systemctl daemon-reload
    sudo systemctl start keepalived
    sudo systemctl enable keepalived
    
  • 检查服务状态

    sudo systemctl status keepalived
    

2.2 在节点 Backup 上安装 Keepalived

安装方法与 Master 一致, 配置文件 keepalived.conf 需要修给为以下

! Configuration File for keepalivedglobal_defs {router_id NGINX_BACKUPscript_user rootenable_script_security
}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 90advert_int 1mcast_src_ip 192.168.159.130authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.159.200}
}

三、启动 keepalived 服务验证 VIP 是否挂起

在这里插入图片描述

四、安装 Nginx 服务器

pass

五、测试 Nginx

在 Master 上的 Nginx 的 HTML配置 MASTER

在 Backup 上的 Nginx 的 HTML 配置 Buckup

5.1 访问虚拟 IP 192.168.159.200

在这里插入图片描述

5.2 把 Master 的 keepalived 关闭,模拟服务故障

在这里插入图片描述
发现 VIP 192.168.159.200 切换到 备用服务器,访问 192.168.159.120
在这里插入图片描述

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

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

相关文章

使用python完成手写数字识别

入门图像识别的第一个案例,看到好多小伙伴分享,也把自己当初的思路捋捋,写成一篇博客,作为记录和分享,也欢迎各位交流讨论。 实现思路 数据集:MNIST(包含60,000个训练样本和10,000个测试样本) 深度学习框架:Keras(基于TensorFlow) 模型架构:卷积神经网络(CNN) 实…

Java学习总结-多线程-三种创建方法

什么是线程? 线程(Thread)是程序内部的一条执行流程。 程序如果只有一条执行流程,那这个程序就是单线程程序。 什么是多线程? 多线程是指从软硬件上实现的多条执行流程的技术(多条线程由CPU负责调度执行…

电动垂直起降飞行器(eVTOL)

电动垂直起降飞行器(eVTOL)的详细介绍,涵盖定义、技术路径、应用场景、市场前景及政策支持等核心内容: 一、定义与核心特性 eVTOL(Electric Vertical Take-off and Landing)即电动垂直起降飞行器&#xf…

ensp 网络模拟器 思科华为基于VLANIF的公司网络搭建

该文章仅记录作业配置过程 如有雷同纯属巧合 一. 其它(共1题,100分) 1. (其它) 为大学生公司创建部门VLAN 1.项目 背景 为大学生公司现有财务部、技术部和业务部,出于数据安全的考虑,各部门的计算机需进行隔离。公…

使用`sklearn`中的逻辑回归模型进行股票的情感分析,以及按日期统计积极和消极评论数量的功能

以下是完成上述任务的Python代码,可在Jupyter Notebook中运行。此代码包含了使用sklearn中的逻辑回归模型进行情感分析,以及按日期统计积极和消极评论数量的功能。 import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizer f…

oracle批量删除分区

为了清理数据,往往需要删除一些分区 简单查看当前分区 附件 --创建测试表 -- drop table test_part purge;CREATE TABLE test_part (sales_id NUMBER,sale_date DATE,amount NUMBER ) PARTITION BY RANGE (sale_date) INTERVAL (INTERVAL 1 MONTH) -- 每个月创建…

java流程控制08:For循环

For循环 虽然所有循环结构都可以用while或者do…while表示,但Java提供了另一种语句-----for循环,使一些循环结构变得更加简单。 for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。 for循环执行的次数是在执行前就确定的。…

嵌入式软件开发调试方法

文章目录 1. 利于函数返回值,retrurn 定位错误位置2. 合理使用逻辑分析仪(正点原子 厉害!!) 1. 利于函数返回值,retrurn 定位错误位置 如下图所示,设置不同的返回值,0是ok的,其他值均为失败&…

P1025 [NOIP 2001 提高组] 数的划分(DFS)

题目描述 将整数 n 分成 k 份,且每份不能为空,任意两个方案不相同(不考虑顺序)。 例如:n7,k3,下面三种分法被认为是相同的。 1,1,5; 1,5,1; 5,1,1. 问有多少种不同的分法。 输入格式 n,k …

设计模式简述(三)工厂模式

工厂模式 描述简单工厂(静态工厂)工厂方法模式 抽象工厂增加工厂管理类使用 描述 工厂模式用以封装复杂的实例初始化过程,供外部统一调用 简单工厂(静态工厂) 如果对象创建逻辑简单且一致,可以使用简单工…

批量将 JSON 转换为 Excel/思维导入等其它格式

json 格式相信对大家来说都不陌生,这是一种轻量级的结构化数据,可以对对象进行描述。json 格式也是一种普通的文本文件格式,用记事本就能够打开编辑 json 格式的文件,可以很方便的转换为其他格式。今天要给大家介绍的就是如何将 j…

电脑有时出现检测不到音箱设备怎么办?

问题 有时候电脑开机之后就检测不到音箱,经过我一顿检查发现是检测不到声卡,即使拔插了音箱也没用,但是当我重启或者休眠之后再重启发现就检测到了 解决方案 方案一 重启或者休眠之后再开启 方案二 使用powershell指令将声卡弹出和载入…

Qwen-Agent框架的文件相关操作:从Assistant到BasicDocQA

在前面的几篇文章如《针对Qwen-Agent框架的Function Call及ReAct的源码阅读与解析:Agent基类篇》 、《基于Qwen-Agent框架的Function Call及ReAct方式调用自定义工具》、 《针对Qwen-Agent框架的源码阅读与解析:FnCallAgent与ReActChat篇》中&#xff0c…

RSSI定位程序,N个锚点、三维空间,使用CKF对轨迹进行滤波,附MATLAB代码的下载链接

本文所述的程序实现三维空间中基于RSSI信号的多锚点定位,并采用容积卡尔曼滤波(CKF)对动态轨迹进行降噪优化。代码包含完整的定位仿真流程,涵盖环境建模、信号强度模拟、定位解算、轨迹滤波及可视化分析模块 文章目录 程序介绍概述…

开源软件与自由软件:一场理念与实践的交锋

在科技的世界里,“开源软件”和“自由软件”这两个词几乎无人不知。很多人或许都听说过,它们的代码是公开的,可以供所有人查看、修改和使用。然而,若要细究它们之间的区别,恐怕不少朋友会觉得云里雾里。今天&#xff0…

C++ - 头文件基础(常用标准库头文件、自定义头文件、头文件引入方式、防止头文件重复包含机制)

一、头文件 在 C 中&#xff0c;头文件&#xff08;.h&#xff09;用于函数声明、类定义、宏定义等等 在 Visual Studio 中&#xff0c;头文件通常放在头文件目录中&#xff0c;头文件实现通常放在源文件目录中 二、常用标准库头文件 1、输入输出 <iostream> 标准输入…

CSS 背景属性学习笔记

一、CSS 背景属性概述 CSS 背景属性用于定义 HTML 元素的背景效果&#xff0c;主要包括以下几种属性&#xff1a; background-color&#xff1a;定义元素的背景颜色。 background-image&#xff1a;定义元素的背景图像。 background-repeat&#xff1a;定义背景图像如何重复…

Qt实现鼠标拖动窗口

Qt实现鼠标拖动窗口 1、设置窗口无边框2、重写鼠标点击&#xff0c;移动函数2.1添加头文件2.2 重写函数2.3 添加定义 3、定义一个偏移值4、判断鼠标左键是否按下并计算偏移值5、移动窗口6、.h文件和.cpp文件6.1 .h文件6.2 .cpp文件 7、总结 1、设置窗口无边框 this->setWin…

MDX语言的数论算法

MDX语言的数论算法探讨 引言 数论作为数学的一个重要分支&#xff0c;主要研究整数及其性质。在计算机科学和信息技术领域&#xff0c;数论算法被广泛应用于密码学、算法设计、数据加密等领域。MDX&#xff08;Multi-Dimensional Expressions&#xff09;语言&#xff0c;虽然…

【学Rust写CAD】34 精确 Alpha 混合函数(argb.rs补充方法)

源码 #[inline]pub fn over_exact(self, dst: Argb) -> Argb {let a 255 - self.alpha32();let t dst.rb() * a 0x80_00_80;let mut rb (t ((t >> 8) & Argb::MASK)) >> 8;rb & Argb::MASK;rb self.rb();// saturaterb | 0x1000100 - ((rb >&…