负载均衡 正反代理

nginx:正向代理 反向代理 负载均衡

nginx当中有两种代理方式:

七层代理(http协议)

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

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

客户端请求代理服务器,由代理服务器转发客户端的httpd请求。转发到内部的服务器 (单台或者是一组)

后端的webserver,再把响应送达代理服务器,最后再到客户端。

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

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

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

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


四层代理和七层代理之间的区别:

1、七层代理走的是用户态,需要对http的请求进行处理和解析,解析过程中,可以根据请求头和请求体的内容

进行流量控制,内容过滤,转发速度比较慢。但是可以提供的功能更高级,用户的体验也很好

四层代理是基于ip地址和端口号,只负责将IP和端口转发到后端服务器,既不会对请求进行分析,也不做任何的处理。

只是负责转发而已。而且四层转发走的是内核态 ,四层的转发速度较快,但是没办法提供更高级的功能,他只是转发

2、选择场景:

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

四层代理:只需要转发tcp/udp数据包,可以选择四层,也可以选择七层,四层速度方面快一点

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

四层只能是ip和端口

负责均衡算法:有些是无法在四层代理使用的

3、模块

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

upstream:在nginx当中就是用于处理http请求,支持反向代理,负载均衡。缓存功能

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

四层代理的模块

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


正向代理

在这里插入图片描述

类似于vpn,科学上网,加速器

企业架构都是反向代理:

客户端通过代理服务器访问,但是后端服务器有多台。


七层代理

http全局配置

upstream test {

server 192.168.233.62;

server 192.168.233.63;

}

location {
proxy_pass http://test;

}

负载均衡的算法:

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

默认算法,可以不加。

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

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

2、加权轮询 weight 建立在默认轮询算法的基础之上

为后端服务器分配不同的权重,处理能力强的服务器可以分配的权重值要高一些,轮询次数是基本上安装权重分配的,不是百分之百,可能会有所偏差 。服务器上也没有缓存,适用于一些中大型网站

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

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

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

最少连接算法可以单独使用,但是一般都是结合加权轮询一块使用,避免所有的请求都发送到处理能力强的服务器

可以提供整个集群的一个稳定性

中型网站,大型网站,日常访问可以满足。

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

在这里插入图片描述

ip_hash第一次访问之后,后面访问的都是缓存

如果后端服务器的数量发生变化,可能会进行重新分配。

ip_hash适用与高并发,请求不会跳转,请求的是缓存。

5、url_hash 根据请求的url地址计算hash值,然后将请求发送到相应的后端服务器,相同的url地址请求会被分配到同一个服务器。

hash $request_uri consistent;

在这里插入图片描述

url_hash 和ip哈希是结合在一起使用的,可以适用与并发较高的场景,只要是iphash和url hash 都是二次缓存

基于域名的反向代理:

upstream {

server www.kgc.com;

server www.benet.com;

}


四层的反向代理

在这里插入图片描述

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

但是ip _ hash url hash不可以在stream中使用

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

http七层代理:可以处理请求地址和请求的url


小结

四层和七层代理:

基于tcp/udp协议的IP+端口,数据包转发,对请求没有任何操作和处。

七层代理:基于http协议,对请求的内容进行处理,转发到后端

速度:四层的速度快,内核,不做任何处理,转发速度比较快

七层的是用户态,需要对内容进行处理,转发速度相对较慢

正向代理和反向代理

正向代理:都是通过代理服务器访问,明确指向后端服务器

反向代理:也是通过代理服务器访问,一个代理服务器会指定多台服务器供代理服务器进行转发请求 。一对多

只有一对多,才会涉及到负载均衡的算法问题

1、轮询

默认算法,可以不加

2、加权轮询:给后端服务器设置不同的权重,通过权重分发给客户端的请求,权重高的轮询的次数就多,权重的少,轮询的次数比较少,但是不绝对

权重高的服务器会被频繁的请求

weight=3

3、最小连接数,会把请求转发到当前连接数较小的服务器,可以避免请求全集中到高性能或者高权重的服务器

4.ip_hash,根据客户端请求的ip地址,生成一个hash的值,然后传到后端服务器,下一次再访问,还是之前的服务器,而且还有缓存

需要把请求客户端地址,转发到固定的服务器,可以使用这个方法,大并发可以,小并发也可以。但是后端服务器发生变化,请求的后端服务器也会发生变化(后端服务器数量增加了,请求的地址未必会变,后端服务器数量变少了)

缩容的情况,业务量比较少,不需要那么多后端服务器,才会缩容。只会扩。

5、url_hash:根据请求的url地址生成一个hash值,然后转发到后端服务器,但是下一次访问,如果请求的url不变,还是上一次访问的后端服务器。而且也有缓存。

url地址发生变化,或者后端服务器数量也发生变化,可能会变更后端服务器的地址。

配置方式:

http:七层正向 反向

location {
proxy\_pass  http\://192.168.233.10;
}

反向

http的全局配置中定义upstream模块

负载均衡的算法,配置再upstream模块中

upstream czy {
least\_conn;

ip\_hash;

hash \$request\_url consistent;

server 192.168.233.10; weight=2;

server 192.168.233.20;

\#默认就是轮询;

}

server块的location中:指定代理服务器的方法:
location {
proxy_pass http://czy;
}

四层

只能写在全局配置当中

stream {
  server 192.168.233.10:80;
#默认轮询
#加权轮询
#最小连接数

}

server {

  listen 80;

  proxy\_pass http\://czy;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早上的星星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值