Nginx upstream模块

upstream模块的内容应放于 nginx.conf 配置的 http{} 标签内,其默认的调度算法是rr (轮循 round-robin)

https://www.cnblogs.com/yanjieli/p/10669846.html

https://www.jianshu.com/p/8671c40a5be8

https://blog.csdn.net/LL845876425/article/details/97621365

https://wiki.jikexueyuan.com/project/nginx/upstream-module.html

http://tengine.taobao.org/book/chapter_05.html


Nginx中的upstream模块是一种配置方式,用于定义服务器组,以便Nginx可以向这些服务器代理传入的请求。这个模块主要用于负载均衡和反向代理配置。通过upstream,你可以指定一组后端服务器,Nginx将根据配置的策略(如轮询、最少连接、IP哈希等)将请求分发给这些服务器。

作用

  1. 负载均衡upstream模块可以帮助分散到单个服务器的负载,通过将请求分发到多个后端服务器上,提高了系统的整体可用性和吞吐量。
  2. 故障转移:如果配置了多个服务器,当其中一个服务器出现故障时,Nginx可以自动将请求转发到其他健康的服务器,从而提高了系统的鲁棒性。
  3. 可伸缩性:通过向upstream组添加更多服务器,可以轻松扩展系统来处理更多的请求,而无需对客户端或前端代理进行任何更改。

举例说明

假设你有一个Web应用,部署在多个服务器上,你希望使用Nginx来分发用户的请求到这些服务器。下面是一个基本的upstream配置示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
http {
upstream myapp {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com down; # 假设这个服务器当前不可用
}

server {
listen 80;

location / {
proxy_pass http://myapp;
}
}
}

在这个例子中:

  • 定义了一个名为myappupstream组,包含了三个后端服务器(backend1.example.combackend2.example.combackend3.example.com)。其中,backend3被标记为down,表示这个服务器当前不参与处理请求。
  • server块中,所有到达端口80的HTTP请求都会被代理到myapp这个upstream组中的服务器。
  • Nginx将根据预定义的负载均衡策略(默认是轮询)来将请求转发给backend1backend2

通过这种配置,你可以实现请求的负载均衡和简单的故障转移,提高应用的可用性和伸缩性。


http://dockone.io/article/2434430

https://www.nginx.org.cn/article/detail/220

https://www.cnblogs.com/throwable/p/13113620.html

至此,Consul单机伪集群搭建完成(其实分布式集群的搭建大同小异,注意集群节点所在的机器需要开放使用到的端口的访问权限),由于Consul使用Raft作为共识算法,该算法是强领导者模型,也就是只有Leader节点可以进行写操作

文章目录