Haproxy负载均衡集群

一、haproxy概念:

Haproxy:他也是常用的负载均衡转发

nginx支持四层转发,七层转发

haproxy也可以四层和七层转发

LVS的DR和NAT是基于四层转发

TUN是四层+七层

基于四层的转发:

  1. LVS
  2. nginx
  3. haproxy

基于七层的转发:

  1. nginx
  2. haproxy

1、haproxy:

主要用于高并发的web站点。工作原理和nginx一样。lvs也一样

可以支持一万以上的并发请求。

高性能的tcp和http负载均衡器

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

3、haproxy缺点:

1、haproxy是单节点部署,单实例运行,代理服务器出现故障,整个负载集群全部不可用(要结合keepalived)

要用haproxy+keepalived实现代理地址的高可用

2、haproxy是一个无状态的负载均衡,没缓存,也灭有会话保持,靠应用程序实现会话保持。状态不是保存在代理服务器,而是在后端服务器,或者依靠Cookie

3、haproxy日志问题:haproxy的日志比较简单,只提供基本的请求日志和错误日志。需要更高级的日志。要人工自定义

4、haproxy的特点:
  1. 可靠性和稳定性非常好,基本上可以和f5 BIG负载均衡的硬件设备相媲美
  2. 可以同时维护4万-5万个并发连接,单位时间内处理最大请求数2万个
  3. 支持8种负载均衡算法。但是haproxy不自带缓存功能,但是可以支持会话保持
  4. 也支持配置虚拟主机功能(可以结合keepalived)

5、haproxy的负载均衡算法:(要写全)
  1. roundrobin 轮询
  2. static-rr 加权轮询
  3. leastconn 最小连接数
  4. source 根据请求的源ip进行调度
  5. uri 根据请求地址进行调度
  6. url param 根据URL参数实现调度
  7. hdr(name)根据http的请求头锁定每一次http的请求
  8. rdp-cookie(name)表示根据Cookie的名称来锁定每一次请求

6、lvs nginx haproxy总结:

1、LVS基于linux内核实现负载均衡,性能最高,但是对系统硬件要求也比较高

haproxy和nginx基于第三方应用实现负载均衡,性能相对较低。(nginx三者最低)

2、LVS可以实现ip+端口的四层负载均衡,无法实现基于http请求的转发。haproxy和nginx都可以实现四层和七层的转发

3、LVS只能实现四层转发,监测的状态只能是单一的功能(检测端口)

haproxy可以实现监测端口、uri也可以

4、haproxy虽然功能强大,但是整体性能低于LVA。nginx的性能低于haproxy

性能排序:LVS——haproxy——nginx(bug多,稳定差,但处理小集群足够)

5、nginx主要应用还是web服务或者缓存服务器,nginx的stream模块(四层)和upstream

(七层)也可以支持集群,但是对节点的健康检查能力较弱,没有LVS和haproxy的监控性能强

二、haproxy实验:

  1. 搭建
  2. 实现四层和七层
  3. 如何实现haproxy的日志单独存放

Haproxy负载均衡集群_第1张图片

关闭防火墙

安装haproxy和环境

yum install -y pcre-devel bzip2-devel gcc gcc-c++ make

tar zxvf haproxy-1.5.19.tar.gz

cd haproxy-1.5.19/

make TARGET=linux2628 ARCH=x86_64

make install

TARGET=linux2628 #内核版本

Haproxy负载均衡集群_第2张图片

Haproxy服务器配置:

mkdir /etc/haproxy

cp /opt/haproxy-1.5.19/examples/haproxy.cfg /etc/haproxy/

Haproxy负载均衡集群_第3张图片Haproxy负载均衡集群_第4张图片

 timeout http-request 10s

 timeout queue 1m

 timeout connect 10s

 timeout client 1m

 timeout server 1m

 timeout http-keep-alive 10s

 timeout check 10s

Haproxy负载均衡集群_第5张图片

下面的全部删除

在下面再插入:

Haproxy负载均衡集群_第6张图片

check inter 2000 fall 3

check intet 开启对后端服务器的健康检查,检查的时间间隔: 2000毫秒fall 3 表示连续3次检测不都后端服务器的心跳线,则认为该节点失效

haproxy系统服务的添加 :

cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy

chmod 777 /etc/init.d/haproxy

chkconfig --add /etc/init.d/haproxy

cd /etc/init.d

ln -s /usr/local/sbin/haproxy /usr/sbin

软连接一定要是绝对路径

systemctl restart haproxy

Haproxy负载均衡集群_第7张图片

后端RS配置:

后端RS启动nginx 改静态页面index.html

关闭nginx的keepalive_timeout

Haproxy负载均衡集群_第8张图片

访问代理服务器:

Haproxy负载均衡集群_第9张图片

四层转发实验:

注释掉之后创建新的

Haproxy负载均衡集群_第10张图片

重启haproxy

访问代理服务器:

Haproxy负载均衡集群_第11张图片

Haproxy负载均衡集群_第12张图片

Haproxy的日志重定义:

Haproxy负载均衡集群_第13张图片

重启服务:

tail -f /var/log/haproxy/haproxy-info.log #查看haproxy的访问请求日志信息

你可能感兴趣的:(web,负载均衡,运维,linux)