文档章节

Nginx负载均衡算法与高可用的实现

菜鸟一直在成长
 菜鸟一直在成长
发布于 2017/03/09 14:43
字数 885
阅读 103
收藏 1

Nginx常用负载均衡算法

  • 轮询(默认算法)——每个请求会依次分配给后端不同的应用程序服务器,不理会后端服务器的实际压力
  • 加权轮询——权重越大的服务器,被分配到的次数就会越多,通常用于后端服务器性能不一致的情况
  • IP HASH——当同IP进行重复访问时会被指定到上次访问到的服务器,可以解决动态网站SESSION共享问题

负载均衡配置

Nginx的upstream模块相当于是建立一个函数库一样,把后端的服务器地址放在了一个池子里,而proxy模块则是从这个池子里调用了这些服务器。

  1. 默认的负载均衡配置,当用户访问www.xxxxx.com站点时,Nginx会负载平衡分配给后端的三个服务器。
http {        #upstream模块包含在http模块下
    upstream  xxxxx{        #定义upstream名字,下面会引用
        server 192.168.1.100;        #指定后端服务器地址
        server 192.168.1.110;        #指定后端服务器地址
        server 192.168.1.120;        #指定后端服务器地址
    }

    server {
        listen 80;
        server name www.xxxxx.com;
        location / {
            proxy_pass http://xxxxx;        #引用upstream
        }
    }
}
  1. 加权负载均衡.每3个请求分配给192.168.1.100,然后第4个请求会分配给192.168.1.110,如此循环下去。
http {      
    upstream  xxxxx{        
        server 192.168.1.100 weight=3;        #指定后端服务器地址,权重为3
        server 192.168.1.110;      
    }

    server {
        listen 80;
        server name www.xxxxx.com;
        location / {
            proxy_pass http://xxxxx;        
        }
    }
}
  1. IP HASH负载均衡。如果需要将客户与后端一台服务器“绑定”起来,可以使用i此机制。这样可以确保来自相同客户机的请求总是指向相同的服务器除非该服务器不可用。
upstream xxxxx{
    ip_hash;        #采用IP HASH算法
    server 192.168.1.100;
    server 192.168.1.110;
    server 192.168.1.120;
}

高可用的实现

利用backup标签,可以实现高可用,当主服务挂掉后,backup服务器会自动接管服务,当主服务恢复后,backup也会自动放弃服务

http {      
    upstream  xxxxx{        
        server 192.168.1.100 
        server 192.168.1.110 backup;  
    }
    server {
        listen 80;
        server name www.xxxxx.com;
        location / {
            proxy_pass http://xxxxx;        
        }
    }
}

http_proxy_module常用参数

  • proxy_set_header:让后端服务器能获取到前端用户真实IP,而不只是代理服务器的IP
  • proxy_set_header Host $host; #当后端服务器配置多个web站点时,该选项可以让服务器识别出具体要访问的是哪个站点,而不会将第一个站点作为默认站点传递给用户
  • proxy_set_header X-Forwarded-For $remote_addr; #如果后端服务器需要获取用户的真实IP,需要该选项
  • client_body_buffer_size:客户端请求主体缓冲区大小
  • proxy_connect_timeout:代理服务器和后端真实服务器握手连接超时时间
  • proxy_send_timeout:后端服务器回传数据给Nginx的时间,需要在设置的时间范围内发送完所有数据,否则Nginx将断开连接
  • proxy_read_timeout:代理服务器和后端服务器连接成功后,等待后端服务器响应时间

###前端Nginx反向代理,获取客户端真实IP

location ~ \.(jsp|jspx|do)?$ {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://tomcat_server;

本文转载自:http://www.linuxidc.com/Linux/2016-04/130350.htm

菜鸟一直在成长
粉丝 5
博文 43
码字总数 18676
作品 0
丰台
私信 提问
lvs+keepalived 高可用负载均衡模式分析

1. 前言 在《keepalived 双机热备》这篇文章中,我写了利用keepalived 这个开源软件实现高可用的功能,以及keepalived 高可用所使用的协议——利用vrrp 协议,在高可用网络组内广播自己的优先...

hello_cjq
2018/03/30
0
0
LVS(DR)+keepalived实现高可用负载均衡

一、lvs+keepalived 1、lvs LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一...

nmshuishui
2014/05/03
0
0
服务器集群之keepalived配置高可用(资料)

Linux集群概述 • 根据功能划分为两大类:高可用和负载均衡 • 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 • 实现高可用的开...

寰宇01
2018/05/24
0
0
Linux集群:搭建高可用集群

一、集群介绍 根据功能划分为两大类:高可用和负载均衡; 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务; 实现高可用的开源软件...

BatmanLinux
2018/10/24
0
0
域名到站点的负载均衡技术一览(主要是探讨一台Nginx抵御大并发的解决方案)(转)

继上一篇文章Http://www.cnblogs.com/EasonJim/p/7807794.html中说到的,Nginx虽然很强大,但是面对大并发时,一台Nginx总是有限的。即使后端有多台Nginx组成的集群时,前端毕竟只有一台Ngi...

easonjim
2017/11/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

FPGA 设备 USB Platform Cable USB

lsusbFuture Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC

MtrS
今天
4
0
lua web快速开发指南(6) - Cache、DB介绍

"数据库"与"缓存"的基本概念 数据库与缓存是服务端开发人员的必学知识点. 数据库 "数据库"是一种信息记录、存取的虚拟标记地点的集合统称. 比如现实生活中, 我们经常会用到文件柜、书桌等等数...

水果糖的小铺子
今天
9
0
Oracle分页查询语句的写法

Oracle分页查询语句的写法 Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,Oracle分页查询语句基本上可以按本文给出的格式来进行套用。   Oracle分...

康师傅
昨天
5
0
java并发图谱

1527
昨天
2
0
Mybatis之拦截器Interceptor

使用mybatis时用PageHelper进行分页,用到了PageInterceptor,借此了解下mybatis的interceptor。Mybatis的版本是3.4.6,MybatisHelper的版本是5.1.3。 1、PageInterceptor 先上一段代码,如下...

克虏伯
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部