CentOS 7 下 Keepalived + Nginx 实现双机高可用

news2025/2/27 18:03:08

CentOS 7 下 Keepalived + Nginx 实现双机高可用

文章目录

  • CentOS 7 下 Keepalived + Nginx 实现双机高可用
      • 服务器准备
          • 服务信息
          • 服务架构
      • 服务安装
          • nginx
          • Keepalived
      • 服务配置
          • nginx
          • Keepalived
      • 启动服务
          • nginx
          • keepalived
      • 服务验证
          • 查看 VIP 状态
          • CURL 命令访问
          • 浏览器访问
      • 高可用验证
          • 停止 web01 下 Nginx
          • 恢复 web01 下 Nginx
      • 参考

服务器准备

服务信息
主机名IP角色其他
my-web01192.168.157.31nginx
keepalived
master
my-web02192.168.157.32nginx
keepalived
backup
VIP192.168.157.30
服务架构

在这里插入图片描述

服务安装

nginx
# 所有主机
[root@my-web01 ~]$ yum -y install nginx
Keepalived
# 所有主机
[root@my-web01 ~]$ yum -y install keepalived

服务配置

nginx
  • web01
[root@my-web01 ~]$ cat /usr/share/nginx/html/index.html 
<!DOCTYPE html>
<h1>my web01 ~~~</h1>
  • web02
[root@my-web02 ~]$ cat /usr/share/nginx/html/index.html
<!DOCTYPE html>
<h1>my web02 ~~~</h1>
Keepalived
  • web01
[root@my-web01 ~]$ cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

vrrp_script check_nginx {
    script "killall -0 nginx"
    interval 2
}

vrrp_instance VI_1 {
    interface ens33
    state MASTER
    priority 200

    virtual_router_id 33
    virtual_ipaddress {
        192.168.157.30
    }

    authentication {
        auth_type PASS
        auth_pass password
    }

    track_script {
        check_nginx
    }
}
  • web02
[root@my-web02 ~]$ cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

vrrp_script check_nginx {
    script "killall -0 nginx"
    interval 2
}

vrrp_instance VI_1 {
    interface ens33
    state BACKUP
    priority 100

    virtual_router_id 33
    virtual_ipaddress {
        192.168.157.30
    }

    authentication {
        auth_type PASS
        auth_pass password
    }

    track_script {
        check_nginx
    }
}

启动服务

nginx
# 所有节点
systemctl start nginx
keepalived
# 所有节点
systemctl start nginx

服务验证

查看 VIP 状态
# web01 -- 获取 VIP
[root@my-web01 ~]$ ip addr | grep '192.168.157'
    inet 192.168.157.31/24 brd 192.168.157.255 scope global ens33
    inet 192.168.157.30/32 scope global ens33

# web01 -- 未获取 VIP
[root@my-web02 ~]$ ip addr | grep '192.168.157'
    inet 192.168.157.32/24 brd 192.168.157.255 scope global ens33
CURL 命令访问
# VIP -- 访问到 web01
[root@my-web01 ~]$ curl 192.168.157.30
<!DOCTYPE html>
<h1>my web01 ~~~</h1>

# web01
[root@my-web01 ~]$ curl 192.168.157.31
<!DOCTYPE html>
<h1>my web01 ~~~</h1>

# web02
[root@my-web01 ~]$ curl 192.168.157.32
<!DOCTYPE html>
<h1>my web02 ~~~</h1>
浏览器访问
  • vip && web01

在这里插入图片描述

  • vip && web02

在这里插入图片描述

高可用验证

停止 web01 下 Nginx
  • 停止服务
# web01
[root@my-web01 ~]$ systemctl stop nginx
  • 验证 VIP
# web01 -- VIP 漂移
[root@my-web01 ~]$ ip addr | grep '192.168.157'
    inet 192.168.157.31/24 brd 192.168.157.255 scope global ens33
    
# web02 -- 获取 VIP
[root@my-web02 ~]$ ip addr | grep '192.168.157'
    inet 192.168.157.32/24 brd 192.168.157.255 scope global ens33
    inet 192.168.157.30/32 scope global ens33
  • 浏览器访问

