当前位置: 首页 > article >正文

haproxy详解笔记

一、概述

HAProxy(High Availability Proxy)是一款开源的高性能 TCP/HTTP 负载均衡器和代理服务器,用于将大量并发连接分发到多个服务器上,从而提高系统的可用性和负载能力。它支持多种负载均衡算法,能够根据服务器的健康状态和负载情况动态分配请求,确保高可用性和性能优化。

二、主要功能

  1. 负载均衡:支持多种负载均衡算法,如轮询、最少连接、加权轮询等,可根据服务器的负载情况动态分配请求。

  2. 健康检查:能够定期检查后端服务器的健康状态,自动移除故障服务器,并在恢复后重新加入。

  3. 会话保持:支持多种会话保持机制,如基于 Cookie 的会话保持,确保用户的请求被转发到同一台服务器。

  4. SSL 加密:支持 SSL/TLS 加密,可以对 HTTPS 请求进行解密和重新加密。

  5. HTTP/2 支持:支持 HTTP/2 协议,提高 HTTP 请求的效率。

  6. 连接限制与速率限制:可以限制每个客户端的连接数和请求速率,防止恶意攻击。

  7. 统计页面:提供一个 Web 界面,用于实时监控 HAProxy 的状态和性能指标。

三、工作原理

HAProxy 的工作原理基于代理模式,它在客户端和服务器之间充当中间人的角色。当客户端发送请求到 HAProxy 时,HAProxy 会根据配置的规则将请求转发到后端服务器,并将服务器的响应返回给客户端。HAProxy 支持两种工作模式:

  1. TCP 模式(四层代理模式):直接将 TCP 连接转发到后端服务器,不解析 HTTP 内容。

  2. HTTP 模式(七层代理模式):解析 HTTP 请求和响应,支持更多的 HTTP 相关功能,如会话保持、HTTP 头部修改等。

四、配置文件结构

HAProxy 的配置文件(haproxy.cfg)是其核心,包含了所有运行时的配置信息。配置文件主要分为以下几个部分:

  1. 全局设置(global):定义 HAProxy 的全局参数,如日志、最大连接数、线程数等。

  2. 默认设置(defaults):定义默认的连接参数,如超时时间、重试次数等。

  3. 前端(frontend):定义监听的端口和 IP 地址,以及如何根据请求内容选择后端。

  4. 后端(backend):定义后端服务器的地址、端口、负载均衡算法、健康检查等。

  5. 监听(listen):可以同时定义前端和后端的配置,常用于管理统计页面。

以下是一个简单的配置文件示例:

# 全局设置
global
    log stdout format raw local0          # 配置日志输出到标准输出,格式为 raw,日志级别为 local0
    maxconn 2000                          # 设置 HAProxy 允许的最大并发连接数为 2000
    daemon                                # 以守护进程模式运行 HAProxy,使其在后台运行

# 默认设置
defaults
    log global                            # 使用配置全局中的日志设置
    mode http                             # 设置默认的运行模式为 HTTP 模式,解析 HTTP 请求和响应
    timeout connect 5s                    # 设置连接超时时间为 5 秒(客户端与服务器建立连接的超时时间)
    timeout client 30s                    # 设置客户端超时时间为 30 秒(客户端无响应的超时时间)
    timeout server 30s                    # 设置服务器超时时间为 30 秒(服务器无响应的超时时间)

# 前端配置
frontend http_front
    bind *:80                             # 绑定到所有网络接口的 80 端口,监听 HTTP 请求
    mode http                             # 设置前端运行模式为 HTTP 模式
    default_backend web_servers           # 默认将请求转发到名为 web_servers 的后端服务器组

# 后端配置
backend web_servers
    mode http                             # 设置后端运行模式为 HTTP 模式
    balance roundrobin                    # 使用轮询算法进行负载均衡,依次将请求分配到后端服务器
    server server1 192.168.1.11:80 check # 定义后端服务器 server1,IP 地址为 192.168.1.11,端口为 80,启用健康检查
    server server2 192.168.1.12:80 check # 定义后端服务器 server2,IP 地址为 192.168.1.12,端口为 80,启用健康检查

五、安装与部署

HAProxy 可以通过多种方式安装,包括源码编译、包管理工具(如 apt、yum)以及 Docker。以下是通过 apt 安装的示例:

apt update
apt install haproxy

安装完成后,需要根据需求编辑配置文件,并启动 HAProxy 服务:

systemctl start haproxy

六、常用命令

  1. 查看版本

    haproxy -v
  2. 检查配置文件语法

    haproxy -c -f /path/to/haproxy.cfg
  3. 以调试模式运行

    haproxy -D -f /path/to/haproxy.cfg
  4. 终止指定进程

    haproxy -st <pid>
  5. 查看端口和连接状态

    netstat -tuln | grep haproxy

七、应用场景

HAProxy 广泛应用于各种需要高可用性和负载均衡的场景,如:

  1. Web 应用负载均衡将 HTTP/HTTPS 请求分发到多个 Web 服务器。

  2. 数据库负载均衡:分发数据库连接请求。

  3. 微服务架构:在微服务环境中,HAProxy 可以作为服务网关。

  4. 云原生环境:与 Kubernetes 等容器编排工具结合,提供入口网关。


http://www.kler.cn/a/548117.html

相关文章:

  • 【第9章:计算机视觉实战—9.3 计算机视觉在医疗影像分析中的应用案例】
  • 机器学习实战(3):线性回归——预测连续变量
  • 恩智浦:将开发文档迁移到DITA/XML
  • AWS Fargate 部署流程图及说明
  • Visual Studio Code支持WSL,直接修改linux/ubuntu中的文件
  • unity 为什么保存场景时要求重新选择文件夹
  • Qt的QTreeWidget样式设置
  • C++ Primer 参数传递
  • Docker Desktop之Nginx
  • 机器学习数学基础:23.二次型及其标准形
  • 数据结构6
  • 如何让内网下其他主机直接通过 ip 访问docker overlay 网段下对应容器?
  • WRF与神经网络结合算法
  • 【Linux网络-网络基础】计算机网络背景+协议+OSI七层模型
  • 【机器学习】数据集合集!
  • React echarts柱状图点击某个柱子跳转页面
  • ABC393E/F简要题解
  • 基于web的留守儿童网站的设计与实现
  • 《当DeepSeek遇上豆包:AI大模型的华山论剑》
  • CAS单点登录(第7版)8.委托和代理