从01开始 从01开始
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)

peterjxl

人生如逆旅,我亦是行人
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)
  • 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入门

    • JavaWeb
  • Spring

  • 主流框架

  • SpringMVC

  • SpringBoot

  • Java并发

  • Java源码

  • JVM

  • 韩顺平

  • Java
  • 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

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

在GitHub上编辑此页 (opens new window)
上次更新: 2023/4/20 09:11:31
Nginx配置动静分离
Nginx配置高可用(主从)

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

Theme by Vdoing | Copyright © 2022-2023 粤ICP备2022067627号-1 粤公网安备 44011302003646号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式