【运维】第03讲(上):Nginx 负载均衡常见架构及问题解析

这篇具有很好参考价值的文章主要介绍了【运维】第03讲(上):Nginx 负载均衡常见架构及问题解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实际上 Nginx 除了承担代理网关角色外还会应用于 7 层应用上的负载均衡,本课时重点讲解 Nginx 的负载均衡应用架构,及最常见的问题。

学前提示

Nginx 作为负载均衡是基于代理模式的基础之上,所以在学习本课时前,你需要对 Nginx 的代理、负载均衡的基本原理及 Nginx 负载均衡配置有基础的了解。有了这个基础以后,学习本课时的内容便会得心应手。

章节思维导图

这里我先画了一张思维导图,我们来一起看下本课计划讲解哪些内容。

【运维】第03讲(上):Nginx 负载均衡常见架构及问题解析,运维,nginx,负载均衡

首先会来讲一讲 Nginx 作为负载均衡在整体服务架构和网站服务架构里所扮演的角色,其次重点介绍 Nginx 作为负载均衡时遇到的一些常见问题,比如客户端 IP 地址获取问题、域名携带问题 等等。

Nginx 负载均衡应用架构

关于 Nginx 负载均衡应用架构在企业应用中主要有两种类型。

分层入口代理架构

【运维】第03讲(上):Nginx 负载均衡常见架构及问题解析,运维,nginx,负载均衡

第一类是分层入口代理架构(属于相对传统架构),我们可以对整个后台网站服务系统架构做一个分层。大体可以分为用户请求入口层,以及为用户请求提供逻辑处理的服务层和为用户提供真正相关数据的数据层。

如图所示,我们可以发现入口层是最接近用户请求的,所以在这一层中,Nginx 扮演着重要的角色——入口网关,并承担 7 层负载均衡(LB)的功能。如图所示入口层的 Nginx 之前还有一套 LB,LB 层的主要功能是为了 保证 Nginx 本身的高可用、或承担 TCP/IP 负载均衡功能,所以这里整个入口层的负载均衡模式是一个 4 层 LB+7 层 LB(Nginx),这套架构中把与业务服务的相关功能则由 Nginx 来处理。

哪一些业务服务相关功能交给 Nginx 作合适呢?比如在入口层我们会放一些和用户相关的信息,也比如之前讲过的动静分离(及实现分离网站页面的静态元素和动态元素) ,我们知道静态元素没有必要下沉到数据层获取,可以直接通过 Nginx 实现动态和静态的分流并由 Nginx 直接处理。另外,用户的访问控制、反爬虫等规则也是在入口层的 Nginx 实现的。

服务层同样也需要 Nginx , 来负载均衡实现上层请求应答上的高可用。

分层架构的最后一层是数据层,数据层中 Nginx 同样可以实现负载均衡,但数据层中通常使用的 Nginx 较少见,为什么呢?因为这一层更追求数据调用的效率,比如 Memcache、MySQL 等数据库调用更多是基于底层的协议请求,而非更上层的 HTTP 请求。

但如果如果追求 HTTP 的可靠性、和应用性,是可以借助 Nginx 的负载均衡实现的,如:可Redis 使用 Nginx 做反向代理,通过 Nginx 把前端发送的 HTTP 请求转换成 Redis 协议的请求方式去请求 Redis,这样就完成了 Redis 的反向代理。这种方式,企业可以很好控制Redis的监控、数据的一致性保障、及基于 Hash 算法稳定性保障。

总结 一下,Nginx 在分层架构里扮演了一个 7 层应用层负载均衡角色。随着软件架构和系统架构是不断演进变化,我们发现企业开始采用 K8s、Docker 这种轻量化、虚拟化部署;还有很多企业更加倾向于微服务架构,支持 set 化等。在这样的架构下,传统的分层负载均衡模式,促使改进去支持服务注册和发现。这个就是Jeson想介绍的第二种Nginx负载均衡模式。

服务注册发现代理架构

【运维】第03讲(上):Nginx 负载均衡常见架构及问题解析,运维,nginx,负载均衡

如图所示,图中重点列出了 Nginx 在注册发现场景中扮演的角色。同样,我们可以看到整个流量还是通过 Nginx 来做入口网关的,但是重要的一点是 Nginx 需要支持动态的发现和注册后端服务。

注册是指后端的应用程序(如图中的 App1~App4)需要去往前端的中心存储节点里面注册它的应用服务,当注册上报后,Nginx 动态发现并动态生成发现的配置,然后对入口网关代理负载均衡进行分流调整,我们可以发现在基于 K8s 和 Docker 这种部署模式业务入口网关就应用了这种架构。

两种负载均衡应用架构就讲完了,我们会发现两种架构最大的区别是后面一种支持后端服务的注册与发现。

接下来我们回顾下 Nginx 负载均衡配置。

常用配置

首先,我们先回顾Nginx基础负载均衡配置。

http {
        …
        upstream app_servers {
                 server ip1:port1;
                 server ip2:port2;
                 server ip3:port3;
        }
        server {
         …
              location / {
                      proxy_pass http://app_servers; 
              }
        ….
        }
}

