Appearance
集群
功能全部一模一样的服务器,访问任意一台的结果都是一样的,当其中一台不可用时,可以访问另外一台,用于负载均衡。
轮询式负载均衡
当多个请求到来时,依次向集群中的服务器逐一转发,适用于无状态请求。当访问时发现服务器故 障了,retry 机制会去向下一台服务器请求。唯一的缺点就是无法保持会话(session)。 通过 SpringSession 将 session 都存储在一台 redis 服务器中。
nginx
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 负载均衡
upstream httpds {
server 192.168.44.102:80;
server 192.168.44.103:80;
}
server {
listen 80;
server_name www.rainx.top;
location / {
# 负载均衡要配合着反向代理使用
proxy_pass http://httpds;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}负载均衡策略
nginx
upstream httpds {
# weight 表示权重,权重越高,被请求的次数就会越多,性能高的服务器可以设置高权重。
server 192.168.44.102:80 weight=8;
server 192.168.44.103:80 weight=2;
# down 表示不参与负载均衡
server 192.168.44.104:80 weight=1 down;
# backup 表示备用服务器,正常情况下不会被使用到,当其它服务器都不可以使用时才会
# 被使用到。
server 192.168.44.105:80 weight=1 backup;
}其它的负载均衡策略
ip_hash
根据客户端的 ip 地址转发同一台服务器,可以实现保持绘画,但由于移动端 ip 经常改变, 已经不太适用了。
least_conn
最少连接访问
url_hash
根据用户访问的 url 定向转发请求,只有在固定资源不在同一台服务器,分布在各个服务器中 时才会用到。
fair
根据后端服务器响应时间转发请求