haproxy

概念:

Haproxy:他也是常用的负载均衡软件

Nginx:支持四层转发(只能转发数据),七层转发(转发数据和协议)

Haproxy:也可以四层和七层转发

LVS的DR和nat是基于四层还是七层转发?

答:四层转发

Tun:四层加七层转发

基于四层转发:

  1. LVS
  2. Nginx
  3. Haproxy

基于七层:

  1. Nginx
  2. Haproxy

Haproxy基于C语言开发的一个开源软件,可以支持一万以上的高并发发请求

高性能的tcp和HTTP负载均衡器2.4  1.5.9

Haproxy:主要用于高并发的web站点,工作原理和nginx一样,LVS一样

支持的功能:

  1. tcp和http的反向代理
  2. https的代理配置
  3. 可以针对http请求添加cookie,转发到后端服务器(添加缓存)
  4. 也支持主备服务器的切换(keepalived)
  5. 基于端口的实时监控
  6. 压缩响应报文

Haproxy的特点:

  1. 可靠性和稳定比较好,可以和硬件(f5 BIG)负载均衡的硬件设备相媲美
  2. 可以同时维护40000-50000个并发连接,单位时间内处理最大请求数20000个
  3. 支持8种负载均衡算法,但是haproxy不带缓存功能,但是可以支持会话保持
  4. 可以以支持配置虚拟主机

Haproxy的负载均衡算法:

  1. roundrobin rr 轮询
  2. Static-rr wrr 加权轮询
  3. Leastconn 最小连接数
  4. Source 根据请求的源IP进行调度sh
  5. Uri 根据请求地址进行调度
  6. Url param 根据URL的参数进行调度
  7. Hdr(name) 表示根据http的请求头锁定每一次http的请求
  8. Rdp-cookie(name)表示根据cookie的名称来锁定每一次的请求

LVS Nginx haproxy三者的区别

  1. LVS基于Linux内核来实现负载均衡,性能最高,但是对系统的硬件要求也比较高,haproxy和Nginx基于第三方应用实现负载均衡,性能较低,最低得出就是nginx
  2. LVS可以实现IP+端口的四层负载均衡,无法实现http请求的转发,haproxy和nginx都可以实现四层和七层的转发技术
  3. LVS只能实现四层转发,监测状态只能是单一的功能(监测端口)
  4. Haproxy可以实现端口,uri也可以
  5. Haproxy虽然功能强大,但是整体性能低于LVS Nginx的性能比haproxy低

  优先级:LVS---haproxy----Nginx(bug多,稳定性也差)

  1. Nginx主要应用还是提供web服务或者缓存服务器,nginx的stream模块upstream也可以支持集群,但是对节点的健康检测能力不足,没有LVS和haproxy的监控能力好

Haproxy缺点:

  1. 单节点部署,单实例运行,代理服务器出现故障,整个负载集群全部不可用
  2. 是一个无状态的负载均衡器,没缓存,也没有会话保持,靠应用程序实现会话保持,状态不是保存在代理服务器,而在后端服务器,或者依靠cookie
  3. 日志问题:haproxy的日志比较简单,只能提供基本的请求日志错误,需要更高级的日志,人工自定义

实验:

1.实现七层

haproxy_第1张图片

先配置代理服务器

haproxy_第2张图片

haproxy_第3张图片

haproxy_第4张图片

haproxy_第5张图片

haproxy_第6张图片

haproxy_第7张图片

haproxy_第8张图片

haproxy_第9张图片

haproxy_第10张图片

创建软连接要用绝对路径,否则报错

验证实验效果:

为了实验效果,关闭keepalived,在Nginx配置文件中中注释掉

haproxy_第11张图片

第二个实验:http四层转发

注释掉七层

haproxy_第12张图片

模拟节点故障

恢复故障,依然运行正常

日志存放路径

haproxy_第13张图片

写一个日志可检测脚本

haproxy_第14张图片

Rsyslog.d系统存放日志目录

haproxy_第15张图片

你可能感兴趣的:(lvs)