OpenEuler系统常用服务(八)

HAProxy 服务

1. 功能与作用: HAProxy 是一款高性能、开源的负载均衡器和代理服务器软件。它主要用于:

  • 负载均衡: 将客户端请求分发到多个后端服务器上,提高应用的可扩展性和可用性。
  • 高可用性: 通过健康检查自动屏蔽故障服务器,确保服务持续可用。
  • 反向代理: 接收客户端请求并转发给后端服务器,隐藏后端服务器的细节。
  • SSL 终结: 在代理层处理 SSL/TLS 加密和解密,减轻后端服务器负担。
  • TCP 与 HTTP 代理: 支持四层(TCP)和七层(HTTP)代理。

2. 关键概念:

  • 前端(Frontend): 定义监听的 IP 地址、端口以及如何处理传入的流量(如绑定 ACL 规则)。
  • 后端(Backend): 定义一组接收流量的服务器(服务器池)以及如何将流量分发到它们(负载均衡算法)。
  • 服务器(Server): 后端池中的具体应用服务器实例。
  • ACL(访问控制列表): 用于根据请求内容(如 URL、Host 头、源 IP 等)做出决策(如选择后端、重定向)。
  • 负载均衡算法: 决定如何选择后端服务器(如轮询 roundrobin、最少连接 leastconn、源 IP 哈希 source 等)。
  • 健康检查: 定期检查后端服务器状态,自动将不可用的服务器移出服务池。

OpenEuler 安装 HAProxy

  1. 使用 yum 安装: OpenEuler 的官方仓库通常包含 HAProxy。打开终端,执行以下命令:

    bash 复制代码
    sudo yum install haproxy
  2. 验证安装: 安装完成后,检查 HAProxy 的版本以确认安装成功:

    bash 复制代码
    haproxy -v

HAProxy 配置文件详解与示例

HAProxy 的主要配置文件是 /etc/haproxy/haproxy.cfg。配置文件结构清晰,通常包含以下部分:

haproxy 复制代码
# /etc/haproxy/haproxy.cfg

# 全局配置 (Global settings)
global
    log /dev/log local0
    log /dev/log local1 notice
    chroot /var/lib/haproxy
    stats socket /var/lib/haproxy/stats mode 660 level admin
    user haproxy
    group haproxy
    daemon

# 默认配置 (Default settings for frontends and backends)
defaults
    log global
    mode http
    option httplog
    option dontlognull
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

# 前端配置 (Define where HAProxy listens)
frontend http_front
    bind *:80 # 监听所有 IPv4 地址的 80 端口 (HTTP)
    acl is_static path_beg -i /static /images /javascript /stylesheets # 定义 ACL 规则 (示例)
    use_backend static_servers if is_static # 根据 ACL 使用特定后端
    default_backend app_servers # 默认后端

# 静态内容后端
backend static_servers
    balance roundrobin # 负载均衡算法
    server static1 192.168.1.101:80 check # 后端服务器1,开启健康检查
    server static2 192.168.1.102:80 check # 后端服务器2

# 应用后端
backend app_servers
    balance leastconn # 最少连接数算法
    option httpchk GET /health # HTTP 健康检查端点
    server app1 192.168.1.201:8080 check
    server app2 192.168.1.202:8080 check

# 状态监控页面 (Optional)
listen stats
    bind *:8080 # 绑定监控页面的端口
    stats enable
    stats uri /haproxy?stats # 访问 URI
    stats realm Haproxy\ Statistics # 认证域
    stats auth admin:password # 认证用户名和密码 (请更改!)

配置文件说明:

  • global: 设置全局参数,如日志、运行用户、工作模式等。
  • defaults: 为后续的 frontendbackend 设置默认参数(如日志选项、超时、默认模式)。
  • frontend: 定义监听端口和如何处理请求。使用 bind 指定监听地址和端口。acl 定义规则,use_backend 根据规则选择后端,default_backend 指定默认后端。
  • backend: 定义一组服务器。balance 指定负载均衡算法。server 定义后端服务器地址、端口,check 启用健康检查。option httpchk 可指定 HTTP 健康检查的具体端点。
  • listen (或 frontend + backend): 可以合并 frontendbackend 为一个 listen 块。示例中 stats 部分专门用于开启一个监控页面。

