ngx_http_upstream_module

示例:

http上下文:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
upstream upservers{
    ip_hash; //根据客户端IP进行调度,每个客户端ip地址访问时每个ip生成一个hash码,来自同一个客户端的请求分配到同一个server 
   server 192.168.1.102 weight=2;   
   server 192.168.1.103;
}

 server端:

proxy_pass http://upservers/;   

健康状况检测:

max_fails=numbers  //检查出的错误次数超过多少次就标记为失败了
fail_timeout=time  //每此检查的超时时长

 示例:

 upstream upservers {
   server 192.168.1.102 max_fails=2 fail_timeout=1; }

 如果要对服务器进行更新,可以这么做:

upstream upservers {
  server 192.168.1.103 max_fails=2 fail_timeout=1 backup;  
}

 ip_hash是基于源IP进行session绑定

基于sticky进行session绑定:

格式:

Syntax:    sticky cookie name [expires=time] [domain=domain] [httponly] [secure] [path=path];
       sticky route $variable ...;
       sticky learn create=$variable lookup=$variable zone=name:size [timeout=time] [header] [sync];
Default:    —
Context:    upstream
This directive appeared in version 1.5.7.

cookie:

upstream backend {
    server backend1.example.com;
    server backend2.example.com;

    sticky cookie srv_id expires=1h domain=.example.com path=/;
}

route:

map $cookie_jsessionid $route_cookie {
    ~.+\.(?P<route>\w+)$ $route;
}

map $request_uri $route_uri {
    ~jsessionid=.+\.(?P<route>\w+)$ $route;
}

upstream backend {
    server backend1.example.com route=a;
    server backend2.example.com route=b;

    sticky route $route_cookie $route_uri;
}

 learn:

upstream backend {
   server backend1.example.com:8080;
   server backend2.example.com:8081;

   sticky learn
          create=$upstream_cookie_examplecookie
          lookup=$cookie_examplecookie
          zone=client_sessions:1m;
}

 least_conn: 调度方法,最少连接

 health_check:

  建议:关闭访问日志

自定义响应首部:

add_header X-Via $server_addr;
add_header X-Cache $upstream_cache_status;

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