linux学习:Nginx--负载均衡-05

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux学习:Nginx--负载均衡-05相关的知识,希望对你有一定的参考价值。

Nginx通过upstream模块来实现简单的负载均衡

 在upstream块内,定义一个服务器列表,默认的方式是轮询,如果要确定同一个访问者发出的请求总是由一个后端服务器来处理,可以设置ip_hash,

 如:

    upstream cctest1.com {
        ip_hash;
        server 127.0.0.1:9080 weight=5;
        server 127.0.0.1:8080 weight=5;
        server 127.0.0.1:1111;
    }
    
    server {
      location / {
        proxy_pass  http://cctest1.com;
      }
    }

注意:这个方法本质还是轮询,而且由于客户端的ip可能不断变化的,比如动态ip,代理,翻墙等等,因此ip_hash并不能完全保证同一个客户端总是由同

    一个服务器来处理。

指令

ip_hash

这个指令将基于客户端连接的IP地址来分发请求。哈希的关键字是客户端的C类网络地址,这个功能将保证这个客户端请求总是被转发到一台服务器上,但是如果这台服务器不可用,那么请求将转发到另外的服务器上,这将保证某个客户端有很大概率总是链接到一台服务器。

无法将权重(weght)与ip_hash联合使用来分发链接。如果有某台服务器不可用,你必须标记其为“down”,如下:

upstream backend {
  ip_hash;
  server   backend1.example.com;
  server   backend2.example.com;
  server   backend3.example.com  down;
  server   backend4.example.com;
}

注意:

 1、保证同一个客户端的请求,转发到同一台服务器处理,保证了session的一致。(对于客户端通过代理、翻墙等的方式时无效)

 2、这里并不能保证真正的负载均衡

 3、对于同一个客户端的请求,转发到同一台服务器处理时,如果这台服务器出现故障,将无法转发,出现错误。

server

指定后端服务器的名称和一些参数,可以使用域名、IP、端口、或者unix socket

语法:server name [para]

参数:

 weight = NUMBER 

  设置服务器的权重,默认为1

 max_fails = NUMBER

  在一定时间内(这个时间爱fail_timeout参数中设置)检查这个服务器是否可用时产生的最多失败请求数,默认为1,将其设置为0可以

  关闭检查,这些错误在proxy_next_upstaream或fastcgi_next_uppstaream(404错误不会是max_fails增加)中定义。

 fail_timeout = TIME

  在这个时间内产生了max_fails所设置大小的失败尝试连接请求后这个服务器不可用,同样它指定了服务器不可用的时间(在下一次尝

  试连接请求发起之前),默认为10秒,fial_timeout与前端响应时间没有直接关系,不可以使用proxy_connect_timeout和

  proxy_read_timeou来控制

 down 

  标记服务器处于离线状态,通常和ip_hash一起使用。

 backup

  如果所有的非备份服务器都宕机或繁忙,则使用本服务器(无法和ip_hash指令搭配使用)。

 $upstream_status 

  前端服务器的响应状态

 $upstream_response_time

  前端服务器的应答时间,精确到毫秒,不同的应答以逗号和冒号分开

 $upstream_http_$HEADER

  随意的HTTP协议头,如:

      $upstream_http_host

应用示例,如:

upstream xiaoliu.com {
    server 127.0.0.1:8080 weight=5;
    server 127.0.0.1:9080 weight=10;
}

server {
    listen    8888;
    server_name testserver1;
    #access_log logs/host.access.log main;
    index index.html index.jsp;
    root /opt/tomcat/webapps/ROOT;

    location ~* ^/customermger/.*\.(jpg|jpeg|gif|png|swf|ico)$ {
        root /opt/tomcat/webapps;
    }

    location ~* ^/customermger/.*\.(html|htm|js|css)$ {
        root /opt/tomcat/webapps;
    }

    location ~* ^/liuy-manager-web/.*\.(jpg|jpeg|gif|png|swf|ico)$ {
        root /opt/tomcat/webapps;
    }

   location ~* ^/liuy-manager-web/.*\.(html|htm|js|css)$ {
        root /opt/tomcat/webapps;
   }


   location ~* .*\.(jpg|jpeg|gif|png|swf|ico)$ {
        if (-f $request_filename) {
            #expires 15d;
            break;
        }
   }

   location ~* .*\.(html|htm|js|css)$ {
        #expires 1d;
   }


   location / {
      proxy_pass http://xiaoliu.com;
   }
}

第1次请求http://192.168.91.6:8888/liuy-manager-web   

    技术分享

第n次请求http://192.168.91.6:8888/liuy-manager-web 

    技术分享


Geo和GeIP模块

这两个模块主要用于做全局的负载均衡,可以根据不同的客户端IP来访问不同的服务器,如下:

http{
    geo $geo{
        default default;
        202.103.10.1/24 A;
        179.9.0.3/24 B; 
    }
    upstream default.server{
        server 192.168.0.100; 
    }
    upstream A.server{
        server 192.168.0.101; 
    }
    upstream B.server{
        server 192.168.0.102; 
    }
    server{
        listen 80;
        location / {
            proxy_pass http://$geo.server$request_uri;
        }
    }
}

用于如:北京的客户端转向北京的服务器、上海的客户端转向上海的服务

本文出自 “我爱大金子” 博客,请务必保留此出处http://1754966750.blog.51cto.com/7455444/1912805

以上是关于linux学习:Nginx--负载均衡-05的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习10-CentOS搭建nginx负载均衡环境

Linux学习总结(四十三)nginx 负载均衡 https 配置

2018-3-16 Linux学习笔记

Linux下Nginx实现负载均衡

linux 负载均衡配置 keepalive lvs 使用nginx转发 CentOS7 搭建LVS+keepalived负载均衡

[Linux网络编程]Nginx入门学习