在这里,将通过 Upstream 配置分发入口请求流量到了后台三个 IP 节点对应的端口服务。

这是一种常见的 Nginx 负载均衡配置,但是这样配置在实际企业应用时会发生一些问题,我们接下来就来讲解如何解决 Nginx 做负载均衡时的常见问题。文章来源地址https://www.toymoban.com/news/detail-562984.html

到了这里,关于【运维】第03讲(上):Nginx 负载均衡常见架构及问题解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第五次作业 运维高级 构建 LVS-DR 集群和配置nginx负载均衡

    1、基于 CentOS 7 构建 LVS-DR 群集。 LVS-DR模式工作原理 首先,来自客户端计算机CIP的请求被发送到Director的VIP。然后Director使用相同的VIP目的IP地址将请求发送到集群节点或真实服务器。然后,集群某个节点将回复该数据包,并将该数据包直接发送到客户端计算机(不经过direct

    2024年02月14日
    浏览(49)
  • 深入浅出 -- 系统架构之负载均衡Nginx反向代理

    一、Nginx反向代理-负载均衡  首先通过 SpringBoot+Freemarker 快速搭建一个 WEB 项目:springboot-web-nginx,然后在该项目中,创建一个 IndexNginxController.java 文件,逻辑如下: 在该 Controller 类中,存在一个成员变量: port ,它的值即是从 application.properties 配置文件中获取 server.port 值。

    2024年04月12日
    浏览(57)
  • 深入浅出 -- 系统架构之负载均衡Nginx的性能优化

       到这里文章的篇幅较长了,最后再来聊一下关于 Nginx 的性能优化,主要就简单说说收益最高的几个优化项,在这块就不再展开叙述了,毕竟影响性能都有多方面原因导致的,比如网络、服务器硬件、操作系统、后端服务、程序自身、数据库服务等,对于性能调优比较感兴

    2024年04月14日
    浏览(51)
  • 深入浅出 -- 系统架构之负载均衡Nginx跨域配置

       跨域问题在之前的单体架构开发中,其实是比较少见的问题,除非是需要接入第三方 SDK 时,才需要处理此问题。但随着现在前后端分离、分布式架构的流行,跨域问题也成为了每个Java开发必须要懂得解决的一个问题。 跨域问题产生的原因    产生跨域问题的主要原因就

    2024年04月10日
    浏览(58)
  • 深入浅出 -- 系统架构之负载均衡Nginx实现高可用

       线上如果采用单个节点的方式部署 Nginx ,难免会出现天灾人祸,比如系统异常、程序宕机、服务器断电、机房爆炸、地球毁灭....哈哈哈,夸张了。但实际生产环境中确实存在隐患问题,由于 Nginx 作为整个系统的网关层接入外部流量,所以一旦 Nginx 宕机,最终就会导致整

    2024年04月15日
    浏览(50)
  • 深入浅出 -- 系统架构之负载均衡Nginx大文件传输配置

       在某些业务场景中需要传输一些大文件,但大文件传输时往往都会会出现一些 Bug ,比如文件超出限制、文件传输过程中请求超时等,那么此时就可以在 Nginx 稍微做一些配置,先来了解一些关于大文件传输时可能会用的配置项: 配置项 释义 client_max_body_size 设置请求体允

    2024年04月12日
    浏览(74)
  • Spring Cloud Alibaba 微服务1,系统架构演变 + Nginx反向代理与负载均衡

    🏆作者简介: 哪吒 ,CSDN2022博客之星Top1、CSDN2021博客之星Top2、多届新星计划导师✌、博客专家💪 , 专注Java硬核干货分享,立志做到Java赛道全网Top N。 🏆本文收录于 Java基础教程系列(进阶篇) ,本专栏是针对大学生、初级Java工程师精心打造, 针对Java生态,逐个击破,

    2024年02月02日
    浏览(52)
  • 解决nginx的负载均衡下上传webshell的问题

    目录 环境 问题 访问的ip会变动      执行命令的服务器未知  上传大文件损坏 深入内网 解决方案 ps :现在已经拿下服务器了,要解决的是负载均衡问题, 以下是docker环境: 链接: https://pan.baidu.com/s/1cjMfyFbb50NuUtk6JNfXNQ?pwd=1aqw 提取码: 1aqw 在/root/AntSword-Labs-master/loadbalance/loadbalan

    2024年02月11日
    浏览(33)
  • 银河麒麟桌面操作系统V10-常见运维问题类别:外设管理 03

    目录 问题类别 3:外设管理 3.1 添加网络共享打印机后,无法进行打印 【适用版本】 【问题现象】 【解决方案】 方法 1:图形软件关闭防火墙。  方法 2:使用命令关闭防火墙。 3.2 系统设置共享打印机问题 【适用版本】 【问题现象】 【解决方案】 3.3 系统共享打印认证问

    2024年02月09日
    浏览(46)
  • 03-SpringCloud-Ribbon负载均衡

    SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的。 那么我们发出的请求明明是http://userservice/user/1,怎么变成了http://localhost:8081的呢? 为什么我们只输入了service名称就可以访问了呢?之前还要获取ip和端口。 显然有人帮我们根据service名称,获取到了服

    2024年02月03日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包