Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

nginx 配置之 upstream 软负载

  使用 proxy_pass 可以把请求转发到某台机器上。然而如果上游不是一台机器,而是一个集群要怎么办呢?nginx 当然也能解决这种问题!通过 upstream 指令我们可以配置一个集群的信息,然后 proxy_pass 到这个 upstream 上。这便是传说中的 7 层软负载。
  在很多人眼里,nginx 一直都在不务正业(我偶尔也会这么觉得),比如软负载这件事更多人喜欢用 HAProxy 做。因为 HAProxy 是 4 层 7 层通吃的专业软负载软件,而且其负载均衡算法比 nginx 复杂得多,所以性能上占优势。
  但是 nginx 也不是完全没用的,有时候一些内部环境的性能瓶颈根本就不在负载均衡上,而 nginx 本身就是「居家旅行」必备的东西。如果使用 HAProxy 或其他负载均衡软件来处理不仅要多启一些进程,还会让服务器配置变得更繁琐、维护成本变高。这种时候就可以考虑使用 nginx 的 upstream 来简单地实现软负载。
  nginx 的 upstream 的默认配置只是做了简单的轮询(round robin)并处理掉一些特殊情况而已,比如我们在 upstream 中配置两个 server 来做测试,默认情况下它们收到的请求数量是相同的。比如下面这个测试:
server { listen 8001; listen 8002; return 200 $server_port\n; } upstream myservers { server 127.0.0.1:8001; server 127.0.0.1:8002; } server { listen 8080; location / { proxy_pass http://myservers; } }
  在 upstream 的 server 中加入 weight 参数可以指定当前 server 的权重,默认的 weight 为 1。所以如果有两台机器,如果其中一台的权重设为 9,那么就会有 90% 的请求被发到这台机器上。 upstream myservers { server 127.0.0.1:8001; server 127.0.0.1:8002 weight=9; }
网名:
3.80.55.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^