关于nginx负载均衡和反向代理的讲解

目录
  • 负载均衡
    • 负载均衡分类
      • 1、DNS负载均衡
      • 2、IP负载均衡
      • 3、链路层负载均衡
      • 4、混合型负载均衡
    • 负载均衡算法
      • 1 轮询
      • 2 随机
      • 3 最少链接
      • 4 Hash(源地址散列)
      • 5 加权
  • 反向代理

负载均衡

负载均衡是有多台服务器以对称的方式组成一个服务器集合,每台服务器都能具有等价的地位,都可以单独对外提供服务而无需其他服务器辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地相应用户的请求。均衡负载能够平均分配呵护请求到服务器阵列,快速获取数据,解决大量并发访问服务问题。

负载均衡分类

1、DNS负载均衡

在DNS服务器,配置多个A记录,这些A记录对应的服务器构成集群

优点

  • 1、使用简单:负载均衡工作,交给DNS服务器处理,省掉了负载均衡服务器维护的麻烦
  • 2、提高性能:可以支持基于地址的域名解析,解析成距离用户最近的服务器地址,可以加快访问速度,改善性能。

缺点:

  • 1、可用性差:DNS解析是多级解析,新增/修改DNS后,解析时间较长,解析过程中,用户访问网站将失败
  • 2、扩展性低:DNS负载均衡的控制权在域名商哪里,无法对其做更多的改善和扩展
  • 3、维护性差:也不能反应服务器的当前运行状态;支持算法少;不能区分服务器的差异,(不能根据系统与服务器的状态来判断负载)

2、IP负载均衡

在网络层通过修改请求目标地址进行负载均衡
用户请求数据包,到达负载均衡服务器后,负载均衡服务器在操作系统内核进程获取网络数据包,根据负载均衡算法得到一台真实的服务器地址,然后将请求的目标地址修改为获得的真实的IP地址。
真实服务器处理完成后,相应数据包回到负载均衡服务器,负载均衡服务器,再将数据包源地址修改为自身的IP地址,发送给用户浏览器。

IP负载均衡,真实物理服务器返回给负载均衡服务器,存在两种方式:

  • (1)负载均衡服务器在修改目的ip地址的同时修改源地址。将数据包源地址设为自身盘,即源地址转换(snat)。
  • (2)将负载均衡服务器同时作为真实物理服务器集群的网关服务器。

优点

  • (1)在内核进程完成数据分发,比在应用层分发性能更好;

缺点

  • (1)所有请求响应都需要经过负载均衡服务器,集群最大吞吐量受限于负载均衡服务器网卡带宽;

3、链路层负载均衡

在通信协议的数据链路层修改mac地址,进行负载均衡。
数据分发是,不修改IP地址,指修改目标的mac地址,配置真实物理服务器集群所有机器虚拟ip和负载均衡服务器IP地址一致,达到不修改数据包的源地址和目标地址,进行数据分发的目的。

实际处理服务器ip和数据请求目的ip一致,不需要经过负载均衡服务器进行地址转换,可将响应数据包直接返回给用户浏览器,避免负载均衡服务器网卡带宽成为瓶颈。也称为直接路由模式(DR模式)。如下图:

优点:性能好
缺点:配置复杂

4、混合型负载均衡

由于多个服务器群内硬件设备、各自的规模、提供的服务等的差异,可以考虑给每个服务器群采用最合适的负载均衡方式,然后又在这么多服务器集群间再一次负载均衡或集群起来以一个整体向外界提供服务(把多个服务器集群当做一个新的服务器群),从而到达最佳的性能。

方式1,如下图:

以上模式适合有动静分离的场景,反向代理服务器(集群)可以起到缓存和动态请求分发的作用,当时静态资源缓存在代理服务器时,则直接返回到浏览器。如果动态页面则请求后面的应用负载均衡。
方式2,如下图:

以上场景适合动态请求场景。

负载均衡算法

常用的负载均衡算法有,轮询,随机,最少链接,源地址散列,加权等方式;

1 轮询

将所有请求,依次分发到每台服务器上,适合服务器硬件同相同的场景。

优点:服务器请求数目相同;

缺点:服务器压力不一样,不适合服务器配置不同的情况;

2 随机

请求随机分配到各个服务器。
优点:使用简单;

缺点:不适合机器配置不同的场景;

3 最少链接

将请求分配到连接数最少的服务器(目前处理请求最少的服务器)。

优点:根据服务器当前的请求处理情况,动态分配;

缺点:算法实现相对复杂,需要监控服务器请求连接数;

4 Hash(源地址散列)

