Ubuntu 上的 HAProxy:弹性基础设施的负载均衡和故障转移

简介
在当今快节奏的数字环境中,确保应用程序的可用性和性能至关重要。现代基础设施需要强大的解决方案来有效分配流量,并在面对服务器故障时保持服务可用性。HAProxy 应运而生,它是高性能负载均衡和故障转移的事实标准。
本文探讨了 HAProxy 和 Ubuntu(最流行的 Linux 发行版之一)之间的协同作用。从安装到高级配置,我们将深入了解 HAProxy 如何通过负载均衡和故障转移功能改造您的基础设施。
理解负载均衡
负载均衡是将传入网络流量分配到多个服务器的过程。通过均衡负载,它可以确保没有单个服务器过载,从而带来更好的性能、可靠性和容错能力。
主要优势- 可扩展性: 通过添加更多服务器来处理不断增长的流量的能力。
- 可靠性: 通过将流量路由到健康的服务器来缓解服务器故障。
- 性能: 通过均匀分配工作负载来减少延迟。
- 第 4 层(传输层): 基于 IP 和端口信息分配流量。
- 第 7 层(应用层): 基于应用层数据(如 HTTP 标头)做出路由决策。
故障转移概念
故障转移通过在主资源发生故障时自动将流量重定向到备份资源来确保连续性。它是 高可用性 (HA) 设置的基石。
使用 HAProxy,故障转移是无缝的
- 如果后端服务器变得不可用,HAProxy 会通过健康检查检测到它。
- 流量被重新路由到其他可用的服务器,从而保持不间断的服务。
在 Ubuntu 上设置 HAProxy
让我们开始在 Ubuntu 上安装和配置 HAProxy。
前提条件- 一台 Ubuntu 服务器(建议 20.04 或更高版本)。
- 用于测试负载均衡的多个后端服务器。
- 基本的 Linux 命令行技能。
- 更新您的系统
sudo apt update && sudo apt upgrade -y
- 安装 HAProxy
sudo apt install haproxy -y
- 验证安装
haproxy -v
编辑 /etc/haproxy/haproxy.cfg
处的配置文件
global log /dev/log local0 log /dev/log local1 notice maxconn 2048 daemon defaults log global option httplog option dontlognull timeout connect 5000ms timeout client 50000ms timeout server 50000ms frontend http_front bind *:80 default_backend http_back backend http_back balance roundrobin server server1 192.168.1.101:80 check server server2 192.168.1.102:80 check
-
重启 HAProxy 以应用更改
sudo systemctl restart haproxy
-
通过访问您服务器的 IP 地址进行测试。HAProxy 将在后端服务器之间分配请求。
高级配置
负载均衡算法- 轮询 (Round Robin): 顺序分配请求。
- 最少连接 (Least Connections): 路由到活动连接数最少的服务器。
- 源地址 (Source): 确保客户端始终路由到同一服务器。
相应地更新 backend
中的 balance
指令。
健康检查确保流量仅发送到健康的服务器。check
指令执行定期健康检查。
为了保护流量安全,配置 HAProxy 来处理 SSL 终止。
- 获取 SSL 证书。
- 更新配置以使用 HTTPS
frontend https_front bind *:443 ssl crt /etc/haproxy/certs/example.pem default_backend http_back
使用 ACL 来过滤流量
frontend http_front acl is_api path_beg /api use_backend api_back if is_api
启用高可用性
使用 Keepalived 的 VRRP要启用故障转移,将 Keepalived 与 HAProxy 集成。
-
安装 Keepalived
sudo apt install keepalived -y
-
配置 Keepalived (
/etc/keepalived/keepalived.conf
)vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass mypassword } virtual_ipaddress { 192.168.1.100 } }
-
重启 Keepalived
sudo systemctl restart keepalived
当主服务器发生故障时,Keepalived 确保辅助服务器无缝接管。
监控和性能调优
HAProxy 统计仪表板启用仪表板以进行实时监控
listen stats bind *:8404 stats enable stats uri /stats stats auth admin:password
在 http://<server-ip>:8404/stats
访问它。
- 调整
maxconn
和超时设置。 - 对 HTTP 流量使用 gzip 压缩。
- 监控日志以查找异常。
用例和实际场景
- 微服务: 在多个服务之间分配 API 请求。
- Web 应用程序: 通过扩展后端服务器来处理流量高峰。
- 数据库负载均衡: 优化读取和写入操作。
常见问题故障排除
连接问题- 检查防火墙规则。
- 验证服务器健康检查。
- 增加文件描述符的
ulimit
。 - 优化后端服务器配置。
- 始终备份配置。
- 在低流量期间应用更新。
结论
通过结合 HAProxy 和 Ubuntu,您将获得一个强大的组合,用于管理流量并确保正常运行时间。通过上面概述的步骤,您可以构建一个能够处理高负载和服务器故障的弹性基础设施。
立即开始尝试 HAProxy,并释放您基于 Ubuntu 的系统的全部潜力。