1. 负载均衡的作用
1.1 转发
转发是负载均衡的核心功能,他是根据一定的算法,将客户端请求转发到不同服务器,缓解每台服务器的压力,提高并发量。
1.2 故障移除
当其中一台服务器发生故障时,会被移除轮询策略,客户端请求将会发送到其他几台正常的服务器,不会影响服务器的访问。
1.3 恢复添加
当故障的机器恢复后,会被增加到轮询队列,继续处理客户端请求。
2. Nginx配置
切记,Nginx默认配置是轮询算法
首先说一下,一定要在Nginx的安装目录
,安装目录
,安装目录
进行配置,不要像我一样,在源文件的目录配置,整了一天也配置不出来!!!
2.1 轮询算法
如下是Nginx的基本配置,upstream
配置要负载的节点。nodes可以自己取,要跟server
中proxy_pass
的nodes
一致。
server_name
可以是Nginx服务器的ip地址,也可以是域名,根据具体情况配置即可,listen
为端口号。
upstream nodes {
server 192.168.1.11;
server 192.168.1.12;
}
server {
listen 80;
server_name 127.0.0.1;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://nodes;
index index.html index.htm;
}
}
使用以上配置,默认采用轮询的分发策略,即每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继续轮询。
2.2 权重
如果需要为每个请求节点配置不同的权重,可以在地址后面增加权重,配置如下
upstream nodes {
server 192.168.1.11 weight=4;
server 192.168.1.12;
}
通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。weight默认为1,weight越大,负载的权重就越大。
2.3 Ip Hash算法
还有一种策略是IP哈希算法,请求按访问ip的hash结果分配,这样每个IP固定访问一个应用服务器,可以解决session共享的问题,配置如下
upstream nodes {
ip_hash;
server 192.168.1.11;
server 192.168.1.12;
}
因为访问者的IP地址是固定的,那么根据IP地址的Hash值也是感光固定的,那么一个ip就一直访问对应的那个服务器,不会跨服务器!
2.4 less_conn 最少连接
least_conn策略是将web请求分发到连接数最少的服务器上,参考配置如下:
upstream myserver{
least_conn;
server 192.167.40.3:8080;
server 192.167.40.4:8081;
}
2.5 fiar(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream server_pool{
server 192.168.5.21:80;
server 192.168.5.22:80;
fair;
}
fair不是Nginx内置的算法,需要安装第三方的插件才能生效!一般在Ningx中安装!
在一般的实际开发中,Nginx配置是轮询+权重
3 负载均衡备份与宕机
3.1 备份backup配置
当其他非backup机器挂掉后,才会请求backup机器,参考配置如下:
upstream myserver{
server 192.167.40.3:8080;
server 192.167.40.4:8081 backup;
}
3.2 宕机down配置
配置down的服务器不参与负载均衡,这样down所标记的服务器就可以安心的升级了,参考配置如下:
upstream myserver{
server 192.167.40.3:8080;
server 192.167.40.4:8081 down;
}
这两个配置多用于运维,维护某个机器的时候