• 负载均衡


    upstream backend {
    server backend1.example.com weight=5 max_fails=3 fail_timeout=30s;
    server backend2.example.com:8080;
    }
    
    server {
    location / {
    proxy_pass http://backend;
    }
    }

    语法: server name [parameters]

    weight=NUMBER :用于设置服务器的权重。如果没有设置,那么它将会等于1

    max_fails=NUMBER:用于设置在一定的时间内对同一后台服务器进行尝试连接的次数,通过这个次数之后仍然没有连接成功,那么服务将会看做无效,如果没有设置改参数,尝试的次数是1,设置为0,将关闭检测

    fail_timeout=TIME:用于设置客户端尝试连接后台服务器的时间,在这个时间内,可能会完成由max_fails设置的最多次数。如果没有设置改参数,那么默认是10秒

    down:标记这台server将永久离线,通常和ip_hash一同使用

    backup:它是一个备用的标志,即如果出现所有非备份服务器都宕机或繁忙无法接收连接时,才会使用本服务器,改参数无法和ip_hash一同使用

    问题

    如果我们在upstream中仅设置了一个server,那么Nginx会在内部变量中设置为1,这就意味着max_fails和fail_timeout将不会被处理

    结果:如果Nginx不能连接到上游服务器,那么请求将会失败

    解决:多次使用同一台服务器

    upstream backend {
         server  backend1.example.com weight=5;
         server  backend1.example.com max_fails=3 fail_timeout=30s;
         server  backend1.example.com;
    }

    ip_hash

    upstream backend {
        ip_hash;
         server  backend1.example.com  max_fails=3 fail_timeout=30s;
         server  backend2.example.com down;
    }

    如果使用了该指令,那么将会导致客户端的请求以客户端的ip地址分布在upstream中的server之间,它的关键技术在于对这个请求客户端ip地址进行哈希计算,这种方式保证了客户端总是能够传递到同一台后台服务器,但是如果该服务器被认定为无效,那么这个客户端的请求将会被传递到其他服务器。因此这种机制是一个高概率将客户端请求总是连接到同一台服务器

    如果使用这个指令,就不能使用weight方法,如果一个upstream中指定一台s的erver,这个服务器需要移除,那么需要在该IP或者机器名之后添加down参数。

  • 相关阅读:
    L7-5 搞笑的表情包
    L7-6 神奇的验证码
    Fabric中的ACLs相关
    first-network
    关于MSP
    关于数字证书
    Linux命令学习笔记
    shell学习笔记
    区块链
    log的不同级别
  • 原文地址:https://www.cnblogs.com/sellsa/p/7787903.html
Copyright © 2020-2023  润新知