nginx高可用集群搭建

本文介绍nginx高可用集群的搭建。利用keepalived实时检查nginx进程是否存活、keepalived的虚拟ip技术,达到故障转移的目的。终端用户通过访问虚拟ip,感知不到实际发生的故障。架构图如下:
在这里插入图片描述

0、环境

  • Ubuntu:22.04.2 lts
  • nginx: 1.18.0
  • keepalived:2.2.4
  • 虚拟机:vmware

1、规划

分别新建两个虚拟机,虚拟机的ip和端口规划如下:

序号ipport虚拟ip默认
A192.169.99.10080192.168.99.180
B1921.68.99.12080192.168.99.180

注意:虚拟ip就是我们后期统一的访问地址。

2、结点A安装nginx

sudo apt install nginx

等待安装完成,再启动:

sudo systemctl start nginx

虚拟机验证是否安装成功:

curl http://localhost/

宿主机浏览器验证,http://192.168.99.100/,效果如下:
在这里插入图片描述

宿主机如果访问成功,说明虚拟机1上的nginx搭建成功。

2.1、修改nginx首页

为了便于测试,我们修改一下首页。打开nginx.conf(位于/etc/nginx),找到server 80的配置段,如果找不到80的配置段,仔细看看include配置。通过一系列的跟踪,我这里nginx首页的位置在: /var/www/html/index.nginx-debian.html
打开这个文件,最后加一句,能让我们看出区别就行。
在这里插入图片描述

3、结点B安装nginx

结点B安装nginx和A相同,此处不在赘述。记得安装完成后,通过宿主机浏览器访问一下对应的地址,有成功提示,则说明安装成功。

4、结点A安装keepalived

sudo apt install keepalived

等待安装完成。

4.1、配置

cd /etc/keepalived
# 看一下有没有keepalived.conf文件,没有就新建。

sudo vim keepalived.conf 

keepalived.conf文件配置如下:

# Configuration File for keepalived
global_defs {
   router_id keepalived_01  # 名字自己起
}

vrrp_script chk_nginx {
   # 具体的脚本,后面有具体内容,功能就是检查nginx进程是否存在,不存在就启动
   script "/etc/keepalived/nginx_check.sh"
   interval 2 # 2s执行一次 
   weight -20 # 失败一次 则优先级 -20
}