在这里插入图片描述

在这里插入图片描述

恢复 web01 下 Nginx
  • 恢复服务
[root@my-web01 ~]$ systemctl start nginx
  • 验证 VIP
# web01 -- 获取 vip
[root@my-web01 ~]$ ip addr | grep '192.168.157'
    inet 192.168.157.31/24 brd 192.168.157.255 scope global ens33
    inet 192.168.157.30/32 scope global ens33
    
# web02 -- vip 漂移
[root@my-web02 ~]$ ip addr | grep '192.168.157'
    inet 192.168.157.32/24 brd 192.168.157.255 scope global ens33

在这里插入图片描述

参考

  • Keepalived + nginx 实现高可用

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

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

相关文章

自动拆箱与装箱

自动拆箱与装箱 先进行专栏介绍自动拆箱与装箱是Java语言中一个重要的特性&#xff0c;它们在编程过程中起着至关重要的作用。本文将深入探讨自动拆箱与装箱的原理和相关细节。概念基本概念分析 原理自动拆箱的原理自动装箱的原理总结 注意事项代码示例 先进行专栏介绍 本专栏…

(三十五)ArcMap创建最小边界几何

ArcMap数据管理——创建最小边界几何 目录 ArcMap数据管理——创建最小边界几何1.概念2.插图3.几何类型4.组选项(可选)5.将几何特征作为属性添加输出中 (可选)1.概念 创建包含若干面的要素类,用以表示封闭单个输入要素或成组的输入要素指定的最小边界几何。 2.插图 输出最…

数据可视化工具LightningChart .NET正式发布v10.5.1——拥有全新的3D新功能

LightningChart.NET完全由GPU加速&#xff0c;并且性能经过优化&#xff0c;可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D&#xff0c;高级3D&#xff0c;Polar&#xff0c;Smith&#xff0c;3D饼/甜甜圈&#xff0c;地理地图和GIS图表以及适用于科学…

基于esp32设计多功能应用卡片appcard

基于esp32的多功能应用卡片,支持时钟天气,粉丝计数器,闹钟,倒计日,游戏,电子书,图片,视频,新闻,股票,离线模式等功能。 硬件部分及程序烧录: 一,pcb和电路图直接见开源项目,附件中有Gerber文件可直接打板。 1,pcb打板要求,板子厚度1.6mm,其他无要求 二,元…

详解很多公司都在用的国产分布式任务调度框架:XXL-JOB

1.简介 1.1 Quartz的不足 之前我们讲述了分布式任务调度任务框架老大哥&#xff1a;Quartz&#xff0c;但是Quartz 使用起来也比较麻烦&#xff0c;不尽人意。个人总结其使用缺点如下&#xff1a; Quzrtz 并没有内置 UI 管理控制台&#xff0c;导致任务动态管理不够友好调用…

nginx动态同步配置模块nginx-upsync-module

使用场景简介 nginx一般直接在配置文件里配置upstream即可实现负载均衡&#xff0c;但有些特定的环境下此种方式就显得有些局限性。比如后台动态调整节点的时候&#xff1b;调整节点后不想修改配置文件重启nginx。 可以将配置文件从nginx本地迁移到其他第三方服务上如etcd、c…

[C++ 网络协议] 套接字和地址族、数据序列