根据IP地址进行Hash计算,得到IP地址。

优点:将来自同一IP地址的请求,同一会话期内,转发到相同的服务器;实现会话粘滞。

缺点:目标服务器宕机后,会话会丢失;

5 加权

在轮询,随机,最少链接,Hash'等算法的基础上,通过加权的方式,进行负载服务器分配。

优点:根据权重,调节转发服务器的请求数目;

缺点:使用相对复杂;

反向代理

反向代理是指代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就是表现为一个服务器。

到此这篇关于关于nginx负载均衡和反向代理的讲解的文章就介绍到这了,更多相关nginx负载均衡和反向代理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解Nginx反向代理和负载均衡部署指南

    Nginx反向代理和负载均衡部署指南,具体如下: 1.  安装 1) 从Nginx官网下载页面(http://nginx.org/en/download.html)下载Nginx最新版本(目前是1.5.13版本)安装包: 2)  解压后复制到部署目录. 2.  启动和停止Nginx Nginx目前只支持命令行操作,操作前先进入Dos命令环境,并进入Nginx部署目录. 1) 启动Nginx:start nginx 2)  停止Nginx:nginx -s stop 3)修改配置后重启:nginx

  • Nginx使用反向代理实现负载均衡过程解析

    简介 基于docker容器以及docker-compose,所以需要自学docker在linux环境的基本使用 使用两个tomcat作为负载均衡的服务端 1.使用docker拉取tomcat和nginx镜像 拉取nginx参考 拉取tomcat参考 2.使用docker-compose创建两个tomcat服务 新建tomcat目录,在该目录下创建docker-compose.yml文件,输入如下内容: version: '3' services: tomcat1: image: tomcat c

  • 详解Nginx HTTP负载均衡和反向代理配置

    当前大并发的网站基本都采用了Nginx来做代理服务器,并且做缓存,来扛住大并发.先前也用nginx配置过简单的代理,今天有时间把整合过程拿出来和大家分享,不过其中大部分也是网上找来的资源. nginx完整的反向代理代码如下所示  : [root@data conf]# vim nginx.conf user www www; worker_processes 10; error_log /var/log/nginx/nginx_error.log; pid logs/nginx.pid; wor

  • 详解 Nginx 负载均衡和反向代理配置和优化

    Nginx 负载均衡和反向代理配置和优化 DNS 轮询方式: 介绍: DNS 轮询是指一个域名可以绑定到多个的 ip 服务器上, 用户在访问的时候 dns轮询访问这几个 ip 的服务器, 达到负载均衡的目的. 可以使用 linux 命令 dig domain 来查看情况. 缺点: 1. 可靠性低. 如果某一个服务器宕机了, 那么dns 在轮询到这个服务器的话是不会有响应的,即使去掉此 ip , 那么个电信服务商的 dns 是存在缓存, 在一定的时间内也是可以访问到此服务器的.尽管在一定程度上解决

  • Nginx反向代理及负载均衡如何实现(基于linux)

    这里来试验下nginx的反向代理. 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器. 在我们的java项目中的体现就是,通过80端口访问,Nginx接收到,然后进行转发给tomcat服务器,再将服务器的结果给返回. 这里需要修改nginx.conf文件. upstream backend { #代理的IP

  • 浅谈Nginx七层反向代理和负载均衡

    1.介绍 1.1 Nginx不仅是一个出色的web软件,其七层代理和负载均衡也是相当出色.Nginx做前端代理,当用户请求服务时,可以根据url进行判断,然后分配到不同的后台webserver上. 1.2 Nginx的负载均衡实现原理:首先在http模块中配置使用upstream模块定义后台的web server的池子,名为proxy-web,在池子中我们可以添加多台后台webserver,其中状态检查.调度算法都是在池子中配置:然后在serverr模块中定义虚拟主机,但是这个虚拟主机不指定自己

  • Nginx反向代理与负载均衡实战篇

    反向代理 反向代理指的是以代理服务器接收用户的的访问请求,代理用户向内部服务器重新发起请求,最后把内部服务器的响应信息返回给用户.这样,代理服务器对外就表现为一台服务器,而访问内部服务器的客户端用的就是代理服务器,而不是真实网站访问用户. 为什么使用反向代理 可以起到保护网站安全的作用,因为任何来自Internet的请求都必须先经过代理服务器. 通过缓存静态资源,加速Web请求. 实现负载均衡 反向代理例子 环境说明 假如有AB两个服务器.A服务器提供web资源,并且只给内网访问.B服务器有两块

  • 关于nginx负载均衡和反向代理的讲解

    目录 负载均衡 负载均衡分类 1.DNS负载均衡 2.IP负载均衡 3.链路层负载均衡 4.混合型负载均衡 负载均衡算法 1 轮询 2 随机 3 最少链接 4 Hash(源地址散列) 5 加权 反向代理 负载均衡 负载均衡是有多台服务器以对称的方式组成一个服务器集合,每台服务器都能具有等价的地位,都可以单独对外提供服务而无需其他服务器辅助.通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地相应用户的请求.均衡负载能够平均分配呵护请求到服务器阵

  • Nginx配置参数中文说明详解(负载均衡与反向代理)

    PS:最近在看<<高性能Linux服务器构建实战>>的Nginx章节,对其nginx介绍的非常详细,现把经常用到的Nginx配置参数中文说明摘录和nginx做负载均衡的本人真实演示实例抄录下来以便以后查看! Nginx配置参数中文详细说明 #定义Nginx运行的用户和用户组 user www www; # #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; # #全局错误日志定义类型,[ debug | info | notice | war

  • Spring boot2X负载均衡和反向代理实现过程解析

    这篇文章主要介绍了Spring boot2X负载均衡和反向代理实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 zuul 是netflix开源的一个API Gateway 服务器 所有从设备或网站来的请求都会经过Zuul到达后端的Netflix应用程序. 作为一个边界性质的应用程序,Zuul提供了动态路由.监控.弹性负载和安全功能. 实现反向代理 1.服务注册发现中心Consul 启动 consul agent -dev 2.服务端

  • 理解web服务器和数据库的负载均衡以及反向代理

    但是若该网站平均每秒的请求是200多次,那么问题就来了:这已经是最好的web服务器了,我该怎么办?同样的情景也适用于数据库.要解决这种问题,就需要了解"负载均衡"的原理了. web服务器如何做负载均衡 为web服务器做负载均衡适用的的较多的方式是DNS重定向和反向代理,其他的方式原理也是很类似. 我们多次ping一下百度,会发现回复的IP会有所不同,例如第一次的结果为: 复制代码 代码如下: 正在 Ping baidu.com [220.181.111.86] 具有 32 字节的数据:

  • nginx作grpc的反向代理踩坑总结

    背景 众所周知,nginx是一款高性能的web服务器,常用于负载均衡和反向代理.所谓的反向代理是和正向代理相对应,正向代理即我们常规意义上理解的"代理":例如正常情况下在国内是无法访问google的,如果我们需要访问,就需要通过一层代理去转发.这个正向代理代理的是服务端(也就是google),而反向代理则相反,代理的是客户端(也就是用户),用户的请求到达nginx后,nginx会代理用户的请求向实际的后端服务发起请求,并将结果返回给用户. (图片来自维基百科) 正向代理和反向代理实际上

  • Linux下Nginx负载均衡多个tomcat配置的方法步骤

    Linux下安装nginx和安装多个tomcat的方法这里不过多介绍,不清楚的可参考: Linux安装nginx: https://www.jb51.net/article/159519.htm Linux安装多个tomcat: https://www.jb51.net/article/159521.htm 当我们服务器安装好了nginx,并且安装了多台tomcat,那么我们现在可以试着玩玩nginx的负载均衡. 先简单介绍我的运行环境 一台阿里云服务器, Linux系统,jdk1.8, 已安装

  • Keepalived实现Nginx负载均衡高可用的示例代码

    第一章:keepalived介绍 VRRP协议 目的就是为了解决静态路由单点故障问题的 第二章: keepalived工作原理 2.1 作为系统网络服务的高可用功能(failover) keepalived高可用功能实现的基本原理为: 两台主机同时安装好keepalived软件并启动服务,开始正常工作时 角色为Master的主机获得所有资源并对用户提供服务 角色为Backup的主机作为Master主机的热备; 当角色为Master的主机失效或出现故障时 角色为Backup的主机将自动接管Mast

  • Nginx负载均衡以及动静分离的原理与配置

    目录 一.Nginx实现负载均衡原理 二.Nginx动静分离原理 Nginx 静态处理优势 三.Nginx + Tomcat 动静分离.负载均衡配置步骤 环境准备: 动静分离配置 Nginx 负载均衡模式 总结 一.Nginx实现负载均衡原理 Nginx实现负载均衡是通过反向代理实现 Nginx服务器作为前端,Tomcat服务器作为后端,web页面请求由Nginx服务来进行转发. 但是不是把所有的web请求转发,而是将静态页面请求Nginx服务器自己来处理,动态页面请求,转发给后端的Tomcat

随机推荐