管理 HAProxy 服务

  1. 启动服务:

    bash 复制代码
    sudo systemctl start haproxy
  2. 设置开机自启:

    bash 复制代码
    sudo systemctl enable haproxy
  3. 检查服务状态:

    bash 复制代码
    sudo systemctl status haproxy
  4. 重新加载配置 (修改配置后): 修改 /etc/haproxy/haproxy.cfg 后,无需完全重启服务,可以平滑重载配置:

    bash 复制代码
    sudo systemctl reload haproxy
  5. 查看日志: HAProxy 日志通常位于 /var/log/messages 或配置中指定的位置(如示例中的 /dev/log,需配合 syslog 配置)。使用 journalctl 查看:

    bash 复制代码
    sudo journalctl -u haproxy

验证与监控

  1. 访问状态页面: 如果配置了 listen stats,可以通过浏览器访问 http://<haproxy_ip>:8080/haproxy?stats,并使用配置的用户名(admin)和密码(password)登录查看服务器状态、流量统计等。

  2. 检查监听端口: 使用 netstatss 检查 HAProxy 是否在监听配置的端口(如 80 和 8080):

    bash 复制代码
    sudo ss -tuln | grep -E '(80|8080)'
  3. 测试负载均衡: 向 HAProxy 监听的 IP 和端口(如 http://<haproxy_ip>:80)发送请求,观察请求是否被分发到不同的后端服务器(可以通过后端服务器的日志或返回内容中的特定标识来判断)。


注意事项

  1. 安全性:
    • 务必更改 stats 页面的默认用户名和密码。
    • 根据安全策略调整 chrootstats socket 的权限。
    • 考虑使用防火墙限制访问 HAProxy 端口的来源 IP。
  2. 性能调优:
    • 根据业务需求调整 global 中的 maxconn(最大连接数)。
    • 调整 timeout 参数以适应网络环境和应用响应时间。
    • 选择合适的负载均衡算法。
  3. 健康检查:
    • 确保配置的健康检查(check, option httpchk)能够准确反映后端应用的真实状态。
    • 调整健康检查间隔(inter)、超时(timeout)和失败阈值(rise, fall)。
  4. SELinux: OpenEuler 可能启用 SELinux,如果遇到权限问题,可能需要调整策略或暂时设置为许可模式(setenforce 0)进行测试(生产环境需谨慎)。

这个指南提供了在 OpenEuler 上使用 HAProxy 的基础知识、安装步骤、详细配置示例以及服务管理方法。请根据你的实际网络环境和应用需求调整 IP 地址、端口、负载均衡算法和健康检查配置。

相关推荐
A_QXBlms3 小时前
客户管理自动化,用API构建智能标签体系
运维·自动化
小鸡食米3 小时前
Linux-SSH
linux·运维·ssh
Blurpath住宅代理3 小时前
跨境数据采集为何总“看错市场”?IP地理定位偏差的技术解析与应对策略
网络·静态ip·代理ip·住宅ip·静态代理
网络安全许木3 小时前
自学渗透测试的第十天(HTTP进阶与Burp Suite基础)
网络·网络协议·http·网络安全·渗透测试
飞yu流星3 小时前
linux 操作系统基础知识和目录与文件管理
linux·运维·服务器
破烂儿3 小时前
TMUX历史输出滚动查看全攻略(原生快捷键 + 鼠标配置优化)
服务器·学习·计算机外设
亚空间仓鼠4 小时前
OpenEuler系统常用服务(九)
linux·运维·服务器·网络
不怕犯错,就怕不做4 小时前
rk3562 buildrooot编译更新的lib库push后无效问题分析
linux·驱动开发·嵌入式硬件
a里啊里啊4 小时前
常见面试题目集合
linux·数据库·c++·面试·职场和发展·操作系统