Nginx作为负载均衡服务

作者: InnocenceYWQ | 来源:发表于2018-08-19 20:20 被阅读12次

    Nginx负载均衡

    应用情况

    Nginx作为负载均衡主要有以下几点理由:

    • 高并发连接
    • 内存消耗少
    • 配置文件非常简单
    • 成本低廉
    • 支持Rewrite重写规则
    • 内置的健康检查功能
    • 节省带宽
    • 稳定性高
    架构
    image.png

    上图为来自官方的一张总体架构图。
    nginx在启动后,会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程。工作进程以非特权用户运行。
    master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。
    worker进程则是处理基本的网络事件。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。
    开发模型:epoll和kqueue。
    支持的事件机制:kqueue、epoll、rt signals、/dev/poll 、event ports、select以及poll。
    支持的kqueue特性包括EV_CLEAR、EV_DISABLE、NOTE_LOWAT、EV_EOF,可用数据的数量,错误代码.
    支持sendfile、sendfile64和sendfilev;文件AIO;DIRECTIO;支持Accept-filters和TCP_DEFER_ACCEP.

    性能

    Nginx的高并发,官方测试支持5万并发连接。实际生产环境能到2-3万并发连接数。10000个非活跃的HTTP keep-alive 连接仅占用约2.5MB内存。三万并发连接下,10个Nginx进程,消耗内存150M。淘宝tengine团队说测试结果是“24G内存机器上,处理并发请求可达200万”。

    协议支持

    Nginx工作在网络的7层,可以针对http应用本身来做分流策略。支持七层HTTP、HTTPS协议的负载均衡。对四层协议的支持需要第三方插件-yaoweibin的ngx_tcp_proxy_module实现了tcp upstream。

    image.png

    四层负载均衡和七层负载均衡

    四层:

    image.png
    七层:
    image.png

    nginx实现的负载均衡(7层)

    image.png

    配置语法:

    syntax: upstream name{...}
    default: -
    context:http
    

    Upstream举例:

    upstream backend {
        server backend1.example.com weight=5;
        server backend2.example.com:8080;
        server unix:/tmp/backend3;
        
        server backup1.exmple.com:8080 backup;
        server backup2.example.com:8080 backup;
    }
    
    image.png image.png

    相关文章

      网友评论

        本文标题:Nginx作为负载均衡服务

        本文链接:https://www.haomeiwen.com/subject/kdntiftx.html