一、nginx(engine x)原理

角色: 分发器
任务: 接受请求、分发请求、响应请求。
功能模块:
  1)ngx_http_upstream_module:基于应用层(七层)分发模块
  2)ngx_stream_core_module:基于传输层(四层)分发模块(1.9开始提供该功能)
Nginx集群: 虚拟主机+反向代理+upstream分发模块组成
  虚拟主机:接收和响应请求
  反向代理:带领用户去数据服务器拿数据。
  upstream:告诉nginx去哪个数据服务器拿数据。
数据走向(请求处理流程)
  1)虚拟主机接受用户请求
  2)虚拟主机去找反向代理(问反向代理去哪拿数据)
  3)反向代理去找upstream
  4)upstream告诉一个数据服务器IP
  5)Nginx去找数据服务器,并发起用户的请求
  6)数据服务器接受请求并处理请求
  7)数据服务器响应请求给Nginx
  8)Nginx响应请求给用户

二、多台nginx负载均衡(早期方案,受主入口限制)

1、每台nginx都有公网地址,在域名处设置同个域名多个指向,最简单实现轮洵。但故障切负会慢一点。
2、一台公网nginx通过upstream功能,轮洵、ip、url多方式分发到内网多台nginx。但公网的nginx如果down机的话,内网全段。
3、一对公网nginx加三个公网ip,通过keepalive实现高可用,再upstream到内网
一般来说,上面1、2、3种方法基本可以解决,建议用2或3;

三、nginx集群:再加一层负载均衡LVS/F5

在这里插入图片描述
  在keepalived+nginx的主备容灾高可用的架构中,nginx是作为外部访问系统的唯一入口,理论上一台nginx的最大并发量可以高达50000,但是当并发量更大的时候,keepalived+nginx的高可用机制是没办法满足需求的,因为keepalived+nginx的架构中确确实实是一台nginx在工作,只有当master宕机或异常时候,备份机才会上位。那么如何解决更大的高并发问题呢,也许会问能不能搭建nginx集群,直接对外提供访问?
很显然这是欠妥当的,因为当nginx作为外部的唯一访问入口,没办法直接以集群的形式对外提供服务,没有那么多的公网ip资源可用,既太浪费也不友好。但是在内网环境下,是可以用nginx集群(nginx横向扩展服务集合)的。当然总得有一个对外入口,所以需要在nginx集群之上,再加一层负载均衡器,作为系统的唯一入口。

四、LVS(Linux Virtual Server)介绍

  意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
  运行 lPVS软件的服务器,在整个负载均衡集群中承担一调度角色 软件的服务器,(即向真实服务器分配从客户端过来的请求。LVS中的调度方法有三种 :NAT(Network Address Translation网络地址转换)、TUN(tunnel 隧道)、DR(direct route 直接路由)

1、LVS-DR 模式(direct route 直接路由)

            在这里插入图片描述
  请求由LVS接受,由真实提供服务的服务器(RealServer, RS)直接返回给用户,返回的时候不经过LVS。
  DR模式下需要LVS服务器和RS绑定同一个VIP(虚拟IP), 一个请求过来时,LVS只需要将网络帧的MAC地址修改为某一台RS的MAC,该包就会被转发到相应的RS处理,注意此时的源IP和目标IP都没变,RS收到LVS转发来的包,发现MAC是自己的,发现IP也是自己的,于是这个包被合法地接受,而当RS返回响应时,只要直接向源IP(即用户的IP)返回即可,不再经过LVS。
DR模式下,lvs接收请求输入,将请求转发给RS,由RS输出响应给用户,性能非常高。
它的不足之处是要求负载均衡器与RS在一个物理段上

2、LVS-NAT模式(Network Address Translation网络地址转换)

            在这里插入图片描述

   NAT(Network Address Translation)是一种外网和内网地址映射的技术。NAT模式下,LVS需要作为RS的网关,当网络包到达LVS时,LVS做目标地址转换(DNAT),将目标IP改为RS的IP。RS接收到包以后,处理完,返回响应时,源IP是RS IP,目标IP是客户端的IP,这时RS的包通过网关(LVS)中转,LVS会做源地址转换(SNAT),将包的源地址改为VIP,对于客户端只知道是LVS直接返回给它的。
NAT模式请求和响应都需要经过lvs,性能没有DR模式好

3、LVS-TUN模式(tunnel 隧道)

            在这里插入图片描述

TUN模式是通过ip隧道技术减轻lvs调度服务器的压力,许多Internet服务(例如WEB服务器)的请求包很短小,而应答包通常很大,负载均衡器只负责将请求包分发给物理服务器,而物理服务器将应答包直接发给用户。所以,负载均衡器能处理很巨大的请求量。相比NAT性能要高的多,比DR模式的优点是不限制负载均衡器与RS在一个物理段上。但是它的不足需要所有的服务器(lvs、RS)支持"IP Tunneling"(IP Encapsulation)协议。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