nginx+lvs 知识总结

nginx和lvs

  • 一、nginx
    • 1.优点
    • 2.ngx_lua
    • 3.Nginx线程模型
  • 二、lvs
    • 1.优点
    • 2.IPVS
    • 3.内核layer-7交换机
  • 三、lvs和nginx的配合使用


一、nginx

1.优点

nginx作为一个强大的WEB服务器软件,有着高性能、高并发性和低内存占用的特点,拥有着强大的反向代理功能。使用nginx的配置文件简单、成本低廉、支持Rewrite重写、内置有健康检查功能、节省带宽且稳定性高。

2.ngx_lua

通过lua解释器集成进Nginx,用lua脚本实现业务逻辑。一、其能够高并发、非阻塞的处理各种请求;二、Lua内建协程,这样可以很好将异步回调转换成顺序调用的形式;三、每个协程都有一个独立的全局环境,继承于全局共享的、只读的“comman data”。
ngx_lua在处理10000个并发请求只需很小内存,平均每个请求只需2KB的内存。

3.Nginx线程模型

Nginx采用单Master多worker模型,worker进程采用单进程、非阻塞的事件模型来实现端口的监听及客户端请求的处理与响应。如果每个worker线程独享一个CPU,就不会出现同步问题。

二、lvs

1.优点

Lvs主要用在多服务器的负载均衡上,因为工作在网络四层,可以实现高性能,高可用的服务器集群技术,是采用同步请求转发的策略。
价格便宜,可以使用多个低性能的服务器组合成一个超级服务器。
使用简单,配置容易。
可以部署成集群,更加稳定可靠。

2.IPVS

实现了3种IP负载均衡技术
(vs/dr)
改写请求报文中的MAC地址,将请求发送到真正的服务器,真正服务器将响应直接返回客户,要求调度器和真实服务器都有网卡连在同一物理网络上。DR模式工作在二层,是通过直接修改mac帧中的目标mac地址,来实现数据转发功能。因为DR模式走的是mac层的协议,因此需要负载均衡服务和后端服务器在同一个二层(同一个广播域)之中。
(vs/nat)
调度器重写请求报文的目的地址,根据算法分派给后端的真实服务器,真实服务器在通过调度器将响应报文返回给客户。工作在TCP层,这时LVS的功能与其他四层负载均衡服务器类似,是通过NAT协议来修改数据包中的Source IP或者Dest IP地址,来实现负载均衡。在NAT模式下,上下行的流量都需要经过LVS,因此LVS的带宽可能成为瓶颈。
(vs/tun)
调度器将请求报文通过IP隧道转发给真实服务器,真实服务器直接将响应报文发给客户。在大量请求下,由于调度器只处理请求报文,最大吞吐量得到提高。工作在IP层:是通过在IP包的基础上再进行一次独立的IP封装,加入额外的IP头,来实现包转发功能,因此TUN协议又叫做IPIP协议。TUN模式是单臂流量,只有上行数据会经过LVS,下行数据则直接通过后端服务器发给用户。为了实现TU模式,后端服务器上需要支持IPIP协议,并绑定一个TUN设备和对应的VIP地址。

3.内核layer-7交换机

基于内核Layer-7交换, 在操作系统内核截获发送到用户层Webcache服务器的请求, 解析该请求, 根据一定的规则确定该请求的对象是否可缓存来决定是否在内核和用户空间的切换和报文复制,可以进一步提高每一台服务器的Cache命中率。

三、lvs和nginx的配合使用

因为lvs在第4层,工作在内核空间上,其性能高效,支持的并发量比nginx高,可以和keepalived部署成集群,将nginx作为lvs的节点机器,因为nginx在第7层,功能上要强于lvs。因为nginx单机存在瓶颈,配合lvs能够解决其单机网络带宽带来的问题,而且还可以在nginx上缓存静态资源。

你可能感兴趣的:(nginx,lvs,负载均衡)