环境搭建


| 主机 | 角色 |
| ———— | ———— |
| 192.168.10.174 | 前置机 |
| 192.168.10.80 | 服务器1 |
| 192.168.10.42 | 服务器2 |

目前的要求,
访问前置机器,第一次会访问到 80,第二次会访问的42.

upstream

upstream backend-server
{
server 192.168.10.80:80 ;
server 192.168.10.42:80 ;
server 192.168.10.152:80;

}

具体参数

如果需要保留会话,就是说对有状态服务的负载均衡,不能按照每次请求转发,只能按照每个IP段来转发,192.168.10.x

  • WEIGTH: 权重
    upstream backend-server
    {
      server 192.168.10.80:80 weigth=5 ;
      server 192.168.10.42:80 weigth=2;
      server 192.168.10.152:80 weigth=1;

}

负载均衡的配置方法

upstream backend-server
{
ip_hash;
server 192.168.10.80:80 ;
server 192.168.10.42:80 ;
server 192.168.10.152:80;

}

使用了ip_hash 以后,可能导致负载均衡失效,也访问数量倾斜。

某个网段人特别多,比如大公司的出口就是一个IP,
我个人的的就一个网段,大公司,我个人

单点登录 (SSO ,single sign on )
ldap,crowd,adam,kerbos

免费
nginx +redis + …
nginx + mysql + ….
备注: 使用了多个 worker_processes, 使用多个worker进程,连接总数肯定会大于max_conns

具体配置参数

slow_start(商业版本能使用,需要付费):缓慢的启动,慢慢加入到集群,会在配置的时间内将权重慢慢升级到配置的权重值,必须要使用在集群里面,必须要和权重一起使用

upstream tomcats {
server 192.168.1.173:8080 weight=6 slow_start=60s;
server 192.168.1.174:8080 weight=2;
server 192.168.1.175:8080 weight=2;
}

该参数不能使用在hash和random load balancing中

down:一种状态,标识服务器节点不可用

upstream tomcats {
server 192.168.1.173:8080 down;
server 192.168.1.174:8080 weight=1;
server 192.168.1.175:8080 weight=1;
}

backup:表明服务器是一台备用机(其他服务挂掉之后,才会被访问)

upstream tomcats {
server 192.168.1.173:8080 backup;
server 192.168.1.174:8080 weight=1;
server 192.168.1.175:8080 weight=1;
}

upstream指令参数 max_fails、fail_timeout

max_fails:表示失败几次,则标记server已宕机,剔除上游服务。

fail_timeout: 表示失败的重试时间。

max_fails=2 fail_timeout=15s

则表示在15秒内请求某一server失败达到2次后,则认为该server已经挂了或者宕机了,随后15秒内不会有新的请求到达刚刚挂掉的节点上,而是会请求到正常运作的server,15秒后会再有新请求尝试连接挂掉的server,如果还是失败,重复上一过程,直到恢复。

转发配置,nginx中

  server {
        listen       80;
        listen       [::]:80;
        server_name  proxy.ycjy.cc;

        location / {
        proxy_pass http://backend-server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For         $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        # proxy_hide_header Upgrade;

      add_header X-Cache $upstream_cache_status;
    #Set Nginx Cache

        set $static_file4A1Jh5BS 0;
        if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
        {
            set $static_file4A1Jh5BS 1;
            expires 1m;
        }
        if ( $static_file4A1Jh5BS = 0 )
        {
            add_header Cache-Control no-cache;
        }

     }
}

作者:严锋  创建时间:2023-09-25 09:42
最后编辑:严锋  更新时间:2025-05-09 15:48