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

【HAProxy】如何在Ubuntu下配置HAProxy服务器

HAProxy 是一款免费、开源且强大的反向代理程序,它为 HTTP 和 TCP 基础的应用提供了高可用性、负载均衡以及代理功能,因此对于管理高流量服务器(或 Web 应用)来说,通过将负载分散到多个节点服务器上,它是一个相当不错的选择。

既然 Nginx 反向代理也有类似的功能,那我来告诉你为啥你可能更想选择 HAProxy。首先,HAProxy 是一个专门的负载均衡器和反向代理程序,在 SSL 卸载性能、详细的运行时统计信息以及更高级的负载均衡特性方面表现得更加出色。

Nginx 反向代理唯一的好处可能是配置起来相对简单一些,这在某些情况下确实省事儿。但是,对于复杂的环境来说,依赖 HAProxy 才是明智之举。

在这篇指南里,我会一步步教你如何在 Ubuntu 24.04 上安装和配置 HAProxy,不过这些步骤同样适用于之前的版本,比如 Ubuntu 23.04、Ubuntu 22.04 等等。

如何在 Ubuntu 上安装和配置 HAProxy

在开始安装和配置 HAProxy 之前,你需要先了解一下云基础设施,以及如何使用 HAProxy 作为负载均衡器。为了演示方便,我设想了一个场景:一位笔记本电脑用户访问了一台安装并配置了 HAProxy 的服务器,该服务器随后将用户的流量转发给最不繁忙的服务器。

HAProxy 的工作原理

在这个场景中,安装了 HAProxy 的服务器应该运行在 Ubuntu 系统之上,至少需要 1 GB 的 RAM、20 GB 的磁盘空间和 2 个 CPU 核心;另外,确保你有该服务器的 root 权限或者至少有 sudo 特权。

准备就绪后,通过 SSH 登录你的服务器,并按照下面的指令来安装和配置 HAProxy。

第一步:更新系统

这一步不是必须的,但它能保证你的软件包列表和已安装的软件包都是最新的。

$ sudo apt update && sudo apt upgrade -y

第二步:安装 HAProxy

由于 HAProxy 很受欢迎,它已经在官方 Ubuntu 软件库中了,你可以用这条命令轻松安装它。

$ sudo apt install haproxy

第三步:验证 HAProxy 安装

要确认 HAProxy 已成功安装,可以通过运行以下命令检查其版本:

$ haproxy -v

检查 HAProxy 版本

第四步:配置 HAProxy

为了配置你的主服务器以实现与其他节点服务器的负载均衡,你需要在 _/etc/haproxy/haproxy.cfg_ 文件中指定前端服务器(主要负责处理请求,也就是你的主服务器)和后端服务器(处理那些请求,即你的节点服务器)的信息。

对于新手来说,我会尽量简化这个过程。首先,用你喜欢的文本编辑器(我喜欢 Nano)打开 HAProxy 配置文件。

$ sudo nano /etc/haproxy/haproxy.cfg

当你打开文件时,你会看到类似下面的配置,这部分可以忽略。

global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon

# Default SSL material locations  
ca-base /etc/ssl/certs  
crt-base /etc/ssl/private  

# See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate  
    ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384  
    ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256  
    ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets  

defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http

为了配置 HAProxy 主服务器以管理和重定向过多的流量到两个额外的节点服务器(监听 80 端口),只需在最后一行粘贴以下模板,并确保替换节点服务器的详细信息(红色标记的部分)。

frontend HAProxy_Server
bind *:80
default_backend Apache_Web_Servers

backend Apache_Web_Servers
mode http
balance roundrobin
server server1 192.168.1.102:80 check
server server2 192.168.1.103:80 check

完成之后,你的文件看起来会像这样:

HAProxy 配置文件

保存并关闭文件。

在继续下一步之前,最好检查一下配置文件是否有语法问题。

$ sudo haproxy -c -f /etc/haproxy/haproxy.cfg

检查 HAProxy 配置文件

第五步:重启 HAProxy

现在是时候重启 HAProxy 服务以应用我们在配置文件中所做的更改了,同时我们也会启用 HAProxy 服务,以确保它在系统重启时自动启动。

$ sudo systemctl restart haproxy
$ sudo systemctl enable haproxy

重启和启用 HAProxy 服务

  • 如何在 Ubuntu 上安装 UrBackup [客户端/服务器] 系统

第六步:检查 HAProxy 状态

最后,检查 HAProxy 服务的状态,以确保它正在无故障地运行。

$ systemctl status haproxy

检查 HAProxy 服务状态

第七步:配置防火墙(可选)

Ubuntu 默认预装了 UFW (Uncomplicated Firewall),所以如果你用它来保护网络,记得允许 80 端口以启用每个服务器上的 HAProxy 流量。

$ sudo ufw allow 80
$ sudo ufw status

在服务器上允许 80 端口

搞定!现在你的主服务器已经配置好了 HAProxy,它将会处理所有进来的流量,并根据节点服务器的状态进行分配。

总结

在这篇文章里,你学会了如何在 Ubuntu 上安装和配置 HAProxy 用于负载均衡,但这只是冰山一角——HAProxy 还有更多的高级配置等着你去探索。想要更多指导的话,强烈建议查阅它的 官方文档页面。

如果你有任何问题或疑问,随时可以在评论区留言提问哦。


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

相关文章:

  • MySQL叶子节点为啥使用双向链表?不使用单向呢?
  • LabVIEW在反馈控制时如何解决带约束的控制问题
  • 代码随想录算法训练营第二十四天-回溯算法-90. 子集II
  • 2501d,jingo优化
  • 本地测试文件解析
  • Chapter4.2:Normalizing activations with layer normalization
  • 网站访问接口顺序执行,防止频繁请求接口而报错,处理切换功能时,必须先请求完数据才可执行下一个功能接口(2025-1-3)
  • GPU加速计算的专业云服务平台:蓝耘GPU算力平台的概述、具体应用与教学
  • Swift Combine 学习(六):自定义 Publisher 和 Subscriber
  • 基于STM32F103的USART的原理及应用(一)(实现手机BLE和MCU进行通信)
  • 探索Wiki:开源知识管理平台及其私有化部署
  • 手机租赁平台开发实用指南与市场趋势分析
  • 探索 Android Instant Apps:InstantAppInfo 的深入解析与架构设计
  • C++中关于异常的简单分析
  • C# 设计模式概况
  • Python爬虫入门(1)
  • 【Patroni官方文档】介绍与目录
  • 【谷歌开发者月刊】十二月精彩资讯回顾,探索科技新可能
  • 【C++】穿越时光隧道,拾贝史海遗珍,轻启C++入门之钥,解锁程序之奥秘(首卷)
  • 随机种子定不死找bug
  • python 字符串算法
  • CTFshow—远程命令执行
  • 区块链方向学习路线
  • 音视频-----RTSP协议 音视频编解码
  • 国产数据库AntDB插件pg_profile安装说明
  • xdoj isbn号码