流水不争先,争的是滔滔不绝

nginx反向代理及负载均衡

IM源码 macgrady 48℃

1.反向代理:

指的是浏览器/客户端并不知道自己要访问具体哪台目标服务器,只需要去访问代理服务器 ,代理服务器再通过反向代理 +负载均衡实现请求分发到应用服务器的一种代理服务。反向代理服务的特点是代理服务器 代理的对象是应用服务器,也就是对于浏览器/客户端 来说应用服务器是隐藏的。

2.nginx实现反向代理

(1)修改nginx配置

修改nginx配置vi /usr/local/nginx/conf/nginx.conf 在http模块中配置如下:

nginx反向代理都是结合负载均衡来实现的,这里先直接提供反向代理+负载均衡的配置:

upstream reverseProxyServer{

    #负载均衡应用服务器A: 权重为10,10s内连接请求失败2次,nginx在10s内认为server是不可用的,将不在发送请求给这台服务器

    server 应用服务器A的IP:8080 weight=10 max_fails=2 fail_timeout=10s;

    #负载均衡应用服务器B: 代理服务器权重为5,10s内连接请求失败2次,nginx在10s内认为server是不可用的,将不在发送请求给这台服务器

    server 应用服务器B的IP:8080 weight=5 fail_timeout=10s max_fails=2;

    #负载均衡应用服务器C: 代理服务器权重为5,10s内连接请求失败2次,nginx在10s内认为server是不可用的,将不在发送请求给这台服务器

    server 应用服务器C的IP:8080 weight=5 fail_timeout=10s max_fails=2;

}

server {

    #监听80端口,http默认端口80

    listen 80;

    #服务器IP或域名

    server_name  localhost;

    #反向代理请求路径中含有/appname的所有请求到upstream定义的对应反向代理模块

    location /appname {

        proxy_pass http://reverseProxyServer;

    }

(2)检查和刷新nginx配置

/usr/local/nginx/sbin/nginx -t

/usr/local/nginx/sbin/nginx -s reload

(3)浏览器访问

代理服务器部署了tomcat应用,访问tomcat静态页面验证一波~

http://代理服务器IP:8080/appname/ReverseProxy1.html

3、负载均衡

负载均衡(Load Balance)的主要作用是采用了负载均衡算法将请求分发到集群模式中的应用服务器上,这样即使某个后台应用服务器挂了,其他应用服务器还可以正常接收请求,实现了高可用,并且集群模式模式下的应用服务器支持纵向扩展,可以应对业务快速增长带来的高并发应用场景。

3.2 负载均衡算法:

负载均衡算法常用的有轮询、权重和ip_hash算法,默认是轮询算法。

(1)基于轮询的算法

原理是每一个请求按时间顺序逐一被分发到不同的应用服务器,如果接收请求的应用服务器挂了,并且请求超过最大失败次数max_fails(1次),则在失效时间fail_timeout(10秒)内不会再转发请求到该节点~

upstream defaultReverseProxyServer{

    server 192.168.0.1:8080;

    server 192.168.0.2:8080;

}

(2)基于权重的算法

原理是每一个请求按权重被分发到不同的应用服务器,同样,如果接收请求的应用服务器挂了,并且请求超过最大失败次数max_fails(默认1次或可设置N次),则在失效时间fail_timeout(默认10秒,可设置N秒)内,不会再转发请求到该节点~

upstream weightReverseProxyServer{

    server 192.168.0.1:8080 weight=10 max_fails=2 fail_timeout=5s;

    server 192.168.0.2:8080 weight=5 max_fails=2 fail_timeout=5s;

}

(3)基于ip_hash的算法

原理是每一个请求按用户访问IP的哈希结果分配,如果请求来自同一个用户IP则固定这台IP访问一台应用服务器,该算法可以有效解决动态网页中存在的session共享问题。

upstream ipHashReverseProxyServer{

    ip_hash;

    server 192.168.0.1:8080;

    server 192.168.0.2:8080;

}

一般使用的是基于权重的算法,因为现在很多情况下都是集群部署,而且集群下的各个服务器资源大多都是不均匀的,资源高的则分配权重高一些,资源低的则分配权重低一些,这种情况使用基于权重的负载均衡算法,可以更高效的利用资源和提高并发处理能力。

————————————————

版权声明:本文为CSDN博主「JustinQin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/JustinQin/article/details/119519019

版权声明:部分文章、图片等内容为用户发布或互联网整理而来,仅供学习参考。如有侵犯您的版权,请联系我们,将立刻删除。
点击这里给我发消息