Nginx不光可以实现Web Server,还可以作为HTTP负载均衡来分发流量给后端的应用程序服务器,以此来提高性能。Nginx的负载均衡功能依赖于ngx_http_upstream_module模块,所支持的代理方式有proxy_pass,fastcgi_pass,memcached_pass。
Nginx常用负载均衡算法:
轮询(默认算法)——每个请求会依次分配给后端不同的应用程序服务器,不理会后端服务器的实际压力
加权轮询——权重越大的服务器,被分配到的次数就会越多,通常用于后端服务器性能不一致的情况
IP HASH——当同IP进行重复访问时会被指定到上次访问到的服务器,可以解决动态网站SESSION共享问题
upstream模块常用参数说明:
server 192.168.0.100:80 负载均衡后端RealServer的IP或者域名,端口不写的话默认为80。高并发场景用域名,再通过DNS进行负载均衡
weight=5 权重,默认为1,权重越大接收的请求越多
max_fails=2 最大尝试的失败次数,默认为1,0表示禁止失败尝试
fail_timeout=10s 失败超时时间,默认是10秒,通常3s左右比较合适
backup 热备配置,前段RealServer出现问题后会自动上线backup服务器
down 标志服务器不可用,这个参数通常配合IP_HASH使用
具体配置
A服务器的nginx.conf配置文件:
upstream demo.com {
server 192.168.2.3:8080;
server 192.168.2.4:8081;
server 192.168.2.5:8082;
}
server{
listen 80;
server_name www.demo.com;
location / {
proxy_pass http://demo.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
B配置:
server {
listen 8180;
server_name www.demo.com;
index index.html;
root /data/www/demo;
}
C配置:
server{
listen 8181;
server_name www.demo.com;
index index.html;
root /data/www/demo;
}
D配置:
server{
listen 8182;
server_name www.demo.com;
index index.html;
root /data/www/demo;
}
重启,我们访问下,当我们把一台服务器给关闭了后。访问网址,还是OK的。
那么负载均衡如何保持通话呢?当然现在有好几种方案,我们这次只是讲一种。
IP哈希策略
优点:能较好地把同一个客户端的多次请求分配到同一台服务器处理,避免了加权轮询无法适用会话保持的需求。
缺点:当某个时刻来自某个IP地址的请求特别多,那么将导致某台后端服务器的压力可能非常大,而其他后端服务器却空闲的不均衡情况。
nginx的哈希策略配置:
upstream demo.com {
server 192.168.2.3:8080;
server 192.168.2.4:8081;
server 192.168.2.5:8082;
ip_hash;
}
¥ 1.88微信扫描即可打赏
服务器好贵
网站需要运营
给点小费以表支持
评论已关闭