您的位置:首页 > 运维架构 > Nginx

NGINX作负载均衡应用案例

2018-03-13 12:28 405 查看
    Nginx的负载均衡是通过upstream命令实现的,其负载均衡机制较为简单,基于内容和应用的7层交换负载均衡的实现。nginx对后端服务器有较弱的健康监测机制,但是仅限于端口检测,因此当后端服务器少于10台时,表现能力较为突出。当后端有大量节点时,由于所有访问都从一台进出,容易引发堵塞导致访问失败,因此无法充分发挥后端服务器的性能。
    Nginx有如下几种调度算法:

1.轮询(默认),按照请求时间逐一分配到后端节点,健康监测触发时,自动剔除故障节点。
2.weight 手动指定轮询权值 ,weight值越大,受防几率越高,应用于后端节点性能不一的情况下。
3.ip_hash 每个请求按访问ip的哈希结果分配,来自同一个ip的访问固定访问同一个后端节点,可以有效解决动态网页存在的session共享问题
4.fair 该功能需要nginx支持upstream_fair模块,本文不做介绍
5.url_hash 按url的哈希结果按分配请求,使每一个url定向到同一个节点,可以进一步提高缓存服务器效率,默认是不支持url_hash的,需要安装nginx的hash软件包提供支持。
在http Upstream模块中。通过server命令来指定后端节点的IP地址和端口,同时还可以设定每台节点的状态,常用状态如下:
1.down 表示为当前节点不参与负载
2.backup 表示为预留的备份节点,当所有的非backup节点都出现故障时,才请求该节点。
3.max_fails 表示为允许请求失败的次数,默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误
4.fail_timeout 在经历max_fails的失败后,暂停服务的时间,可以与max_fails同时使用
注意:当负载算法为ip_hash时,后端节点状态不能是weight和backup

配置示例:(部分配置)
请求www.myupstream.com站点将跳转到nginx负载均衡后端节点,192.168.10.129:5001端口和5002端口,权重分别为1和2,
其中两台后端虚拟节点,192.168.10.129:5001跳转到百度页面,192.168.10.129:5002重定向到我的个人博客地址 http://blog.csdn.net/jeccisnd
http {
    upstream newserver {
server 192.168.10.129:5001 weight=1 max_fails=3 fail_timeout=20s;
server 192.168.10.129:5002 weight=2 max_fails=3 fail_timeout=20s;
}
server
{
listen 80;
server_name www.myupstream.com;
index index.html;

location / {
proxy_pass http://newserver; proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
}
}
server
{
listen 5001;
server_name 192.168.10.129;
index index.html;

location / {
proxy_pass http://www.baidu.com/; }
}

server
{
listen 5002;
server_name 192.168.10.129;
index index.html;

location / {
rewrite ^/(.*)$ http://blog.csdn.net/jeccisnd/$1 permanent;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nginx 负载均衡