vrrp_instance VI_1 {
    state MASTER     # 主机
    interface ens33  # 网卡名字,不知道就ifconfig看一下
    virtual_router_id 41  # 保证唯一,并且与备机一致
    priority 100
    advert_int 1
    authentication {
        auth_type PASS   # 验证类型, 与备机一致
        auth_pass 1234   # 密码, 与备机一致
    }
    virtual_ipaddress {
        192.168.99.180   # 虚拟地址,主、备机入口,必须一致
    }
    # 指定脚本
	 track_script {
      chk_nginx
    }

nginx_check.sh的脚本代码:

#!/bin/bash
status=$(ps -C nginx --no-heading|wc -l)
if [ "${status}" = "0" ]; then
    # 尝试启动一次
    systemctl start nginx
    # 再次检查ngixn 进程
    status2=$(ps -C nginx --no-heading|wc -l)
    if [ "${status2}" = "0"  ]; then
        # 关闭 keepalived 
        systemctl stop keepalived
    fi
fi

4.2、启动keepalived

sudo systemctl start keepalived

5、结点B安装keepalived

结点B和A安装和配置完全一样,此处不再赘述。

6、测试

访问虚拟ip,http://localhost:80/, 效果如下:
在这里插入图片描述
关闭A机的nginx,刷新浏览器,发现效果如上图。原因是,我们的脚本里检查nginx进程是否存在,不存在就重启。我们直接关闭A主机,再次刷新浏览器,效果如下:
在这里插入图片描述
达到了我们故障转移的目的。
OK,就这样了,有问题给我留言,我们共同进步。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UE5材质节点Distance

Distance可以计算两个物体间的距离,可以用来做过渡效果 当相机和物体距离3000的时候,就会渐渐从蓝过渡到红色,除以500是为了平滑过渡

CS·GO搬砖流程详细版

说简单点,就是Steam买了然后BUFF上卖,或许大家都知道这点,但就是一些操作和细节问题没那么明白。我相信,你看完这篇文章以后,至少会有新的认知。 好吧,废话少说,直接上实操! 首先准…

【Cocos TypeScript 零基础 3.1】

目录 场景跳转 场景跳转 把新建好的TS文件与场景绑定 选中 场景 或 camera 拖进右边的 属性检查器 双击T文件,进入编辑 至于用什么IDE看个位朋友高兴 我这里有 VScode ,先用这个,老师也没有推荐 (老师也用的是这个) VScode UI 也有中文包,请自行上网搜索 打开创建的TS文件后…

分析服务器 systemctl 启动gozero项目报错的解决方案

### 分析 systemctl start beisen.service 报错 在 Linux 系统中,systemctl 是管理系统和服务的主要工具。当我们尝试重启某个服务时,如果服务启动失败,systemctl 会输出错误信息,帮助我们诊断和解决问题。 本文将通过一个实际的…

pd虚拟机 Parallels Desktop 20 for Mac 安装教程【支持M芯片】

文章目录 效果图一、下载软件二、安装运行⚠️注意事项:1、前往 系统设置–> 隐私与安全性 –> 完整磁盘访问权限,中允许终端:2、安装运行【ParallelsDesktop-20.1.2-55742.dmg】,运行【安装.app】3、将【Patch】文件夹拖到…

回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测 数据准备&#x…

JAVA创建绘图板JAVA构建主窗口鼠标拖动来绘制线条

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默, 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把…

CSS层叠样式表

目标 能够说出什么是CSS能够使用CSS基础选择器能够设置字体样式能够设置文本样式能够说出CSS的三种引入方式能够使用Chrome调试工具调试样式 目录 CSS简介CSS基础选择器CSS字体属性CSS文本属性CSS的引入方式综合案例Chrome调试工具 1.1 HTML的局限性 说起HTML,…

Win32汇编学习笔记03.RadAsm和补丁

Win32汇编学习笔记03.RadAsm和补丁-C/C基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net 扫雷游戏啊下补丁 在扫雷游戏中,点关闭弹出一个确认框,确认之后再关闭,取消就不关闭 首先第一步就是确认关闭按钮响应的位置,一般都是 WM_CLOSE 的消息 ,消息响应一般都在过…

深入Android架构(从线程到AIDL)_08 认识Android的主线程

目录 3、 认识Android的主线程(又称UI线程) 复习: 各进程(Process)里的主线程​编辑 UI线程的责任: 迅速处理UI事件 举例 3、 认识Android的主线程(又称UI线程) 复习: 各进程(Process)里的主线程 UI线程的责任: 迅速处理UI事…

4.CSS文本属性

4.1文本颜色 div { color:red; } 属性值预定义的颜色值red、green、blue、pink十六进制#FF0000,#FF6600,#29D794RGB代码rgb(255,0,0)或rgb(100%,0%,0%) 4.2对齐文本 text-align 属性用于设置元素内文本内容的水平对齐方式。 div{ text-align:center; } 属性值解释left左对齐ri…

数据挖掘——支持向量机分类器

数据挖掘——支持向量机分类器 支持向量机最小间隔面推导基于软间隔的C-SVM非线性SVM与核变换常用核函数 支持向量机 根据统计学习理论,学习机器的实际风险由经验风险值和置信范围值两部分组成。而基于经验风险最小化准则的学习方法只强调了训练样本的经验风险最小…

慧集通iPaaS集成平台低代码培训-基础篇

训练使用素材: 1.数据源: 单号业务日期工厂仓库物料单位数量批次0100012022-5-1210031001030001kg500202304150100012022-5-1210031001030001kg122202304150100012022-5-1210031001030001kg1250202304150100012022-5-1210031001030002kg130202304110100…

深入理解计算机系统—虚拟内存(一)

一个系统中的进程是与其他进程共享 CPU 和主存资源的。然而,共享主存会形成特殊的挑战。随着对 CPU 需求的增长,进程以某种合理的平滑方式慢了下来。但是如果太多的进程需要太多的内存,那么它们中的一些就根本无法运行。 为了更加有效地管理内…

Unresolved plugin: ‘org.apache.maven.plugins:maven-site-plugin:3.12.1‘

问题 使用idea 社区办加载项目提示下面问题: Unresolved plugin: org.apache.maven.plugins:maven-site-plugin:3.12.1 问题解决 maven插件地址: https://maven.apache.org/plugins/maven-dependency-plugin/plugins.html Maven 中央仓库地址&#…

如何在 Windows 10/11 上录制带有音频的屏幕 [3 种简单方法]

无论您是在上在线课程还是参加在线会议,您都可能需要在 Windows 10/11 上录制带有音频的屏幕。互联网上提供了多种可选方法。在这里,本博客收集了 3 种最简单的方法来指导您如何在 Windows 10/11 上使用音频进行屏幕录制。请继续阅读以探索! …

spring中使用@Validated,什么是JSR 303数据校验,spring boot中怎么使用数据校验

文章目录 一、JSR 303后台数据校验1.1 什么是 JSR303?1.2 为什么使用 JSR 303? 二、Spring Boot 中使用数据校验2.1 基本注解校验2.1.1 使用步骤2.1.2 举例Valid注解全局统一异常处理 2.2 分组校验2.2.1 使用步骤2.2.2 举例Validated注解Validated和Vali…

AWS K8s 部署架构

Amazon Web Services(AWS)提供了一种简化的Kubernetes(K8s)部署架构,使得在云环境中管理和扩展容器化应用变得更加容易。这个架构的核心是AWS EKS(Elastic Kubernetes Service),它是…

设计模式 结构型 适配器模式(Adapter Pattern)与 常见技术框架应用 解析

适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口,从而使原本因接口不兼容而无法一起工作的类能够协同工作。这种设计模式在软件开发中非常有用,尤其是在需要集成…

MCU芯片是什么意思_有哪些作用?

MCU(Microcontroller Unit)芯片,即微控制单元,是一种集成了中央处理器(CPU)、存储器(ROM、RAM)以及各种外设接口(如输入输出引脚、定时器、串口等)的集成电路芯片。它通过超大规模集成电路技术,将具有数据处理能力的中央处理器、随机存储器、…