haproxy基础

HAProxy (High Availability Proxy) 是一款强大的开源负载均衡器和代理服务器。它主要用于提高 Web 应用程序和服务的可用性和性能。HAProxy 可以在 TCP 和 HTTP 层面上工作,并且支持多种负载均衡算法,广泛应用于高流量网站和大型分布式系统中。

社区版与企业版网站:[HAProxy Technologies ]

网站界面

企业版与社区版区别

HAProxy (High Availability Proxy)的主要功能:

1. 负载均衡:
   - 支持多种负载均衡算法,如轮询(Round Robin)、最少连接(Least Connections)、源地址哈希(Source Address Hashing)等。

2. 健康检查:
   - 自动检测后端服务器的健康状态,并在服务器出现故障时将其从负载均衡池中移除,以避免向故障服务器发送请求。

3. 会话保持:
   - 支持基于 cookie 的会话保持,确保来自同一个客户端的请求被定向到相同的后端服务器,以维持会话的一致性。

4. 高级路由:
   - 支持基于 URL、HTTP 头等的高级路由功能,允许根据请求的不同属性将流量分发到不同的后端服务器组。

5. SSL/TLS 加密:
   - 支持 SSL/TLS 加密,可以在 HAProxy 和客户端之间加密通信,减轻后端服务器的加密负担。

6. TCP 和 HTTP 层代理:
   - 可以在 TCP 层和 HTTP 层工作,支持 TCP 和 HTTP/HTTPS 协议。

7. 压缩和解压:
   - 支持对 HTTP 响应进行压缩,减少传输的数据量,提高带宽利用率。

8. 缓存:
   - 支持简单的缓存机制,可以缓存 HTTP 响应,减少后端服务器的负载。

9. 日志记录:
   - 提供详细的日志记录功能,可以记录请求和响应信息,用于调试和监控。

10. 监控和统计:
    - 提供详细的监控和统计信息,包括连接数、请求处理时间等,有助于管理员了解系统的运行状态。

11. 高可用性:
    - 可以通过集群配置实现高可用性,确保即使某个节点出现故障,服务仍可继续运行。

12. 灵活的配置:
    - 支持复杂的配置选项,可以根据需要进行高度定制。

13. 虚拟主机:
    - 支持虚拟主机,允许在一个 HAProxy 实例上托管多个不同的站点。

14. 访问控制:
    - 支持基于 IP 地址或 HTTP 头的访问控制,可以限制某些客户端访问特定的资源。

15. 错误页面:
    - 支持自定义错误页面,当请求无法成功处理时,可以显示友好的错误信息。

16. 重定向:
    - 支持 URL 重定向,可以在 HTTP 层面对 URL 进行重定向。

17. 请求和响应头部操作:
    - 支持修改请求和响应头部,例如添加、删除或修改 HTTP 头部字段。

 使用场景

1. Web 应用程序负载均衡:
   - 为高流量的 Web 应用程序提供负载均衡服务。

2. API 网关:
   - 作为 API 网关,为多个微服务提供统一的入口点。

3. 数据库负载均衡:
   - 可以用于数据库读写分离或负载均衡。

4. 邮件服务器负载均衡:
   - 为邮件服务器提供负载均衡和高可用性。

5. 云环境中的负载均衡:
   - 在云环境中部署 HAProxy 以实现横向扩展和负载均衡。

6. 混合环境负载均衡:
   - 在混合环境中(如私有云和公有云)部署 HAProxy 以统一管理负载均衡。

配置和管理和一些重要的global参数说明

- HAProxy 通过文本配置文件进行配置,该文件通常位于 `/etc/haproxy/haproxy.cfg`。
- 可以使用 `haproxy` 命令行工具启动、停止和重启服务。

实例练习

haproxy的基本部署

准备3台虚拟机 两台主机 一太haproxy服务器 三台虚拟机配置同一个网段的IP

haproxy IP :172.25.254.100 

web1,web2 ip

在haproxy主机上安装haproxy 软件

服务器上配置对应环境

listen webcluster
      bind *:80
      mode http
      balance roundrobin
      server web1 172.25.254.10:80 
      server web2 172.25.254.20:80 

