介绍

HAProxy(高性能-代理)目前是一款使用广泛的软负载均衡器,它可以实现TCP/HTTP的负载均衡。

  • 特性:
    • 免费开源
    • 最大并发量能达到5w
    • 支持多种负载均衡算法,同时支持session保持
    • 支持虚拟主机
    • 拥有服务的监控页面,可以了解系统的实时运行状态
    • 通常不会去做正向代理(squid)
    • 通常会不会去做缓存服务(varnish)
    • 不用于web服务器
    • 不会改变请求和响应报文
    • 不是基于数据包的负载均衡器,看不到ip数据包
    • 参考文档:https://cbonte.github.io/haproxy-dconv/
  • 安装
  1. [root@node1 ~]# yum install haproxy y
  2. /etc/haproxy/haproxy.cfg # 主配置文件
  3. /usr/lib/systemd/system/haproxy.service # 守护进程服务
  4. 默认配置:
  5. [root@node1 ~]# cat /etc/haproxy/haproxy.cfg | grep Ev "^#|^$"
  6. global
  7. # to have these messages end up in /var/log/haproxy.log you will
  8. # need to:
  9. #
  10. # 1) configure syslog to accept network log events. This is done
  11. # by adding the '‐r' option to the SYSLOGD_OPTIONS in
  12. # /etc/sysconfig/syslog
  13. #
  14. # 2) configure local2 events to go to the /var/log/haproxy.log
  15. # file. A line like the following can be added to
  16. # /etc/sysconfig/syslog
  17. #
  18. # local2.* /var/log/haproxy.log
  19. #
  20. log 127.0.0.1 local2
  21. chroot /var/lib/haproxy
  22. pidfile /var/run/haproxy.pid
  23. maxconn 4000
  24. user haproxy
  25. group haproxy
  26. daemon
  27. # turn on stats unix socket
  28. stats socket /var/lib/haproxy/stats
  29. defaults
  30. mode http
  31. log global
  32. option httplog
  33. option dontlognull
  34. option httpserverclose
  35. option forwardfor except 127.0.0.0/8
  36. option redispatch
  37. retries 3
  38. timeout httprequest 10s
  39. timeout queue 1m
  40. timeout connect 10s
  41. timeout client 1m
  42. timeout server 1m
  43. timeout httpkeepalive 10s
  44. timeout check 10s
  45. maxconn 3000
  46. frontend main *:5000
  47. acl url_static path_beg i /static /images /javascript /stylesheets
  48. acl url_static path_end i .jpg .gif .png .css .js
  49. use_backend static if url_static
  50. default_backend app
  51. backend static
  52. balance roundrobin 定义后端算法
  53. server static 127.0.0.1:4331 check 定义后端servers
  54. backend app
  55. balance roundrobin #定义后端算法
  56. server app1 127.0.0.1:5001 check #定义后端servers
  57. server app2 127.0.0.1:5002 check
  58. server app3 127.0.0.1:5003 check
  59. server app4 127.0.0.1:5004 check
  60. global:全局配置项 defaultfrontendbackendlisten:代理相关配置项
  • 全局配置
    • log 定义全局的syslog服务器
    • chroot 定义工作目录
    • pidfile 指定PID
    • maxconn 定义最大并发数
    • user 用户名
    • group 组名
    • daemon 以守护进程方式工作于后台
  • 默认配置
    • mode 运行模式或协议
    • log 定义每个实例启用事件和流量日志
    • option httplog
    • option dontlognull
    • option http‐server‐close
    • option forwardfor except 127.0.0.0/8
    • option redispatch
    • retries 3
    • timeout http‐request 10s
    • timeout queue 1m
    • timeout connect 10s
    • timeout client 1m
    • timeout server 1m
    • timeout http‐keep‐alive 10s
    • timeout check 10s
    • maxconn 定义最大并发数
  • 监听配置:通过关联frontend和backend定义了一个完整的代理,通常只对tcp流量有限

    实验

  • 环境准备:
    • web1 127.0.0.1:8081
    • web2 127.0.0.1:8082
    • HAProxy 192.168.10.10:8080