三、Haproxy四层与七层负载均衡

一、Haproxy介绍

软件:haproxy—主要是做负载均衡的7层,也可以做4层负载均衡
apache也可以做7层负载均衡,但是很麻烦。实际工作中没有人用。

7层负载均衡:用的7层http协议,
4层负载均衡:用的是tcp协议加端口号做的负载均衡


ha-proxy概述
ha-proxy是一款高性能的负载均衡软件。因为其专注于负载均衡这一些事情,因此与nginx比起来在负载均衡这件事情上做更好,更专业。

ha-proxy的特点
ha-proxy 作为目前流行的负载均衡软件,必须有其出色的一面。下面介绍一下ha-proxy相对LVS,Nginx等负载均衡软件的优点。

•支持tcp / http 两种协议层的负载均衡,使得其负载均衡功能非常丰富。
•支持8种左右的负载均衡算法,尤其是在http模式时,有许多非常实在的负载均衡算法,适用各种需求。
•性能非常优秀,基于单进程处理模式(和Nginx类似)让其性能卓越。
•拥有一个功能出色的监控页面,实时了解系统的当前状况。
•功能强大的ACL支持,给用户极大的方便。

haproxy算法:
1.roundrobin
基于权重进行轮询,在服务器的处理时间保持均匀分布时,这是最平衡,最公平的算法.此算法是动态的,这表示其权重可以在运行时进行调整.
2.static-rr
基于权重进行轮询,与roundrobin类似,但是为静态方法,在运行时调整其服务器权重不会生效.不过,其在后端服务器连接数上没有限制
3.leastconn
新的连接请求被派发至具有最少连接数目的后端服务器.

二、haproxy四层与七层配置说明


四层负载均衡配置说明

# 1、mode tcp 表示这是一个四层 TCP 负载均衡
# 2、frontend ft_web 定义了监听的端口
# 3、backend bk_web 定义了后端服务器列表,每个 server 行定义一个后端服务器,
check 选项表示对服务器进行健康检查

七层负载均衡配置说明

# 1、mode http:
这用于指示 HAProxy 在处理请求时要操作到应用层(也就是 HTTP 层面)。
这使得可以对 HTTP 头部、URL 、Cookie 等进行处理和使用。
# 2、option httplog:
这设置 HAProxy 生成的日志包含 HTTP 信息,如请求的方法、URI 等。
# 3、option forwardfor:
这用于插入 X-Forwarded-For 头部信息,这是一个 HTTP 头部信息,用来记录原始客户端的 IP 地址。
# 4、http-request set-header and http-request add-header:
这用于插入或修改 HTTP 请求头信息。

七层负载均衡里加入的配置:option httpchk HEAD / HTTP/1.1\r\nHost:localhost

option httpchk 是 HAProxy 中用于设置 HTTP 健康检查的选项。
如果你不显式设置这个选项,HAProxy 默认会做 TCP 连接检查。
如果你只需要 TCP 层面的检查,确实可以不配置这一行。
但如果需要更精细的 HTTP 层面的检查,则需要添加这个选项。
配置语法
option httpchk <method> <uri> <version>
option httpchk <method> <uri> <version>\r\n<header-name>: <header-value> ...
option httpchk HEAD / HTTP/1.1\r\nHost:localhost 配置的含义是:
1、option httpchk:启用HTTP型的健康检查。
2、HEAD:这个指定了具体使用的HTTP方法是 HEAD。使用HEAD请求可以减少健康检查产生的数据传输量,因为它不获取实际的响应体
3、/:这是要访问以检查服务器健康状态的URI路径,这里是根路径
4、HTTP/1.1:这指定了HTTP协议的版本是1.1。
5、\r\nHost:localhost:这是一个额外的HTTP头部,指定了请求的Host头信息。\r\n 是回车和换行的转义字符,用来分隔HTTP头部。在这里,Host头被设置为 localhost,代表请求将被发送到配置为localhost 的服务器。
注意:
# 1、Host字段值不应设置为localhost,而应该设置为你的域名
# 2、如果请求失败或者超时,那么 HAProxy 会将此服务器标记为不健康, 流量不再会被转发至此服务器,直到下一个正常的健康检查。
其他设置示例
option httpchk HEAD /index.html HTTP/1.1 #更多健康检查请问GPT

总结四层和七层负载均衡的区别包括:

# 1、四层负载均衡工作在传输层,主要关注 IP 和端口,不关注应用层信息如 HTTP 头部、内容等。
# 2、七层负载均衡工作在应用层,因此可以实现更复杂的请求路由策略,如基于 URL、
请求类型等的路由,或者修改 HTTP 头部等。
# 3、四层负载均衡的性能通常要比七层负载均衡高,因为处理的数据更少,
更接近于网络层面,而不需要关心更高层的协议和数据。

二、Haproxy实现七层负载均衡

2.1 准备工作

架构图

file

联系管理员微信tutu19192010,注册账号

上一篇
下一篇
Copyright © 2022 Egon的技术星球 egonlin.com 版权所有 沪ICP备2022009235号 沪公网安备31011802005110号 青浦区尚茂路798弄 联系方式-13697081366