nginx的upstream模块:ngx_http_upstream_module

22 篇文章 0 订阅
Syntax:     upstream name { ... }
Default:    —
Context:    http   

Example:

    upstream backend {
        server backend1.example.com weight=5;
        server 127.0.0.1:8080       max_fails=3 fail_timeout=30s;
        server unix:/tmp/backend3;

        server backup1.example.com  backup;
    }

示例:
(1)修改nginx的配置文件,在http部分定义upstream
这里写图片描述
【注意】:因为如果后端主机与nginx主机监听端口相同可以不写端口,否则需要指明后端主机的监听端口。

在location的proxy_pass部分调用
这里写图片描述

重载之后就可以看到负载均衡效果了
这里写图片描述

设置权重:
这里写图片描述
这里写图片描述

后端健康状态检测:被动检测
这里写图片描述
解释:检查2次失败则认为后端服务器出故障,每次检查的超时时长为1m
fail_timeout=1m默认为10s

down掉server6上的httpd再访问
这里写图片描述
这里写图片描述

设置“sorry server“:
使用到backup参数
这里写图片描述
当server6和server7在线时请求并不会调度到server9上
这里写图片描述
只有当server6和server7都挂了,请求才会到server9
这里写图片描述
这里写图片描述
这里写图片描述

nginx的调度方式:
1、默认为轮循
2、ip_hash模式:

相当与lvs的sh算法,ip_hash技术能够将某个ip 的请求定向到同一台后端web机器中。
这里写图片描述
【注意】:ip_hash算法和backup算法不可以同时使用

设置完成后重载服务,去访问:
这里写图片描述

ip_hash的弊端:
客户端与nginx反向代理服务器之间如果经过了SNAT,那么就会把所有的客户端调度到同一台upserver上。
解决方法基于sticky实现session绑定(基于应用层的服务器)
(1)基于cookie绑定
(2)route
(3)learn( )

3、least_conn:最少连接,相当于lvs的wlc算法;

keepalived:建立nginx与upserver的保持连接
一般如果后端是httpd服务器不建议使用keepalived

upstream memcached_backend {
    server 127.0.0.1:11211;
    server 10.0.0.2:11211;

    keepalive 32;
}

server {
    ...

    location /memcached/ {
        set $memcached_key $uri;
        memcached_pass memcached_backend;
    }

}

health_check:后端健康状态检测。建议关闭访问日志。否则会浪费大量资源。主动检测

add_header:设置nginx响应给客户端时响应报文的首部
这里写图片描述
重载服务,再访问,就可以在响应报文首部看到了。
这里写图片描述

add_header后面的变量可以参考nginx官网的ngx_http_upstream_module中的Embedded Variables

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值