nginx在nginx.conf配置文件中通过upstream模块和server模块的配合使用,就可以实现负载均衡。
在http的 upstream模块中,可以通过 server指令指定后端服务器的IP地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态。
常用的状态有:
weight:服务访问的权重,默认是1。
down:表示当前的server暂时不参与负载均衡。
backup:预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
max_fails:在fail_timeout时间内,允许请求最大的失败次数,默认为1。当达到最大失败时,会在fail_timeout时间内不允许再次被选择。,返回 proxy_next_upstream 模块定义的错误。
fail_timeout:单位为秒,默认是10秒。指定一段时间内,请求经历了max_fails次失败后,该server不能访问的时间(暂停服务的时间)。max_fails可以和fail_timeout一起使用。
注意:当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是backup。
nginx负载均衡配置

http {
    # upstream模块:server_group_name 自定义服务组名
    upstream  server_group_name {
        # ip_hash和weight也可以配合使用
        ip_hash;
        # 最少连接
        # least_conn;
        # server指令指定后端服务器的IP地址和端口
        server    localhost:8080;
        server    192.168.xxx.xxx:8081 down;
        server    192.168.xxx.xxx:8082  max_fails=3  fail_timeout=20s;
        server    192.168.xxx.xxx:8083 weight=2;
    }
    # server模块
    server {
        listen       80;
        server_name  localhost;
        location / {
              # proxy_pass:代理转发,将单体服务http://127.0.0.1:80,改为服务组名
              proxy_pass http://server_group_name/;
              # proxy_redirect default;
              # 注意:如果遇到 nginx 配置了https upstream,然后访问跳转失败,直接报404,添加下面内容。
              proxy_set_header   Host             $host:$proxy_port;
              proxy_set_header   X-Real-IP        $remote_addr;
              proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }
}

防止程序代码中获取端口问题,配置代理端口 proxy_set_header   Host             $host:$proxy_port;
Nginx负载均衡分配策略介绍
1、轮询[默认]轮询方式是将所有请求按顺序轮流地分配到后端服务器上,它平等地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
2、权重 weight。该策略会指定每个服务的权重比例,权重越高被分配的客户端(请求)也就越多,weight和访问比率成正比。主要用于后端服务器性能不均的情况。
3、ip_hash(哈希)该策略会按照每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器。有效解决了动态网页存在的session共享问题。
4、最少连接(least_conn)该策略会将请求分配到连接数最少的服务上。
5、第三方策略。Nginx支持集成第三方的策略插件。比如:
fair:依据页面大小和加载时间长短智能地进行负载均衡,即响应时间短的优先分配。下载安装 Nginx的upstream_fair模块。
url_hash:按访问 url的 hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。下载安装Nginx的hash软件包。
来源:https://blog.csdn.net/qq_42402854/article/details/133129825

posted on 2024-06-24 11:12  邢帅杰  阅读(14)  评论(0编辑  收藏  举报