目录 1. 套接字 1.1 在Linux平台下构建套接字 1.1.1 用于接听的套接字(服务器端套接字) 1.1.2 用于发送请求的套接字(客户端套接字) 1.2 在Windows平台下构建套接字 1.2.1 Winsock的初始化 1.2.2 用于接听的套接字(服务器端套接字) 1.2.3 用于发送请求的套接字(客户端套…

申请流量卡的时候,你了解过坑吗?

和营业厅办理的手机卡不同&#xff0c;在网上办理流量卡时要考虑的因素很多&#xff0c;比如合约期&#xff0c;优惠期等等&#xff0c;如果如果这几个方面不注意很容易买到套路卡哟。 ​ 所以&#xff0c;我们在办理流量卡是时&#xff0c;不要只看重资费&#xff0c;这几样重…

手机里视频太大怎么压缩?压缩教程分享

现在视频文件的体积越来越大了&#xff0c;动不动就是几个GB起步&#xff0c;如果后期再剪辑处理一下&#xff0c;更是会占据更多的设备空间了&#xff0c;还会导致我们传输受到限制&#xff0c;这时候就需要我们对视频进行压缩处理&#xff0c;下面给大家分享几个简单的方法&a…

Zorin OS 16.3 发布:无缝升级和卓越改进!

导读Zorin OS 团队自豪地宣布了备受期待的 Zorin OS 16.3 版本的发布&#xff0c;这是这个受欢迎的 Linux 发行版的一个里程碑版本。自首次发布以来不到两年时间&#xff0c;Zorin OS 已经获得了庞大的用户群体&#xff0c;截至目前已经有 530 万次下载&#xff0c;而 16.3 版本…

一步步教你实现JWT认证和授权

一步步教你实现JWT认证和授权 前言一、引入二、Token认证与JWT认证的关系三、什么是JWT认证&#xff1f;四、JWT的组成1、头部&#xff08;Header&#xff09;2、载荷&#xff08;Payload&#xff09;3、签名&#xff08;Signature&#xff09; 五、JWT认证的工作流程六、代码举…

Matplotlib 多个子图使用一个图例

1 所有子图的图例相同 **利用函数fig.axe.get_legend_handles_labels()得到图的line和label import matplotlib.pyplot as pltfig plt.figure() axes fig.subplots(nrows2, ncols2)for ax in fig.axes:ax.plot([0, 10], [0, 10], labellinear) # 使用最后一个子图的图例 li…

5V升压到12V2A芯片方案

5V升压到12V2A芯片方案&#xff0c;采用了一款2.7V-18V输入&#xff0c;4.5V-18V输出的峰值10A同步升压芯片&#xff0c;内置了MOS&#xff0c;封装为QFN13。 在电子设备中&#xff0c;经常会遇到需要将低电压提升到较高电压的情况。例如&#xff0c;对于一些需要12V电压供电的…

CAD转kml插件acad2kml分享下载

KML&#xff08;Keyhole Markup Language&#xff09;是一种用于描述地理数据的格式&#xff0c;它由Google公司开发并在2008年成为开放标准。KML使用XML语法&#xff0c;可以用于表示地理点、线、多边形、图像覆盖物以及相关属性信息。 KML是一种用于描述地理数据的开放格式&…

多维时序 | MATLAB实现CNN-BiGRU-Attention多变量时间序列预测

多维时序 | MATLAB实现CNN-BiGRU-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现CNN-BiGRU-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现CNN-BiGRU-Attention多变量时间序列预测&#xff0c;CNN-BiGRU-Attent…

如何高效解决“字符串相乘“问题?

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ >&#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 金句分…

rv1126设置静态ip

开发板配网--------------------------------------------------------------------------------------------- 刚拿到的开发板里面的网络配置大多不可用&#xff0c;此时是无法ping通的&#xff0c;这个时候需要重新修改相关的配置文件&#xff1b; Vi /etc/profile 最后面…

如何将苹果彻底删除视频找回?试试这3种方法

如今是短视频时代&#xff0c;大家通常会使用苹果手机来拍摄视频&#xff0c;以此记录生活中的美好日常。但是大家都知道视频是十分占空间的&#xff0c;这也经常会出现iPhone内存不足&#xff0c;磁盘崩溃的问题。 当遇到iPhone内存不足的情况时&#xff0c;大家往往会选择清…

Failed to execute goal org.apache.maven.plugins

原因&#xff1a; 这个文件D:\java\maven\com\ruoyi\pg-student\maven-metadata-local.xml出了问题 解决&#xff1a; 最简单的直接删除D:\java\maven\com\ruoyi\pg-student\maven-metadata-local.xml重新打包 或者把D:\java\maven\com\ruoyi\pg-student这个目录下所有文件…

【QPSK信号生成】生成正交相移键控信号研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…