Nginx负载均衡配置实例
面对高并发的问题,企业往往会从两个方面来解决。其一,从硬件上面,提升硬件的配置,增加服务器的性能;另外,就是从软件上,将数据库和WEB服务器分离,使数据库和WEB服务器都能够充分发挥各自的性能,并且二者不相互影响。然而,这样还不够,一台WEB服务器可能无法承受太高的并发请求。那么负载均衡技术就应运而生,下面我们就来谈谈如何用Nginx进行负载均衡。
负载均衡的作用
1.转发
转发是负载均衡的核心功能,它能够根据一定的算法,将客户端请求转发到不同应用服务器,缓解每台服务器的压力,提高并发量。
2.移除故障
当其中一台服务器发生故障时,会被移出轮询队列,客户端请求将会发送到其他几台正常的服务器,不会影响客户端的访问。
3.恢复添加
当故障的服务器恢复时,会自动被加到轮询队列,继续处理客户端请求。
Nginx配置
轮询
如下是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掉,自动剔除,剩下的继续轮询。
权重
如果需要为每个请求节点配置不同的权重,可以在地址后面增加权重,配置如下
upstream nodes {
server 192.168.1.11 weight=4;
server 192.168.1.12;
}
通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。weight默认为1,weight越大,负载的权重就越大。
IP哈希算法
还有一种策略是IP哈希算法,请求按访问ip的hash结果分配,这样每个IP固定访问一个应用服务器,可以解决session共享的问题,配置如下
upstream nodes {
ip_hash;
server 192.168.1.11;
server 192.168.1.12;
}
其他
upstream中还有其他几个常用的配置项:
down: 表示当前的server不參与负载均衡
max_fails: 允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
fail_timeout: max_fails次失败后,暂停请求此台服务器的时间
backup: 其他全部的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻
upstream nodes {
server 192.168.1.11 down;
server 192.168.1.12 backup;
server 192.168.1.13;
}
以上就是Nginx的一些基本配置,能够满足基本的使用,大家可以动手测试一下。
下载地址:https://nginx.org/en/download.html,下载后解压即可。配置文件为conf/nginx.conf,修改好配置文件后双击nginx.exe启动。
作者:华丽的码农
邮箱:codernice@163.com
个人博客:https://www.codernice.top
GitHub:https://github.com/codernice
转载请标明出处,谢谢!