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

nginx常见的三种负载均衡策略

IM安全 macgrady 47℃

我们日常中最常见的三种nginx的负载均衡策略应当为(轮询、权重、ip绑定),这其中的区别体现在upstream代码块中,以下是upstream代码块示例(轮询)。

upstream alias {

         server 127.0.0.1:8080;

         server 127.0.0.1:8081;

}

upstream代码块中可以填服务部署的服务器列表,upstream后面的名称是自己填写,我个人倾向于称它为服务器别名,命名好之后可以直接在server代码块中调用

轮询

顾名思义,轮询就是将请求轮流转发给所有的服务器。

upstream alias {

         server 127.0.0.1:8080;

         server 127.0.0.1:8081;

}

server {

         listen       80;

         server_name  localhost;

         location / {

                   proxy_pass http://alias;

}

}

如上述代码所示,nginx要将请求转发至 127.0.0.1的8080和8081端口,第一次nginx随机选择一台服务器发送请求,第二次就会选择另外一台。ABABAB,如此循环。服务器性能服务相同时,通常都是采用此策略。

权重

将请求按照一定的比例转发给不同的服务器。

upstream alias {

         server 127.0.0.1:8080 weight=3;

         server 127.0.0.1:8081 weight=2;

}

server {

         listen       80;

         server_name  localhost;

         location / {

                   proxy_pass http://alias;

         }

}

上述代码中,我们设置的权重是3和2,也就代表着请求将会以 3:2 的比例转发给两台服务器。值得一提的是,nginx的权重机制属于轮询权重,也就是先给A发3次请求,然后给B发2次请求。适用于性能不同的服务器,如A服务器性能较强,或者开启的服务较少,则可以将更多的请求转发给A服务器。

ip绑定

顾名思义,就是将请求方的ip和服务器进行绑定。

upstream alias {

         server 127.0.0.1:8080;

         server 127.0.0.1:8081;

         ip_hash;

}

server {

         listen       80;

         server_name  localhost;

         location / {

                   proxy_pass http://alias;

         }

在upstream代码块里加上 ip_hash; 代码,即代表使用ip绑定策略。举个例子,当用户使用某一ip访问服务器,nginx将请求转发至8080,则代表该请求ip的后续所有请求都将会被转发至8080服务进行处理。
这种策略多用于带会话请求的场景,如用户的登录信息保存在session当中,如果换服务器则拿不到对应的session,会需要重新登录,使用ip_hash能保证用户请求的时同一台服务器。

总结:nginx的上述三种策略基本可以满足绝大部分应用场景,还有一些扩展的策略需要引入三方的一些类似于插件的东西,此处就不一一赘述。


————————————————
版权声明:本文为CSDN博主「未曾有」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41137996/article/details/119867885

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