负载均衡(Load Balance):其含义就是将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提供网络的可用性和灵活性。
upstream demo_server {
server 192.168.184.20:8080;
server 192.168.184.20:8081;
server 192.168.184.20:8082;
}
server {
listen 80;
server_name balance.kutian.edu;
location /balance/ {
proxy_pass http://demo_server;
}
}
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
upstream demo_server_1 {
server 192.168.184.20:10020;
server 192.168.184.20:10010;
}
哈希算法是将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值我们称之为哈希值,散落明文到哈希值的映射是不可逆的
语法:hash key [ consistent ]
默认值:无
上下文:upstream
upstream demo_server_1 {
hash $request_uri;
server 192.168.184.20:10020;
server 192.168.184.20:10010;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://demo_server_1;
}
}
同一个uri只会分配到同一个服务器,可以防止在每个服务器都产生缓存,增加服务器负担
语法:ip_hash;
默认值:无
上下文:upstream
含义:指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题
upstream demo_server_1 {
ip_hash;
server 192.168.184.20:10020;
server 192.168.184.20:10010;
}
从上游服务器,挑选一台已建立连接数最少的分配请求
least_conn
指令
模块ngx_http_upstream_least_conn_module,禁用通过–without-http_upstream_least_conn_module
参数 | 含义 |
---|---|
down | 表示当前的server暂时不参与负载 |
weight | 默认为1,值越大,负载的权重越大 |
max_fails | 默认为1,允许请求失败的次数,当超过时,返回http_next_upstream 模块定义的错误 |
fail_timeout | max_fails一次失败后,暂停的时间 |
backup | 备用,其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻 |
error timeout
;非幂等请求表示会对服务器内容产生影响的请求,比如post,delete…
含义:当上游服务器返回何种错误值时转发到下一个服务器