现阶段项目开发往往采用前后台分离,前台常用的技术有vue、react等,前台代码部署在nginx中,代码中配置了后台服务的网关地址,由网关向后台分发服务请求,架构示意图如下:

        在上述架构图中,如果Nginx服务器宕机,那么客户端则无法访问后台服务,本文重点阐述基于Keepalived实现前台服务高可用。改进后架构示意图如下:

        实现基于Keepalived的前台服务高可用,步骤如下:

        环境说明:系统版本:centos7 ;Nginx版本:nginx-1.20.2.tar.gz;keepalived版本:keepalived-2.0.20.tar.gz;后台2个虚拟机,ip分别是:192.168.136.129、192.168.136.130

        1、Nginx安装【129、130】

# 安装四个依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel# 解压nginx源码
cd /usr/software/
tar xzvf nginx-1.20.2.tar.gz# 创建安装的文件夹
cd /usr/install
mkdir nginx-1.20.2#指定安装位置
cd /usr/software/nginx-1.20.2
./configure --prefix=/usr/install/nginx-1.20.2#编译&安装
make && make install

        2、为了方便观察ip信息,修改nginx的主页面index.html

vim /usr/install/nginx-1.20.2/html/index.html

        【129】文件修改内容如下:

        【130】文件修改内容如下:

        3、【129、130】分别启动nginx

cd /usr/install/nginx-1.20.2/sbin/
./nginx

        4、【129、130】安装keepalived 

#解压缩keepalived
cd /usr/software/
tar xzvf keepalived-2.0.20.tar.gz#创建keepalived的安装目录
cd /usr/install
mkdir keepalived-2.0.20#配置keepalived的安装目录并编译安装
cd /usr/software/keepalived-2.0.20
./configure --prefix=/usr/install/keepalived-2.0.20
make && make install

        5、 【129、130】etc创建keepalived配置目录,拷贝配置文件到etc目录下,并修改此文件

mkdir /etc/keepalived
cp -p /usr/install/keepalived-2.0.20/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf

        【129】keepalived.conf 文件信息如下:

! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addrvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.136.250}
}virtual_server 192.168.136.250 80 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 50protocol TCPsorry_server 192.168.136.200 80real_server 192.168.136.129 80 {weight 1TCP_CHECK {connect_port    80connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.136.130 80 {weight 1TCP_CHECK {connect_port    80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}

        【130】keepalived.conf 文件信息如下:

! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addrvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.136.250}
}virtual_server 192.168.136.250 80 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 50protocol TCPsorry_server 192.168.136.200 80real_server 192.168.136.129 80 {weight 1TCP_CHECK {connect_port    80connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.136.130 80 {weight 1TCP_CHECK {connect_port    80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}

         重点配置如下:

        【129】state MASTER;【130】state BACKUP;

        interface ens33 :网卡名称

        virtual_ipaddress 192.168.136.250:虚拟地址,就是客户端可以访问的地址

        【129】priority 100;【130】priority 80;【129】的优先级高

        real_server 192.168.136.129 80 真实的nginx地址

        real_server 192.168.136.130 80 真实的nginx地址

        6、【129】、【130】分别启动keepalived并测试

cd /etc/keepalived
service keepalived start
service keepalived status

        浏览器输入虚地址:http://192.168.136.250/ ,由于129是master,显示129的ip地址

        当129虚拟机宕机时(模拟关闭电源),再次访问 http://192.168.136.250/是,显示130的ip地址,实现了前台服务的高可用。

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

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

相关文章

Gradio全解13——MCP协议详解(5)——Python包命令:uv与uvx实战

Gradio全解13——MCP协议详解(5)——Python包命令:uv与uvx实战 第13章 MCP协议详解13.5 Python包命令:uv与uvx实战13.5.1 uv核心亮点与常用命令1. uv介绍2. 安装与项目管理3. 脚本与工具4. Python版本与pip接口 13.5.2 uv核心指令…

OD 算法题 B卷【求最小步数】

文章目录 求最小步数 求最小步数 求从坐标零点到坐标点n的最小步数,一次只能沿着横坐标轴向左或向右移动2或3;途经的坐标点可以为负数; 输入描述: 坐标点n 输出描述: 从坐标零点移动到坐标点n的最小步数 n在【1,10^9】 示例1 输入&#xf…

Elasticsearch 集群升级实战指引—7.x 升级到 8.x

升级Elasticsearch集群从7.x到8.x是一项复杂且关键的任务,涉及重大版本变更(如API调整、配置变更、安全功能强制启用等),可能影响集群的性能和稳定性。结合您提到的业务量增长导致索引写入变慢的问题,本指引不仅提供详…

JWT学习总结

文章目录 前置知识Authorization头部和 CookieCRSF攻击 JWT概念JWT认证流程使用Springboot整合JWTJwtUtil JWT案例控制器JWT拦截器注册拦截器结果 session VS Jwt 前置知识 Authorization头部和 Cookie Authorization 头部和 Cookie 是 HTTP 协议中两种不同的身份认证 / 信息…

阿里云消息队列 Apache RocketMQ 创新论文入选顶会 ACM FSE 2025

近日,由阿里云消息团队发表的 Apache RocketMQ 创新论文被 CCF-A 类软件工程顶级会议 FSE 2025 Industry Track 录用。 ACM FSE(The ACM International Conference on the Foundations of Software Engineering)是享有盛誉的国际学术会议&…

定制WordPress管理后台

WordPress作为全球最流行的建站工具,因其灵活性和易用性受到广泛欢迎。许多服务器提供商都支持一键安装WordPress,例如Hostease,使新手用户也能轻松搭建属于自己的网站。然而,后台的默认设置可能无法完全满足不同用户的需求。定制…

REST API设计与Swagger:构建高效、易用的Web服务

引言 在现代Web开发中,REST API已成为不同系统间通信的标准方式。一个设计良好的REST API不仅能提高开发效率,还能改善用户体验。而Swagger(现称为OpenAPI)作为API文档和测试的强大工具,已经成为API开发中不可或缺的一…

一个非对齐访问的问题

1、引言 最近在编写代码时,出现了这样一个 bug。程序一跑,系统就崩溃了,报错是 bus error。 目标平台:ARM32 最终定位到出错的代码片段: *((uint32_t *)ptr) id;这里的 ptr 是一个非 4 字节对齐的地址!&a…

【构造】P8976 「DTOI-4」排列|普及+

本文涉及知识点 构造 P8976 「DTOI-4」排列 题目背景 Update on 2023.2.1:新增一组针对 yuanjiabao 的 Hack 数据,放置于 #21。 Update on 2023.2.2:新增一组针对 CourtesyWei 和 bizhidaojiaosha 的 Hack 数据,放置于 #22。…

多路I/O转接服务器(select、poll、epoll)

多路IO转接服务器也叫做多任务IO服务器。该类服务器实现的主旨思想是,不再由应用程序自己监视客户端连接,取而代之由内核替应用程序监视文件。 IO 多路转接方式比较: 常见的 IO 多路转接方式有:select、poll、epoll,他…

最新临时文件快传系统源码 轻量化 带后台

简介: 最新临时文件快传系统源码 轻量化 带后台 首发 轻松上传文件并生成提取码分享给他人,无需注册,方便快捷。 图片:

MyBatis多数据源动态连接工具类实现

这个DatabaseService工具类提供了动态创建MyBatis SqlSession的能力,可以灵活地连接到不同的数据库,非常适合需要动态切换数据源的场景。 package com.cmes.immp.device.utils;import lombok.SneakyThrows; import org.apache.commons.dbcp2.BasicDataS…

用亮数据 MCP 驱动 Trae 智能体:打造高效亚马逊商品采集与分析助手

本文适合希望快速构建数据驱动型智能体的开发者、数据工程师及 AI 产品设计者阅读 并非广告,希望本文可以帮助有需求的同学,祝大家天天开心 在数字时代,数据是决策与洞察趋势的关键。但移动互联网数据获取不易,传统爬虫技术面对复…

如何降低AIGC生成内容的重复率?五种免费降AI率的方法 (25年更新)

随着AI生成内容(AIGC)的普及,越来越多的学术写作依赖AI工具来生成论文和文章。然而,AI生成内容的查重率常常偏高,导致很多论文无法通过学术查重系统。为了解决这一问题,以下是五种有效的免费降AIGC率的方法…

小米YU7使用UWB技术,厘米级定位精准迎宾,安全防破解无感控车

当您双手抱着快递走向爱车时,车门自动解锁;当您站在前备箱前稍作停留,箱盖优雅升起——这不是科幻电影,而是小米YU7搭载UWB技术带来的真实体验。在2025年5月的小米15周年战略新品发布会上,雷军揭晓了这项革命性技术&am…

WPF学习(动画)

文章目录 一、图像变换 RenderTransform1、常见变换类型2、RenderTransform 的核心作用3、RenderTransform 的使用方式4、与 LayoutTransform 的对比5、在动画中的应用 二、 滚动的椭圆三、Storyboard放置位置1. **元素的 Resources 集合**2. **控件模板(ControlTem…

Crossbar结构的排队策略

目录 一、概述 二、排队策略 三、输入排队结构(IQ) 3.1 结构特点 3.2 改进方案 四、输出排队结构(OQ) 五、输入输出联合排队结构(CIOQ) 六、输入交叉节点联合排队结构(CICQ) 一、概述 Crossbar是一种全连接的交换结构,由 MN 个交叉…

状态模式 - Flutter中的状态变身术,让对象随“状态“自由切换行为!

订单状态流转/播放器控制/游戏角色行为…一个模式搞定所有状态驱动型逻辑! 经典场景:订单状态管理 假设你在开发一个外卖App,订单有以下状态: 等待接单已接单配送中已完成已取消 每个状态下: 显示的UI不同可执行的…

数据库9:数据库字符编码调整与校队(排序)规则

一.常用字符编码 1.ASCII编码 用一个字节表示一个字符 2.ANSI编码 每个国家为了显示本国的语言而对ASCII码进行了拓展 用两个字节表示一个汉字,中国的ANSI编码是GB2312编码(简体),日本的ANSI编码是JIS编码,台湾的A…

人脸活体识别4:Android实现人脸眨眼 张嘴 点头 摇头识别(可实时检测)

人脸活体识别4:Android实现人脸眨眼 张嘴 点头 摇头识别(可实时检测) 目录 人脸活体识别4:Android实现人脸眨眼 张嘴 点头 摇头识别(可实时检测) 1. 前言 2.人脸活体识别方法 (1)基于人脸动作的检测​​ (2&…