nginx负载均衡

1.nginx当中有两种代理方式

        七层代理(http协议)

        四层代理(tcp/udp流量转发)

2.七层代理

七层代理:代理的是http的请求和响应

客户端请求代理服务器,由代理服务器转发客户端的httpd请求,转发到内部的服务器(可以是单台,也可以是一组),后端的webserver,再把响应送达代理服务器,最后再到客户端。

反向代理:客户端访问的是代理服务器,代理服务器转发http请求,但是客户端不知道访问的是哪一台服务器

正向代理:客户端也是访问代理服务器,代理服务器转发请求,客户端只知道代理服务器的地址,后端的webserver的ip地址,客户端也不知道

3.四层代理

四层代理:基于tcp/ip协议层的转发代理方式,基于ip和端口号实现负载均衡,或者正向代理。

四层代理无法获取http请求中的URL信息,只能对TCP/IP的数据包进行转发

4.四层代理和七层代理之间的区别

        1.速度

        http7层代理走的是用户态,需要对http的请求进行处理和解析,解析过程中,可以根据请求头和请求体的内容,进行流量控制,内容过滤,转发速度比较慢,但是提供的功能更高级,用户的体验更好

        四层代理是基于ip地址和端口号,只负责ip和端口转到后台服务器,不对请求做任何处理,只是负责转发而已,而且四层走的是内核,四层转发速度比较快

        2.选择场景

        7层代理:需要对http请求进行控制和处理,只能选择7层代理(常见的代理方式)

        四层代理:只需要转发tcp/udp数据包,可以选择四层,也可以选择7层。

        7层可以对ip和端口进行转发,也可以对域名进行代理

        四层只能是ip和端口,负载均衡算法:有些是无法在四层代理使用。

        3.模块

        7层代理只能写在http模块的全局配置当中。

        upstream:用于处理http请求,支持反向代理,负载均衡,缓存功能

        在upstream模块中可以配置对个服务器

        四层代理模块:stream

        stream模块只能写在全局模块当中的单独配置,stream代理无畏协议,只能流量

5.负载均衡算法

1.rr(round robin)负载均衡最简单的算法,轮询,请求轮流分配到后端服务器

默认算法,可以不加

默认算法,每发起一次都是新的请求,服务器上没有缓存。

服务器处理能力相近,而且对访问量比较小的网站适用。

2.加权轮询weight 建立在默认轮询算法的基础之上。为后端服务器分配不同的权重,处理能力强的服务器可以分配的权重值要高一些

轮询次数基本上按照权重进行分配。服务器上也没有缓存。

中大型网站可以使用加权轮询

权重高到的服务会被频繁的请求响应,权重低的可能闲置,会和另外一种算法配合使用

nginx负载均衡_第1张图片

3、最少连接数算法,会把请求发送到连接数量较少的后端服务器

最少连接数算法可以单独使用,但是一般都是结合加权轮询一块使用,避免所有请求都发送到处理能力强的服务器,提高整个集群的稳定性。中型网站,大型网站,日常访问可以满足nginx负载均衡_第2张图片

4.ip_hash:iphash会根据客户端ip地址解析出一个hash值,然后将请求发送到对应的后端服务器,下一次用户再访问时,同一客户端的请求会被分配到同一台服务器

5、uri_hash根据请求rui地址计算hash值然后将请求发送到相应的后端服务器,相同的uri地址请求会被分配到同一个服务器。uri_hash和ip_hash是结合在一块使用

nginx负载均衡_第3张图片

6.四层代理的负载均衡

在四层代理中可以使用加权轮询,最小连接数算法也可以实现负载均衡

但是ip_hash url_hash不可以在stream中使用

四层不能对请求处理,只能转发数据包

http七层代理:可以处理请求地址和请求的uringinx负载均衡_第4张图片

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