nginx(一)nginx配置反向代理与负载均衡

本文涉及的产品
.cn 域名,1个 12个月
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 最近在研究秒杀程序的设计及服务器配置。涉及到秒杀这个问题,那肯定就意味着大流量高并发访问,那么大概率我们需要做反向代理与负载均衡配置。那么如何配置nginx的反响代理与负载均衡呢?

最近在研究秒杀程序的设计及服务器配置。

涉及到秒杀这个问题,那肯定就意味着大流量高并发访问,那么大概率我们需要做反向代理与负载均衡配置。

那么如何配置nginx的反响代理与负载均衡呢?

一:配置服务器环境

首先,我们大概需要准备三台服务器

一台做反向代理,剩下的两台做负载均衡的演示。

反向代理服务器只需要配置nginx环境即可,因为,其只做为请求转发的中转站。

两台负载均衡服务器,需要配置lnmp环境,具体配置过程请移步《Centos7.6配置lnmp

上边的方法是属于有那个条件的同学使用,正常一台服务器也行,在服务器上配置nginx和apache,nginx做反向代理,将请求转发至apache即可。

Lamp环境配置,请移步《LAMP环境配置及NGINX安装

二:负载均衡配置实例

下面我先放一下我测试使用的一个nginx配置示例,具体的配置项下边会有一个大概的解释:

ini

复制代码

http{
    # 配置负载均衡
    # 这里的域名要和下面proxy_pass的一样
    upstream  guanchao.site {   
        # 将请求分配至最小链接
        least_conn;
        # 每个请求会按照访问ip的hash值分配,这样同一客户端连续的Web请求都会被分发到同一server进行处理,可以解决session的问题。如果server挂掉,能自动剔除。     
        # ip_hash;
        # weigth参数表示权值,权值越高被分配到的几率越大
        # 下面表示219.44有2分之1几率,132.2有2分之1几率
        server    47.100.219.44:80 max_fails=2 fail_timeout=5s weight=1; 
        server    8.140.132.2:80 max_fails=2 fail_timeout=5s weight=1; 
    #     server    111.231.162.140:80 max_fails=2 fail_timeout=5s weight=1; 
    }     
    server {  
        listen       80; 
        server_name  guanchao.site;  
        location / {  
            # 配置负载均衡
            proxy_pass http://guanchao.site;  #请求转向taishan定义的服务器列表
            proxy_set_header Host $host;#将请求头转发给后端服务器
            proxy_set_header X-Forward-For $remote_addr;#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
            proxy_connect_timeout 2s; 最长链接时间为2s
            proxy_redirect default;  
        }  
        error_page   500 502 503 504  /50x.html;  
        location = /50x.html {  
            root   html;  
        }  
    }
}

111.231.162.140这个服务器作为反向代理服务器

47.100.219.44与8.140.132.2这两台服务器作为负载均衡服务器

以上的配置得到的效果:

image.png

image.png

我们可以看到,在同一个域名下,多次刷新,我们看到的页面是不同的,因此,证明我们上边的反向代理及负载均衡的配置是没有问题的。

三:负载均衡策略

1:轮询

这种是默认的策略,把每个请求按顺序逐一分配到不同的server,如果server挂掉,能自动剔除。

ini

复制代码

# 配置负载均衡
    # 这里的域名要和下面proxy_pass的一样
    upstream  guanchao.site {   
        # weigth参数表示权值,权值越高被分配到的几率越大
        # 下面表示44有2分之1几率,2有2分之1几率
        server    47.100.219.44:80 max_fails=2 fail_timeout=5s weight=1; 
        server    8.140.132.2:80 max_fails=2 fail_timeout=5s weight=1; 
    }

2:最少链接

ini

复制代码

# 配置负载均衡
    # 这里的域名要和下面proxy_pass的一样
    upstream  guanchao.site {   
        # 将请求分配至最小链接
        least_conn;
        # weigth参数表示权值,权值越高被分配到的几率越大
        # 下面表示44有2分之1几率,2有2分之1几率
        server    47.100.219.44:80 max_fails=2 fail_timeout=5s weight=1; 
        server    8.140.132.2:80 max_fails=2 fail_timeout=5s weight=1; 
    }

3:权重weight

ini

复制代码

# 配置负载均衡
    # 这里的域名要和下面proxy_pass的一样
    upstream  guanchao.site {   
        server    47.100.219.44:80 max_fails=2 fail_timeout=5s weight=1; 
        server    8.140.132.2:80 max_fails=2 fail_timeout=5s weight=1; 
    }

4:ip_hash

每个请求会按照访问ip的hash值分配,这样同一客户端连续的Web请求都会被分发到同一server进行处理,可以解决session的问题。如果server挂掉,能自动剔除。

ini

复制代码

 
# 配置负载均衡
    # 这里的域名要和下面proxy_pass的一样
    upstream  guanchao.site {   
        # 每个请求会按照访问ip的hash值分配,这样同一客户端连续的Web请求都会被分发到同一server进行处理,可以解决session的问题。如果server挂掉,能自动剔除。     
        ip_hash;
        # weigth参数表示权值,权值越高被分配到的几率越大
        # 下面表示44有2分之1几率,2有2分之1几率
        server    47.100.219.44:80 max_fails=2 fail_timeout=5s weight=1; 
        server    8.140.132.2:80 max_fails=2 fail_timeout=5s weight=1; 
    }

 

以上四个策略可以组合叠加使用。

剩下配置的用处,我在nginx配置实例中都有备注。

四:其他参数

参数列表如下:

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

以上大概就是nginx的反响代理与负载均衡的配置,

有好的建议,请在下方输入你的评论。

欢迎访问个人博客 guanchao.site

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
11天前
|
弹性计算 负载均衡 网络协议
配置SLB监听器
配置SLB监听器
82 63
|
8天前
|
弹性计算 负载均衡 监控
slb配置健康检查
slb配置健康检查
18 5
|
8天前
|
负载均衡 算法 应用服务中间件
Nginx的负载均衡
Nginx 是一款高性能的Web服务器与反向代理服务器,支持负载均衡功能,能有效提升系统性能与可靠性。其负载均衡策略包括基于轮询和权重的分配方法,以及IP哈希、最小连接数等算法,可根据实际需求灵活选择。
39 5
|
11天前
|
监控 负载均衡 容灾
slb测试配置
slb测试配置
22 5
|
11天前
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
32 3
|
16天前
|
域名解析 监控 安全
slb配置检查域名说明注意事项
slb配置检查域名说明注意事项
23 5
|
16天前
|
负载均衡 安全 网络安全
slb配置健康检查域名
slb配置健康检查域名
24 4
|
6月前
|
缓存 负载均衡 算法
解读 Nginx:构建高效反向代理和负载均衡的秘密
解读 Nginx:构建高效反向代理和负载均衡的秘密
126 2
|
5月前
|
负载均衡 算法 应用服务中间件
nginx自定义负载均衡及根据cpu运行自定义负载均衡
nginx自定义负载均衡及根据cpu运行自定义负载均衡
97 1
|
5月前
|
运维 负载均衡 算法
SLB与NGINX的异同是什么
SLB与NGINX的异同是什么
517 2