首页 Linux正文

Nginx之负载均衡

王昊 Linux 2019-07-18 321 0

之前的文章中介绍了nginx虚拟主机的配置,每个虚拟主机提供不同的服务,实际生产环境中,会有多个虚拟主机提供相同的WEB服务,也是通常我们所说的高可用,当其中一台服务器有宕机的情况其它的服务器仍然可以提供正常的WEB服务,因此,就会用到前端的负载均衡器,进行负载调度,负载均衡有硬件设备(F5)、软件等,今天就来介绍下nginx HTTP反向代理负载均衡的功能

当用户访问时,其实访问的是负载均衡器对外提供的地地址,然后由它来根据相应的规则进行转发给后端后服务器

配置过程

还是同样的原因,因为主配置文件/etc/nginx/nginx.conf中有include /etc/nginx/conf.d/*.conf; 所以为了方便我们在/etc/nginx/conf.d/下新建一个配置文件proxy.conf

vim /etc/nginx/conf.d/proxy.conf

例如:
upstream web {              //定义主机池
server 192.168.11.22:80;    //多个虚拟主机可以进行轮询
server 192.168.11.33:80;
server 127.0.0.1:80 backup; 
}

server {

listen    127.16.101.22:443    ssl    http2    default_server;

server_name    www.xxx.com;

location / {

        proxy_pass http://web;    //将监听到请求转发到这个虚拟主机池

    }

}

注:

1、upstream是关键字必须要有,后面的web为一个Upstream集群组的名字,可以自定义;

2、server是关键字固定,后面可以接域名或IP。如果不指定端口,默认是80。结尾有分号。

3、尽管 HTTP/2 协议本身并不要求一定开启 SSL,但大多数主流浏览器要求一定要启用 SSL 才能使用 HTTP/2。

常用参数:

server标签 参数说明
server 192.168.11.22:80 负载均衡的热备配置,可以是IP或域名,如果不写端口,默认是80端口。高并发场景下,IP可换成域名,通过DNS做负载均衡。
weight=1 代表服务器的权重,默认值是1。权重数字越大表示接受的请求比例越大。
max_fails=1 Nginx尝试连接后端主机失败的次数,这个数值是配置proxy_next_upstream、fastcgi_next_upstream和memcached_next_upstream三个参数来使用的,当Nginx接受后端服务器返回这三个参数定义的状态码时,会将这个请求转发给正常工作的后端服务器,例如404、502、503。max_fails的默认值是1;企业场景:建议2-3次。
backup 热备配置(RS)节点的高可用,当期面激活的RS都失败后会自动启用热备RS。这标志着这个服务器作为备份服务器,若主服务器全部宕机了,就会向他转发请求;注意:当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup。
fail_timeout=10s 在max_fails定义的失败次数后,距离下次检查的间隔时间,默认是10s;如果max_fails是5,他就检测5次。如果5次都是502,那么他就会根据fail_timeout的值,等待10s再去检查,还是只检查一次,如果持续502,在不重新加载nginx配置的情况下,每隔10s都只检测一次。常规业务:2-3秒比较合理。
down 这标识着服务器永远不可用,这个参数可配合ip_hash使用。

更多关于upstream模块的的介绍,可以参考官方文档

http://nginx.org/en/docs/http/ngx_http_upstream_module.html

要想当后端主机均不可用时,使用127.0.0.1的80端口提供一个sorry server响应客户端的请求

所以继续写配置文件proxy.conf

server {
listen 172.0.0.1:80;        
server_name www.xxx.com;
root /data/web_data;
index sorry.html;
}

sorry.html记得创建并写入想要展现的内容,这里就不做演示了

Nginx中文文档:http://www.nginx.cn/doc/index.html

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论