负载均衡 LVS nginx

LVS

参考来源:https://www.cnblogs.com/gaoxu387/p/7941381.html

四层负载均衡 IP负载均衡技术

工作模式

工作模式

工作原理

优点

缺点

NAT

(Network Address Translation)即网络地址转换

请求的报文和响应的报文都需要通过 LB 进行ip地址改写

 

每台内部的 realserver 服务器的网关地址必须是调度器 LB 的内网地址

集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址。

扩展性有限

负载均衡器将成为整个系统的瓶颈

DR

直接路由模式

在调度器 LB 上修改数据包的目的 MAC 地址实现转发

 

RS 节点和调度器 LB 只能在一个局域网里面(原因:过 MAC 地址改写机制实现转发)

 

RS 主机需要绑定 VIP 地址在 LO 接口(掩码32 位)上

负载均衡器只是分发请求,应答包通过单独的路由方法返回给客户端

 

可以使用大多数操作系统做为物理服务器。

 

DR模式的效率很高,但是配置稍微复杂一点

所有 RS 节点和调度器 LB 只能在一个局域网里面。

TUN

隧道模式

报文的首部再封装一层IP报文,将源地址改为DIP,目标地址改为RIP

 

所有的 realserver 机器上面绑定 VIP 的 IP 地址

 

不需要 lvs vip 跟 realserver 在同一个网段内

负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户

RS节点需要合法IP,这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议,服务器可能只局限在部分Linux系统上。

LVS调度算法

在内核中的连接调度算法上,IPVS已实现了以下八种调度算法:

  • 轮叫调度(Round-Robin Scheduling)

  • 加权轮叫调度(Weighted Round-Robin Scheduling)

  • 最小连接调度(Least-Connection Scheduling)

  • 加权最小连接调度(Weighted Least-Connection Scheduling)

  • 基于局部性的最少链接(Locality-Based Least Connections Scheduling)

  • 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)

  • 目标地址散列调度(Destination Hashing Scheduling)

  • 源地址散列调度(Source Hashing Scheduling)

 

问题

答案

Nginx

免费的,开源的,高性能的 HTTP 服务器和反向代理,是一个Web服务器,也可以用作负载均衡器和 HTTP 缓存

Nginx 整体架构

参考:

https://mp.weixin.qq.com/s/1LG91dzPVcWLmRUrT3wUiA

一个主进程(master):不处理网络请求,主要负责调度工作进程(加载配置、启动工作进程、非停升级)

 

多个工作进程(worker):处理网络请求及响应,每个 worker 进程都可以同时处理数以千计的网络请求 。

Nginx 模块化设计

核心模块 :提供错误日志记录 、 配置文件解析 、 事件驱动机制 、 进程管理 等核心功能。

标准HTTP模块:提供 HTTP 协议解析相关的功能,比如:端口配置 、 网页编码设置 、 HTTP响应头设置 等等。

可选HTTP模块:主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,比如: Flash 多媒体传输 、解析 GeoIP 请求

邮件服务模块:用于支持 Nginx 的 邮件服务 ,包括对 POP3 协议、 IMAP 协议和 SMTP协议的支持。

第三方模块:是为了扩展 Nginx 服务器应用,完成开发者自定义功能,比如: Json 支持、 Lua 支持等。

Nginx的请求方式处理

多进程机制:主进程生成一个 子进程出来和客户端建立连接进行交互

好处:各个进程之间相互独立 ,不需要加锁,降低编程的复杂度,降低开发成本;进程互相之间不会影响,确保服务不会中断,从而将风险降到最低。

坏处:操作系统生成一个 子进程 需要进行 内存复制 等操作,在 资源 和 时间 上会产生一定的开销。当有 大量请求 时,会导致 系统性能下降 。

 

异步非阻塞机制:每个 工作进程 使用 异步非阻塞方式 ,可以处理多个客户端请求 。

工作进程 接收到客户端的请求以后,调用 IO 进行处理,如果不能立即得到结果,就去处理其他请求 (即为非阻塞 ),而客户端在此期间也无需等待响应 ,可以去处理其他事情(即为异步 )

当 IO 返回时,就会通知此工作进程,该进程得到通知,暂时挂起当前处理的事务去 响应客户端请求 。

Nginx事件驱动模型

  • 事件收集器:负责收集 worker 进程的各种 IO 请求;

  • 事件发送器:负责将 IO 事件发送到 事件处理器 ;

  • 事件处理器:负责各种事件的 响应工作 。

Nginx进程处理模型

  1. 主程序Master process启动后,通过一个 for 循环来接收和处理外部信号

  2. 主进程通过 fork() 函数产生 worker 子进程 ,每个 子进程 执行一个 for 循环来实现 Nginx 服务器 对事件的接收 和 处理 

 

 

 

 

Keepalived

基于VRRP协议((Virtual Router Redundancy Protocol ,虚拟路由器冗余协议))来实现的LVS服务高可用方案,可以利用其来避免单点故障。一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

Keepalived服务的工作原理:

  Keepalived高可用对之间是通过 VRRP进行通信的, VRRP是通过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主挂了的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。

  在 Keepalived服务对之间,只有作为主的服务器会一直发送 VRRP广播包,告诉备它还活着,此时备不会枪占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性.接管速度最快可以小于1秒。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值