环境配置完成

常用全局参数练习

nbproc--(开启进程个数)

查看默认情况开启几个进程,有几行代表几个进程看到默认只有一个进程

pstree -p | grep haproxy

打开配置文件添加 nbproc   2

[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 

重启服务查看改变

[root@haproxy ~]# systemctl restart haproxy.service 
[root@haproxy ~]# pstree -p | grep haproxy

不过这样设置会造成CPU在短时间内频繁地在不同任务间切换,导致性能下降。

为了防止对应事件我们引入新的参数;

nbthread 开启多线程

注意:多进程与多线程不能同时开多个,同时打开多个会报错。

禁用之前的设置 ,和设置多线程;

重启服务


[root@haproxy ~]# systemctl restart haproxy.service 

这里现实什么查看什么要不然看不到

Proxies

frontend参数介绍

bind:   #指定HAProxy的监听地址,可以是IPV4或IPV6,可以同时监听多个IP或端口,可同时用于listen字段中
 
bind [<address>]:<port_range> [, ...] [param*]
 
#注意:如果需要绑定在非本机的IP,需要开启内核参数:net.ipv4.ip_nonlocal_bind=1

示例

frontend  webcluster               #可以采用后面形式命名:业务-服务-端口号
    bind :80,:8080
    bind 10.0.0.7:10080,:8801-8810,10.0.0.17:9001-9010
    mode  http|tcp              #指定负载协议类型
    use_backend <backend_name>  #调用的后端服务器组名称

网页重定向

编辑文件 

vim /etc/haproxy/haproxy.cfg

重启服务

测试

Socat 工具的使用

haproxy多进程热处理 示例1

haproxy的算法1

保存后重启服务

在主机中配置

测试

haproxy的算法2

保存后重启服务

测试

haproxy的算法3

保存后重启服务

测试

示例练习4: 状态页面监控

登陆后的监控界面

高级功能练习

基于cookie的会话保持

okie value:为当前server指定cookie值,实现基于cookie的会话黏性,相对于基于 source 地址hash调度算法对客户端的粒度更精准,但同时也加大了haproxy负载,目前此模式使用较少, 已经被session共享服务器代替。当用户发起一系列的请求时,如果没有会话保持机制,每次请求可能会被分发到不同的后端服务器。这可能导致用户会话数据的不一致或丢失,例如购物车信息、登录状态等。基于 Cookie 的会话保持可以确保属于同一会话的请求始终被路由到同一台后端服务器。

示例练习

打开对应文件

vim /etc/haproxy/haproxy.cfg

修改和添加文件中的对应的属性

修改算法

重启服务

测试 curl  

IP透传

下载httpd软件并启动找到文件并修改并重启

7层透传

测试

四层透传

将http改为tcp

修改

在对应的web服务器上修改对应文件

测试

测试结果

ACL访问控制列表

它可以根据设定的条件对经过服务器传输的数据包进行过滤(条件匹配)即对接收到的报文进行匹配和过滤,基于请求报文头部中的源地址、源端口、目标地址、目标端口、请求方法、URL、文件后缀等信息内容进行匹配并执行进一步操作,比如允许其通过或丢弃。

实验

打开修改配置文件

打开电脑文件做解析

C:\Windows\System32\drivers\etc

ACL基于源IP或子网调度访问

ACL基于源IP或子网调度访问

ACL基于源地址的访问控制

测试结果

ACL基于文件后缀名实现动静分离

配置文件

在web1 上打开服务

下载服务

编写对应文件

重启http服务

测试

ACL匹配访问路径实现动静分离

web1配置

自定义HAProxy错误页面

打开配置文件 vim /etc/haproxy/haproxy.cfg 添加配置

编辑文件

测试

也可以重定向到http重定向错误页面配置

测试

HAProxy四层负载

基础配置

分别在两台主机上下载对应的软件

修改文件内容

启动两台主机上mariadb服务

通过命令行创建mysql用户,并对其进行授权

在测试机上安装软件并启动软件

测试

HAProxy的https实现

创建制作证书

将证书导入对应文件

haproxy配置

确保文件存在

保存后测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值