从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 新闻合订本
    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 新闻合订本
    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • JavaSE

  • JavaSenior

  • JavaEE

  • JavaWeb

    • 服务器软件

      • 什么是服务器软件
      • Nginx 介绍
      • Nginx 的安装和启停
      • Nginx 配置
      • Nginx 配置反向代理
      • Nginx 配置多个反向代理
      • Nginx 配置负载均衡
      • Nginx 配置动静分离
      • Nginx 集群概念
        • 使用单台 Nginx 服务存在的问题
        • 什么是 Keepalived
        • 准备工作
      • Nginx 配置高可用(主从)
      • Nginx 原理
      • Nginx 日志管理
      • Nginx 手册
      • Nginx 系列完结
      • Tomcat 介绍
      • Tomcat 安装和启停
      • Tomcat 配置
      • Tomcat 部署项目
      • IDEA 新建 JavaWeb 项目
      • Tomcat 集群
    • 环境管理和配置管理-科普篇
    • Servlet 入门

  • Spring

  • 主流框架

  • SpringMVC

  • SpringBoot

  • Java
  • JavaWeb
  • 服务器软件
2023-04-17
目录

Nginx 集群概念

# 40.Nginx 集群概念

Nginx 可以实现负载均衡,那么 Nginx 本身能否实现负载均衡呢?当然可以,本文就来讲解下 Nginx 如何实现高可用。

‍

# 使用单台 Nginx 服务存在的问题

之前我们讲过,Nginx 可以实现负载均衡,将请求分发到服务器集群上:

​​

但这种结构有个问题:如果 Nginx 服务宕机了,那么用户就不能访问了服务了,毕竟谁也不能包装 Nginx 能一直运行下去,可能有突发的情况,例如内存爆了,CPU 超高,硬盘坏了,网络断了。。。

为此,我们可以搭建 Nginx 集群,这样即使某一台 Nginx 宕机了,也还有另一台 Nginx 提供服务,架构如下:

​​​​ ‍ 架构说明:

  1. 我们准备两台 Linux 服务器,然后分别搭建 Nginx,以实现 Nginx 集群
  2. 在有 2 台服务器,分别搭建 Tomcat,以实现 Tomcat 集群
  3. 每台 Nginx 会对两个 Tomcat 服务实现负载均衡
  4. 用户访问一个虚拟的 IP,然后通过某个软件分发到 Nginx 集群中的每一台服务器上(例如 keepalived )

顺便介绍下冷备、热备等概念:

  1. 由于我们从单机扩展到了集群,我们可以称其他服务器为最开始那台服务器的备份(backup),也叫备份服务器、从服务器,最开始的那台服务器称为主服务器
  2. 冷备就是指,备份服务器是关机的,当主服务器宕机后,冷备服务器会自动开机,然后会自动切换为使用冷备服务器,并且此时冷备服务器就相当于主服务器了。这种方式也叫主备、主从方式。
  3. 冷备和热备,可以统称为主备、主从方式。
  4. 双活:也叫双主,两台服务器都是活动的,都会处理请求。
  5. 多活:多台服务器都是活动的,都会处理请求。

具体采用以上哪种集群方式,得看实际情况讨论,笔者负责的一个系统访问量比较高,有 4 个 Nginx 服务器,4 个 Tomcat 服务器,采用多活的方式。 ‍ 接下来我们就试试主从集群搭建和双主集群搭建。 ‍

# 什么是 Keepalived

Keepalived 能做什么?简单来说就是安装后,可以配置其监控一些软件的状态,当有软件宕机后可以配置切换到另外一台软件等。而在故障节点恢复正常后,Keepalived 又可以自动将该服务节点重新加入集群中。

可以理解为启动一个路由的作用(相当于路标,告诉人们怎么走;在计算机中可以理解为告诉请求应该发到哪里) ‍ 比如 Keepalived + Nginx 可以实现这样的效果:

  1. 两台服务器上安装了 Nginx,然后再安装 Keepalived
  2. 配置 Keepalived
  3. 当有一台 Nginx 宕机后,自动切换到另一台上 ‍ 顺便说说虚拟 IP 的概念,可以理解为是一个虚拟的网卡,我们发送请求给这个 IP,它会根据配置情况分发到具体的 IP 上。Keepalived 实现切换的原理也是根据修改这个路由来实现的。

# 准备工作

为了模拟高可用,我们需要准备如下

  1. 两台 Nginx 服务器
  2. 分别安装 Keepalived
  3. 虚拟 IP

为了方便,我们这里仅仅演示用虚拟 IP 访问 Nginx 服务器,就不用 Tomcat 服务器了,并且重置下 Nginx 的配置文件,实得访问 Nginx 后访问的是首页。 ‍ 如果你使用 VirtualBox 或者 VMWare,可以通过复制的方式来搭建另一台服务器,省不少功夫。如果你会 Docker,则更方便了。注意,如果是云主机等,可能不能创建虚拟 IP ‍ 这里说下我的环境,方便后期的讲解

服务器 1:IP 地址 192.168.2.242

服务器 2:IP 地址 192.168.2.138

由于我使用的是复制的方式,因此两台服务器都已经安装好了

为了区分两个 Nginx,我们给每个 Nginx 的首页加上一些字,这样看到页面我们就知道访问的是哪个 Nginx 了: ‍ 在 192.168.2.242 上执行:

echo 192.168.2.242 >> /opt/nginx/html/index.html 
1

‍ 在 192.168.2.138 上执行:

echo 192.168.2.138 >> /opt/nginx/html/index.html 
1

然后分别安装 Keepalived。为了方便,这里直接用 yum 命令安装

yum -y install keepalived
1

安装后的位置:/etc/keepalived/​,并且里面有个配置文件 keepalived.conf​:

cd /etc/keepalived/
ll
-rw-r--r--. 1 root root 3598 10月  1 2020 keepalived.conf
1
2
3

后续我们配置主要就是修改这个文件。 ‍

上次更新: 2025/6/3 09:31:54
Nginx 配置动静分离
Nginx 配置高可用(主从)

← Nginx 配置动静分离 Nginx 配置高可用(主从)→

最近更新
01
新闻合订本 2025-10
10-31
02
2025 年 10 月记
10-30
03
用 AI 批量优化思源笔记排版
10-15
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式