haproxy基础

发布于:2024-08-11 ⋅ 阅读:(165) ⋅ 点赞:(0)

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: 状态页面监控

登陆后的监控界面


网站公告

今日签到

点亮在社区的每一天
去签到