Nginx(四)负载均衡

2020-05-02  本文已影响0人  卡戎li

一、负载均衡简介

负载均衡(Load Balance),意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。

图片.png

二、常见的几种负载均衡实现方式

2.1 软件负载与硬件负载

分类 常见方案 优点 缺点
软件负载 apach、nginx 便宜而且简单灵活 性能不如硬件,支持万级并发
硬件负载 F5、A10、深信服 1.功能强大,支持全局负载均衡提供全面的复杂均衡算法。2.性能强悍,支持百万以上的并发。3.提供安全功能,例如防火墙,防DDos攻击等。 贵,扩展能力差,不支持动态扩容
图片.png

2.2 客户端负载与服务端负载

分类 含义 常见方案 优点 缺点
服务器负载 是指在服务器上游做服务分发 DNS域名解析负载均衡、反向代理负载均衡 / /
客户端负载 客户端自己维护一个可用服务器地址列表,在发送请求前先通过负载均衡算法选择一个将用来处理本次请求的服务器,然后再直接将请求发送至该服务器。 Ribbon / /

三、Nginx 的4种负载均衡实现方式

3.1 轮询(默认)

//proxy.conf
upstream    node    {
    server  你的IP:8081;
    server  你的IP:8082;
    server  你的IP:8083;
}
server  {
    server_name localhost;
    listen  80;
        location    /   {
        proxy_pass  http://node;
        proxy_set_header    Host    $http_host;
        proxy_set_header    X-Real-IP   $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

3.2 权重

upstream    node    {
    server  你的IP:8081 weight = 10;
    server  你的IP:8082 weight = 20;
    server  你的IP:8083  weight = 30;
}

3.3 ip hash

upstream    node    {
    hash $request_uri;
    server  你的IP:8081;
    server  你的IP:8082;
    server  你的IP:8083;
}

3.4 最少连接

least_conn指令实际的含义就是,选取活跃连接数与权重weight的比值最小者为下一个处理请求的server。当然,上一次已选的server和已达到最大连接数的server照例不在选择的范围。

upstream backend {
    least_conn;
    server 10.10.10.2 weight=2;
    server 10.10.10.4 weight=1;
    server 10.10.10.6 weight=1; 
}

假如上一个请求选择了第二台10.10.10.4,下一个请求到来,通过比较剩下可用的server的conns/weight值来决定选哪一台。

如果10.10.10.2连接数为100,10.10.10.6连接数为80,因为权重分别是2和1,因此计算结果
100/2=50, 80/1 =80。因为 50 < 80 所以选择第一台而不选第三台。尽管连接数第一台要大于第三台。

参考博客:
https://www.cnblogs.com/fanBlog/p/10936190.html
https://www.cnblogs.com/gucb/p/11237765.html

上一篇 下一篇

猜你喜欢

热点阅读