Nginx 负载平衡配置是一个散发申请的过程。能够通过将同一个服务的多个实例配置到不同的服务器上,通过 Nginx 代理申请,将申请散发到这些实例上实现负载平衡。上面具体介绍 Nginx 负载平衡的配置过程和宕机状况解决:
- 在 Nginx 配置文件中增加 upstream 配置块:
http {
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com;
server backend3.example.com;
server backend4.example.com max_fails=3 fail_timeout=30s;
}
# ...
}
在这个配置块中,backend
是定义的一个服务名,其中蕴含了多个服务实例。每个实例应用 server
关键字定义,并通过 weight
参数为实例设定权重,默认权重为 1。咱们能够通过为实例设置不同的权重值来实现不同的负载平衡策略。
在下面的配置中,backend4.example.com
的宕机状况将被解决。即当一个后端服务器因为服务器故障、网络问题等起因不能提供服务时,Nginx 会将它从服务池中临时移除。在此例中,当 backend4.example.com
呈现 3 次失败后,将被标记为失败状态,并在 30 秒内不再进行申请转发。
- 在 Nginx 配置文件中增加 server 配置块,将申请转发至 upstream:
http {
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com;
server backend3.example.com;
server backend4.example.com max_fails=3 fail_timeout=30s;
}
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
通过将申请代理至 http://backend
,Nginx 会将申请转发到backend
中定义的多个服务实例。在配置过程中,还能够对申请进行更细粒度的管制,如用户 Session 平衡、申请 Header 批改等等。
以上就是 Nginx 负载平衡的配置过程,宕机状况解决的形式次要是通过 fail_timeout 和 max_fails 参数管制。当一个后端服务在 fail_timeout 内呈现 max_fails 次失败时,将被临时移除。这样可能保障后端服务呈现故障时,不会影响到整个零碎的稳定性和可靠性。