Nginx负载均衡配置(二)

目录

一、upstream模块配置说明

1. 基础配置参数

2. 多组负载均衡配置

二、简单的负载均衡配置

1. 环境准备

2. 具体配置


上一篇文章我们介绍了什么是负载均衡的意义以及Nginx的负载策略,详情见Nginx负载均衡配置(一),本文接着进行Nginx负载均衡配置的介绍

介绍前建议大家提前了解下代理的相关知识,参考博文

一、upstream模块配置说明

upstream模块主要用来配置反向代理服务器组,Nginx会根据配置,将请求分发给服务器组里的某一台服务器。如下,loadServer是服务器组的名称。

http {
    ......
    upstream loadServer {
        ip_hash
        server 192.168.0.100:80; down
        server 192.168.0.101:80; weight 10 max_fails 3 fail_timeout 10s
        server 192.168.0.102:80; backup
    }
    server { #配置处理请求的服务器IP或域名,端口可选,不配置默认使用80端口
        listen 80;
        location / { #对URL进行匹配,可以进行重定向或者进行新的代理负载均衡
            proxy_pass http://loadServer; #将请求转发到loadServer服务器组中配置的某一台服务器上
        }
    }
    ......
}

1. 基础配置参数

  • down      表示单前的server暂时不参与负载
  • weight     权重,默认为1。权值越高被分配到的几率越大
  • max_fails   允许请求失败的次数默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误
  • fail_timeout   max_fails次失败后,暂停的时间。
  • backup     其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

  • server指令:配置处理请求的服务器IP或域名,端口可选,不配置默认使用80端口。
  • upstream模块:配置反向代理服务器组,Nginx会根据配置,将请求分发给服务器组里的某一台服务器。loadServer是服务器组的名称。
  • location: 对URL进行匹配,可以进行重定向或者进行新的代理负载均衡。
  • proxy_pass http://loadServer:表示将所有请求转发到loadServer服务器组中配置的某一台服务器上。

2. 多组负载均衡配置

nginx支持同时设置多组的负载均衡,用来给不用的server来使用。

  • client_body_in_file_only  设置为On 可以讲client post过来的数据记录到文件中用来做debug
  • client_body_temp_path  设置记录文件的目录,最多可以设置三层目录

二、简单的负载均衡配置

通过负载均衡配置,集群中多台服务器共同分担负载,不会出现有的服务器负载宕机而有的服务器却闲置的情况,也不会因某台服务器宕机而影响业务。

1. 环境准备

假设有三台已经安装了nginx(尽量版本相同或版本差别不大,并且服务已正常启动)的服务器:

  • A服务器ip:192.168.0.100(Master)
  • B服务器ip:192.168.0.101
  • C服务器ip:192.168.0.102

测试域名:www.test.com

部署思路:A服务器作为主服务器,域名直接解析到A服务器上,由A服务器负载均衡到B和C服务器上

域名解析:在要访问的Windows的hosts文件中加入:192.168.0.100 www.test.com

2. 具体配置

A服务器(Master)的nginx.conf配置如下:

http {
    ......
    upstream loadServer{       #定义负载设备ip及其设备状态
        server 192.168.0.101:80;   #做负载均衡的服务器地址B
        server 192.168.0.102:80;   #做负载均衡的服务器地址C
    }
    server {
        listen 80;
        location / {
            proxy_pass http://loadServer;    #指向上面设置反向代理转发的服务器
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }
    ......
} 

B、C服务器的nginx.conf配置如下 :

http {
    ......
    server {
        listen       80;        #和A服务器中upstream中对应设置的server端口要相同
        server_name  www.test.com;     #域名
        location / {
            root   html;
            index  index.html index.htm;
        }
    }
    ......
}

至此,简单的nginx负载均衡配置已经完成,在添加了hosts的Windows主机上打开浏览器,输入http://www.test.com,就可以看到默认的index.html页面,刷新会在BorC服务器上负载轮询。 

☆ 此时,我们发现A服务器只做了Master,负责负载分发,那么是否可以配置主服务器也提供服务呢?

在A服务器的nginx.conf中做如下配置,将A服务加入到upstream节点中,B、C服务器配置不变

http {
    ......
    upstream loadServer{       #定义负载设备ip及其设备状态
        server 192.168.0.101:80;   #做负载均衡的服务器地址B
        server 192.168.0.102:80;   #做负载均衡的服务器地址C
        server 192.168.0.100:8081; #做负载均衡的服务器地址A(添加A服务的地址)
    }
    server {
        listen 80;
        location / {
            proxy_pass http://loadServer;    #指向上面设置反向代理转发的服务器
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }
    server {
        listen 8081;             #端口
        server_name test.com;    #域名
        location / {
            root html;
            index index.html index.htm;
        }    
    }
    ......
} 

Ending~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值