nginx2 — 负载均衡

什么是负载均衡

如果一台服务器在某一段时间内访问量变大时,服务器的压力就会越来越大,所使用的cpu和内存大到超过服务器本身时,服务器就会崩溃,为了防止这种情况发生,可以通过负载均衡的方式来分担这台服务器的压力。

举例: 淘宝,京东,12306等等;
建立一些服务器,组成一个服务器集群,当用户访问时,先访问一个中间的放服务器,由这个服务器去选择服务器集群中压力较小(cpu,内存剩余较大)的服务器,然后将访问请求引入该服务器,这样可以保证服务器集群中的每个服务器的压力趋于平衡,分担了中间服务器的压力,可以避免服务器崩溃的情况发生。

fzjh.jpg
负载均衡是用反向代理的原理实现的

负载均衡的常用方式

1,默认(轮询)
按照时间请求顺序给分配到不同的服务器

http {
  //写到server上面
  upstream  wppServer {  
            server  192.168.1.1;
            server  192.168.1.2;
  }
  server {
           location  /zaizai {
            proxy_pass http://wppServer;
     }
  }
}

2, weight
设置不同服务器的权重,weight和访问量率成正比,可用于服务器性能分布不均的情况

 upstream  wppServer {  
            server  192.168.1.1 weight = 1;    //1.1的服务器占比10%
            server  192.168.1.2 weight = 3;    //1.2的服务器占比30%
            server  192.168.1.3 weight = 6;    //1.3的服务器占比60%
  }

3,least_conn
根据服务器详情时间来分配,将请求转发给连接数较少的后端服务器。

 upstream  wppServer {  
            least_conn;
            server  192.168.1.1;
            server  192.168.1.2;
  }

4,ip_hash
以上方法可能会产生的问题:
默认下同一个用户在某台服务器上登录,下次在进行登陆时,因为是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失

ip_hash是将每个请求按照访问ip的hash结果进行分配,这种方式可以保证同一个用户会固定访问一个后端服务器。
优点:可以保证session会话,解决服务器之间session不能共享的问题。

 upstream  wppServer {  
            ip_hash;
            server  192.168.1.1;
            server  192.168.1.2;
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容