1、nginx概述nginx
在不少的大型网站都是用nginx来进行服务代理,那么nginx到底是什么,有什么做用呢? 在官网上是这样介绍的:
[HTML] 纯文本查看 复制代码
?
1
nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server.算法
翻译过来就是:nginx [engine x]是一个HTTP和反向代理服务器、一个邮件代理服务器和一个通用的TCP/UDP代理服务器。其实nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器,也是一个IMAP、POP三、SMTP代理服务器。nginx能够做为一个HTTP服务器进行网站的发布处理,另外nginx能够做为反向代理进行负载均衡的实现。
2、nginx的正向和反向代理
1.正向代理后端
所谓的代理,就是所想访问的目标资源对用户来讲是不可见的,而另外有一个角色拥有对目标资源的访问权限,进而用户能够经过这个代理角色来访问这个目标资源。例如:当咱们想去访问国外的某些网站,此时你会发现位于国外的某网站咱们经过浏览器是没有办法访问的,此时你们可能都会用一个操做FQ进行访问,FQ的方式主要是找到一个能够访问国外网站的代理服务器,咱们将请求发送给代理服务器,代理服务器去访问国外的网站,而后将访问到的数据传递给咱们!
2.反向代理浏览器
反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。 反向代理,其实客户端对代理是无感知的,由于客户端不须要任何配置就能够访问,咱们只须要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。经过下面的图片咱们能够看到正向代理和反向代理的不一样: 关于反向代理咱们能够用一个例子来进行阐述,如咱们熟知某宝网站,天天同时链接到网站的访问人数已经爆表,单个服务器远远不能知足人民日益增加的购买欲望了,此时就出现了一个你们耳熟能详的名词:分布式部署;也就是经过部署多台服务器来解决访问人数限制的问题;某宝网站中大部分功能也是直接使用nginx进行反向代理实现的。
3.反向代理的做用:(1)保证内网的安全,一般将反向代理做为公网访问地址,Web服务器是内网
(2)负载均衡,经过反向代理服务器来优化网站的负载缓存
3、nginx负载均衡
1.什么是负载均衡安全
在互联网早期,业务流量相对比较小,并且业务逻辑比较简单,单台服务器即可以知足基本的需求;可是随着互联网的发展,业务流量愈来愈大、业务逻辑也愈来愈复杂,单台机器的性能问题以及单点问题凸显了出来,所以须要多台机器来进行性能的水平扩展以及避免单点故障。可是要如何将不一样的用户的流量分发到不一样的服务器上面呢? 那么早期的解决方案是使用DNS作负载,经过给客户端解析不一样的IP地址,让客户端的流量直接到达各个服务器。可是这种方法有一个很大的缺点就是延时性问题,在作出调度策略改变之后,因为DNS各级节点的缓存并不会及时的在客户端生效,并且DNS负载的调度策略比较简单,没法知足业务需求,所以就出现了负载均衡。 客户端的流量首先会到达负载均衡服务器,由负载均衡服务器经过必定的调度算法将流量分发到不一样的应用服务器上面,同时负载均衡服务器也会对应用服务器作周期性的健康检查,当发现故障节点时便动态的将节点从应用服务器集群中剔除,以此来保证应用的高可用。 综上所述,负载均衡,其含义就是指将负载(工做任务)进行平衡、分摊到多个操做单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工做任务。负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、增强网络数据处理能力、增长吞吐量、提升网络的可用性和灵活性。
2.负载均衡的分类服务器
(1)硬件负载均衡 硬件负载均衡器的性能稳定,且有生产厂商做为专业的服务团队。但其成本很高,一台硬件负载均衡器的价格通常都在十几万到几十万,甚至上百万。知名的负载均衡器有F五、Array、深信服、梭子鱼等。 (2)软件负载均衡 软件负载均衡成本几乎为零,基本都是开源软件。例如,LVS、HAProxy、Nginx等。
3.负载均衡的算法网络
(1) 加权轮询(weight Round Robbin,默认,经常使用): 接收到的请求按照权重分配到不一样的后端服务器,即便在使用过程当中,某一台后端服务器宕机,Nginx会自动将该服务器剔除出队列,请求受理状况不会受到任何影响。 这种方式下,能够给不一样的后端服务器设置一个权重值(weight),用于调整不一样的服务器上请求的分配率;权重数据越大,被分配到请求的概率越大;该权重值,主要是针对实际工做环境中不一样的后端服务器硬件配置进行调整的。 (2)轮询(Round Robbin) 当服务器群中各服务器的处理能力相同时,且每笔业务处理量差别不大时,最适合使用这种算法。 轮循,按公约后的权重设置轮循比率。存在慢的提供者累积请求问题,好比:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,长此以往,全部请求都卡在调到第二台上。 (3)Random随机算法 按权重设置随机几率,在一个截面上碰撞的几率高,但调用量越大分布越均匀,并且按几率使用权重后也比较均匀,有利于动态调整提供者权重。 (4)最小链接(Least Connections)及加权最小链接(Weighted Least Connection) 有点相似轮询与加权轮询,最少链接是在多个服务器中,与处理链接数(会话数)最少的服务器进行通讯的算法。即便在每台服务器处理能力各不相同,每笔业务处理量也不相同的状况下,也可以在必定程度上下降服务器的负载。 加权最少链接为最少链接算法中的每台服务器附加权重的算法,该算法事先为每台服务器分配处理链接的数量,并将客户端请求转至链接数最少的服务器上。 (5)哈希算法 分为普通哈希和一致性哈希,相同参数的请求老是发到同一提供者。当某一台提供者挂时,本来发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引发剧烈变更。 (6)IP地址散列 经过管理发送方IP和目的地IP地址的散列,未来自同一发送方的分组(或发送至同一目的地的分组)统一转发到相同服务器的算法。当客户端有一系列业务须要处理而必须和一个服务器反复通讯时,该算法可以以流(会话)为单位,保证来自相同客户端的通讯可以一直在同一服务器中进行处理。
4.负载均衡的做用并发
(1)解决并发压力,提升应用处理性能(增长吞吐量,增强网络处理能力); (2)提供故障转移,实现高可用; (3)经过添加或减小服务器数量,提供网站伸缩性(扩展性); (4)安全防御;(负载均衡设备上作一些过滤,黑白名单等处理)
5.负载均衡的应用场景负载均衡
应用于高访问量的业务,横向扩张系统,消除单点故障等