nginx负载均衡如何实现www.129028.com金沙?

日期:2020-05-07编辑作者:Web前端

什么是nginx?

Nginx是一个免费的,开源的,高性能的服务器和反向代理服务器软件,同时它也可以为IMAP和POP3服务器代理,以其高性能,稳定性,丰富的功能,结构简单,低资源消耗的特性换来广大运维者所喜爱。

Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的Web和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。

Nginx与传统的服务器不同,不依赖线程来处理请求。相反,它使用一个更可扩展事件驱动架构(异步)。这种结构资源消耗较小,但更重要的是,可以承受较大的请求负荷。即使你不希望处理成千上万的请求,你仍然可以受益于Nginx的高性能和小的内存占用,以及其丰富的功能。

在高连接并发的情况下,Nginx是Apache服务器不错的替代品。

 

nginx服务器基本特征处理静态文件,索引文件以及自动索引;打开文件描述符缓冲无缓存的反向代理加速,简单的负载均衡和容错FastCGI,简单的负载均衡和容错模块化的结构。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或 其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待支持SSL 和 TLSSNInginx常用功能

Nginx的反向代理:

1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。

反向代理指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接到客户端,此时代理服务器对外就表现为一个服务器,而此种工作模式类似于LVS-NET模型。

Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。

反向代理也可以理解为web服务器加速,它是一种通过在繁忙的web服务器和外部网络之间增加的 一个高速web缓冲服务器,用来降低实际的web服务器的负载的一种技术。反向代理是针对web服务器提高加速功能,所有外部网络要访问服务器时的所有请求都要通过它,这样反向代理服务器负责接收客户端的请求,然后到源服务器上获取内容,把内容返回给用户,并把内容保存在本地,以便日后再收到同样的信息请求时,它会将本地缓存里的内容直接发给用户,已减少后端web服务器的压力,提高响应速度。因此Nginx还具有缓存功能。

2、负载均衡

 

Nginx的负载均衡是通过upstream实现的。

反向代理的工作流程:

eg.

1)用户通过域名发出访问请求,该域名被解析为反向代理服务器的IP地址;

upstream test.aaa { ip_hash; ## 调度算法 server 192.168.1.10:80; server 192.168.1.11:80 down; server 192.168.1.12:8009 max_fails=3 fail_timeout=20s; server 192.168.1.13:8080; } server { listen 80; server_name localhost; location / { proxy_pass ; } } 

2)反向代理服务器接收用户的请求;

upstream 支持的负载均衡算法:

3)反向代理服务器在本地缓存查找是否存在当前用户所请求的内容,找到则直接把内容返回给用户;

轮询

4)如果本地没有用户请求的内容,反向代理服务器会以自己的身份去后端服务器请求同样的信息内容,并把信息内容发给用户,如果信息内容是可以被缓存的,则会将该内容缓存在代理服务器的本地缓存中。

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响。

 

weight

反向代理的好处:

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

1)解决了网站服务器对外可见的问题,提高了网站服务器的安全性;

fair(第三方)

2)节约了有限的IP地址资源,后端服务器均可使用私有IP地址与代理服务器进行通信;

按后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。

3)加速了网站的访问速度,减轻了真是web服务器的负荷。

url_hash(第三方)

(一)、调度算法

按访问URL的hash结果来分配请求,使每个URL定向到同一个后端服务器,后端服务器为缓存时比较适用。另外,在upstream中加入hash语句后,server语句不能写入weight等其他参数。Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包。

Nginx的upstream指令用于指定proxy_pass和fastcgi_pass所使用的后端服务器,即nginx的反向代理功能,因此可以将两者结合起来使用以达到负载均衡的目的,而Nginx也支持多种调度算法:

www.129028.com金沙,upstream 支持的状态参数

1、轮询(默认)

down,表示当前的server暂时不参与负载均衡。backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,则会跳过该服务器分配至下一个监控的服务器。并且它无需记录当前所有连接的状态,所以它是一种无状态调度。

注,当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup。

2、weight

3、web缓存

指定在轮询的基础上加上权重,weight和访问比率成正比,即用于表明后端服务器的性能好坏,若后端服务器性能较好则可将大部分请求分配给它,已实现其力所能及。

Nginx可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。配合着第三方的ngx_cache_purge,对制定的URL缓存内容可以的进行增删管理。

例如:

我后端服务器172.23.136.148配置:E5520*2 CPU,8G内存

后端服务器172.23.136.148配置:Xeon(TM)2.80GHz * 2,4G内存

我希望在有30个请求到达前端时,其中20个请求交给172.23.136.148处理,剩余10个请求交给172.23.136.149处理,就可做如下配置

upstream web_poll {

server 172.23.136.148 weight=10;

server 172.23.136.149 weight=5;

}

3、ip_hash 

每个请求按访问ip的hash结果分配,当新的请求到达时,先将其客户端IP通过哈希算法进行哈希出一个值,在随后的请求客户端IP的哈希值只要相同,就会被分配至同一个后端服务器,该调度算法可以解决session的问题,但有时会导致分配不均即无法保证负载均衡。

本文由www.129028.com金沙发布于Web前端,转载请注明出处:nginx负载均衡如何实现www.129028.com金沙?

关键词:

最少编码原则

这的确是大多数程序员,甚至是那些高级程序员都很容易混淆的一个重点。作为一名程序员,编写代码无疑是你职业...

详细>>

CSS中cursor 鼠标指针光标样式

值 前面url()是自定义鼠标的样式,图像的地址,后面的参数是 css 标准的 cursor样式,(IE下面可以不需要) 出现版本...

详细>>

AJAX:如何处理书签和后退按钮(1)

或者如果你不喜欢onclick: window.onload = initialize;function initialize() { // initialize the DHTML History // framework dhtmlHistory.initial...

详细>>

textContent 与 【www.129028.com金沙】innerText、innerHTML 的区别

时间: 2019-09-09阅读: 201标签: 区别 先看看下面这个demo,不言自明: 目录 1. 语法2. 描述3. 与innerText的区别4. 与innerHTM...

详细>>