什么是负载均衡
如果一台服务器在某一段时间内访问量变大时,服务器的压力就会越来越大,所使用的cpu和内存大到超过服务器本身时,服务器就会崩溃,为了防止这种情况发生,可以通过负载均衡的方式来分担这台服务器的压力。
举例: 淘宝,京东,12306等等;
建立一些服务器,组成一个服务器集群,当用户访问时,先访问一个中间的放服务器,由这个服务器去选择服务器集群中压力较小(cpu,内存剩余较大)的服务器,然后将访问请求引入该服务器,这样可以保证服务器集群中的每个服务器的压力趋于平衡,分担了中间服务器的压力,可以避免服务器崩溃的情况发生。
负载均衡是用反向代理的原理实现的
负载均衡的常用方式
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;
}