HAproxy 使用

HAproxy^1^ 可以实现基于 TCP(四层,SSH、SMTP、MYSQL)和 HTTP(七层,WEB)应用代理软件,同时也可以作为负载均衡使用。 HAproxy 可以支持数以万计的并发连接,同时可以保护 WEB 服务不暴露到网络上。

[TOC]

主流负载均衡软件对比^2^

LVS

  1. 抗负载能力强,性能高,能达到 F5 硬件的 60%,对内存和 cpu 资源消耗比较低 ;

  2. 工作在网络 4 层,具体的流量由 linux 内核处理,因此没有流量的产生;

  3. 稳定性、可靠性好,自身有完美的热备方案(如:LVS+Keepalived);

  4. 应用范围比较广,可以对所有应用做负载均衡;

  5. 不支持正则处理,不能做动静分离;

  6. 支持负载均衡算法:rr(轮循)、wrr(带权轮循)、lc(最小连接)、wlc(权重最小连接);

  7. 配置复杂,对网络依赖比较大,稳定性很高。

Ngnix

  1. 工作在网络的 7 层之上,可以针对 http 应用做一些分流的策略,比如针对域名、目录结构; (补充:现在同样支持 4 层负载,类似 LVS 的 NAT 模式)

  2. Nginx 对网络的依赖比较小,理论上能 ping 通就就能进行负载功能;

  3. Nginx 安装和配置比较简单,测试起来比较方便;

  4. 可以承担高的负载压力且稳定,一般能支撑超过 1 万次的并发;

  5. 对后端服务器的健康检查,只支持通过端口来检测,不支持通过 url 来检测;

  6. Nginx 对请求的异步处理可以帮助节点服务器减轻负载;

  7. Nginx 仅能支持 http、https 和 Email 协议,这样就在适用范围较小;(补充:同第一点)

  8. 不支持 Session 的直接保持,但能通过 ip_hash 来解决,对 Big request header 的支持不是很好;

  9. 支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、Ip-hash(Ip哈希);

  10. Nginx 还能做 Web 服务器与 Cache 服务器。

HAProxy的特点

  1. 支持两种代理模式:TCP(四层)和 HTTP(七层),支持虚拟主机;

  2. 能够补充 Nginx 的一些缺点,比如 Session 的保持,Cookie 的引导等;

  3. 支持后端的服务器 URL 检测;

  4. 负载均衡策略:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash), 加权 URL 哈希和加权参数哈希(Weighted Parameter Hash)已经实现 ;

  5. 单纯从效率上来讲 HAProxy 比 Nginx 有更出色的负载均衡速度;

  6. HAProxy 可以对 Mysql 进行负载均衡,对后端的 DB 节点进行检测和负载均衡;

  7. 支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、 RI(请求URL)、rdp-cookie(根据cookie);

  8. 不能做 Web 与 Cache 服务器。

配置文件^3^

  1. globe:参数时进程级别的,通常是和操作系统相关。

  2. defaults:默认参数,这些参数可以用到 frontend,backend,listen 组件。

  3. frontend:接受请求的前端虚拟节点,可以增加规则指定后端的 backend;

  4. backend:后端服务集群的配置,是真实存在的服务器,一个 backend 对应一个或者多个服务器。

  5. listen:frontend 和 backend 的组合体(即 frontend 和 backend 合写)。

  6. 检查配置是否正确

Last updated

Was this helpful?