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次失败时,将被临时移除。这样可能保障后端服务呈现故障时,不会影响到整个零碎的稳定性和可靠性。