Linux系统-部署-运维系列导航

 

使用说明

nginx负载均衡需要使用 stream 模块,支持 HTTP 与 TCP 服务。
此处仅说明负载均衡的配置结构,具体参数请自行查阅相关资料。
 

Nginx负载均衡策略

nginx自有策略
  1. 轮询 (默认)
  2. 权重 (weight)
  3. IP地址哈希 (ip_hash)
  4. 最小连接数 (least_conn)
 
第三方策略(安装 upstream_fair 模块)
  1. 最快响应速度 (fair)
  2. 请求地址哈希 (url_hash)
 

HTTP负载均衡结构

worker_processes  4;

events {
    worker_connections  1024;
}

http {
    upstream myhttp {
        server srv1.example.com:port;
        server srv2.example.com:port;
        server srv3.example.com:port;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://myhttp;
        }
    }
}

 

TCP负载均衡结构

worker_processes  4;

events {
    worker_connections  1024;
}

stream {
    upstream mytcp {
        server srv1.example.com:port;
        server srv2.example.com:port;
        server srv3.example.com:port;
    }

    server {
        listen 80;
        proxy_pass mytcp;
    }
}

 

特别事项

  1. TCP的 stream 模块与HTTP的 http 模块配置在同级别,即第一层级,没有嵌套关系
  2. stream与http属于完全不同的模块,没有相互关系
  3. stream与http模块都支持 upstream 负载均衡模块
 

关于常见负载均衡方案对比

DNS负载均衡常用于地域级别的均衡,即根据用户请求的IP所属地区,将请求转发到相应的服务器IP。

软件(Nginx,LVS)和硬件(F5)的最主要区别就在于性能,硬件负载均衡性能远远高于软件负载均衡性能。
Nginx 的性能是万级,一般的 Linux 服务器上装一个 Nginx 大概能到 5 万 / 秒;
LVS 的性能是十万级,据说可达到 80 万 / 秒;
而 F5 性能是百万级,从 200 万 / 秒到 800 万 / 秒都有(数据来源网络,仅供参考,如需采用请根据实际业务场景进行性能测试)。
当然,软件负载均衡的最大优势是便宜,购买一台服务器即可。
 
常见的负载均衡机制:DNS 负载均衡、硬件负载均衡、软件负载均衡,每种方式都有一些优缺点,但并不意味着在实际应用中只能基于它们的优缺点进行非此即彼的选择,反而是基于它们的优缺点进行组合使用。具体来说,组合的基本原则为:DNS 负载均衡用于实现地理级别的负载均衡;硬件负载均衡用于实现集群级别的负载均衡;软件负载均衡用于实现机器级别的负载均衡。
 

参考资料

posted on 2023-09-05 13:07  xiaoyaozhe  阅读(20)  评论(0编辑  收藏  举报