先说说什么是负载均衡:
负载均衡指的就是将负载分发到多个操作单元上执行,从而提高服务的可用性和响应速度,带给用户更好的体验。
下图展示了负载均衡的工作原理:
负载均衡主要有四种方式:
1、轮询方式
负载均衡地默认处理方式,每个请求按照时间顺序逐一分配到不同的后台服务器进行处理。
实现方式:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://web_server;
}
}
upstream web_server{
server 192.168.92.130;
server 192.168.92.131;
}
2、权重方式
利用weight指定轮询的权重比率,与访问率成正比,用于后端服务器性能不均的情况。
实现方式:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://web_server;
}
}
upstream web_server{
server 192.168.92.130 weight=1;
server 192.168.92.131 weight=3;
}
3、ip_hash方式
每个请求按访问ip的hash结构分配,这样可以使每个方可固定的访问一个后端服务器,可以解决Session共享问题。
实现方法:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://web_server;
}
}
upstream web_server{
ip_hash;
server 192.168.92.130;
server 192.168.92.131;
}
4、第三方模块
第三方模块采用fair时,按照每台服务器的响应时间来分配请求,响应时间短的优先分配;第三方模块采用url_hash时,按照访问url的hash值来分配请求。
模块有很多这里就不一 一列举了。。。