【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.mzph.cn/pingmian/66267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入Android架构(从线程到AIDL)_11 线程之间的通信架构

目录 5、 线程之间的通信架构 认识Looper与Handler对象 主线程丢信息给自己 子线程丢信息给主线程 替子线程诞生Looper与MQ 5、 线程之间的通信架构 认识Looper与Handler对象 当主线程诞生时,就会去执行一个代码循环(Looper),以便持续监视它的信息…

【中间件】docker+kafka单节点部署---zookeeper模式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言消息中间件介绍1. KRaft模式2. zookeeper模式2.1. 单节点部署安装验证 前言 最近生产环境上准备部署ELFK日志监控,先在测试环境部署单节点kafka验证…

AI-Talk开发板之超拟人

一、说明 运行duomotai_ap sdk下的LLM_chat例程,实现开发板和超拟人大模型进行语音交互,支持单轮和多轮交互。 二、SDK更新 v2.3.0及以上的SDK版本才支持超拟人,如果当前SDK在v2.3.o以下,需要更新SDK。在SDK目录(duomotai_ap)下…

2024年, Milvus 社区的那些事

随着跨年钟声响起,2024 年告一段落。这一年,Milvus GitHub Stars 正式突破 3 万大关,Docker 下载量突破6700w 次,达到一个新的里程碑,在开源向量数据库领域继续引领前行。在这遥遥领先的数据背后,不妨让我们…

docker中使用Volume完成数据共享

情景概述 在一个docker中,部署两个MySQL容器,假如它们的数据都存储在自己容器内部的data目录中。这样的存储方式会有以下问题: 1.无法保证两个MySQL容器中的数据同步。 2.容器删除后,数据就会丢失。 基于以上问题,容…

【期末复习】二、进程管理

1.进程的内存结构🍊 程序加载到内存之后就变成了一个进程,进程在内存当中的一个结构有: 文本段(text section):存放程序代码 栈(stack):存放局部变量和函数返回地址 数据段(data section):存放全局变量和静态变量(static) 堆(heap):程序运行时的动态内存分…

Type-C多口适配器:高效充电与连接解决方案

在科技飞速发展的今天,我们的生活已经离不开各种各样的电子设备,如智能手机、平板电脑、智能手表和无线耳机等。这些设备不仅丰富了我们的数字生活,也带来了更多的充电需求。传统的单一充电口已经难以满足现代人对于便捷性和效率的追求&#…

UCAS 24秋网络认证技术 CH10 SSL 复习

TLS字段、参数含义要了解每个消息是什么意思 基本方式只验证服务端,服务端有证书,变形方式加上验证客户端TLS1.3区别 协商过程 背景 Record层使用的各种加密算法参数,均由Handshake协议协商获得。 具体过程 随机数交换 Client/Server相互…

支付宝商家转账到账户余额,支持多商户管理

大家好,我是小悟 转账到支付宝账户是一种通过 API 完成单笔转账的功能,支付宝商家可以向其他支付宝账户进行单笔转账。 商家只需输入另一个正确的支付宝账号,即可将资金从本企业支付宝账户转账至另一个支付宝账户。 该产品适用行业较广&am…

基于Django的旅游信息管理系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 随着我国经济的高速发展与人们生活水平的日益提高,人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下,人们更趋向于足不出户解决生活上的问题,线上管理系统展现了其蓬勃生命力和广阔的前景。与此同时,随着…

常见的框架漏洞复现

1.Thinkphp Thinkphp5x远程命令执行及getshell 搭建靶场 cd vulhub/thinkphp/5-rce docker-compose up -d 首页 漏洞根本源于 thinkphp/library/think/Request.php 中method方法可以进行变量覆盖,通过覆盖类的核心属性filter导致rce,其攻击点较为多&…

UE5中实现右键开镜效果

右键之后添加时间轴,然后设置视野即可。Set Field Of View 时间轴设置,第一个点设置0,90度,因为默认的就是90度 第二个点看武器的类型或者倍境来设置,时间就是开镜时间,值越小开镜速度越快,第二个值就是视野…

关于华硕Armoury Crate(奥创中心)安装程序失败、卡进度条问题解决方案

关于华硕Armoury Crate(奥创中心)安装失败解决方案 清理旧版本文件 如果之前安装过Armoury Crate,可能有残留文件导致冲突: 利用官方的卸载工具,卸载旧版本: https://www.asus.com.cn/supportonly/armoury%20crate/…

iOS18 上的 Genmoji

在 WWDC 2025 期间,一种名为Genmoji的新型表情符号问世。 许多用户可能仍然不确定 Genmoji 是什么、它与传统表情符号有何不同、如何使用它以及如何恢复丢失的数据。因此,在本文中,我们将介绍您需要了解的有关 iOS 18 上的 Genmoji 的所有信…

基于等保的安全审计运维系统

摘要 本文研究与设计一种基于等级保护(等保)要求的安全审计运维系统,以适应日益严峻的网络安全形势和不断提高的安全审计需求。随着信息技术的快速发展和应用广泛,信息系统安全面临的威胁也在不断增加,特别是在关键信…

【OAuth2系列】如何使用OAuth 2.0实现安全授权?详解四种授权方式

作者:后端小肥肠 🍇 我写过的文章中的相关代码放到了gitee,地址:xfc-fdw-cloud: 公共解决方案 🍊 有疑问可私信或评论区联系我。 🥑 创作不易未经允许严禁转载。 姊妹篇: 【OAuth2系列】集成微…

传感器与检测技术基础知识

传感器检测系统 检测系统的组成:传感器、信号调理、数握采集、信号处理、信号显示、信号输出、输入设备、稳压电源。 检测系统的基本误差分类:绝对误差、相对误差、引用误差,最大引用误差。 测量系统的误差分类:系统误差、随机误差、粗大误…

决定系数(R²分数)——评估回归模型性能的一个指标

目录 1.定义 2.计算举例 3. 结果分析 1.定义 R(R平方)分数,也称为决定系数,是用来评估回归模型性能的一个指标。它表示自变量解释因变量变异性的比例。R分数的取值范围通常在0到1之间,其值越接近1,说明…

stm32HAL库使LED闪烁

PC13引脚为开漏接法 生成代码时设置为out put open drain gpio out put level 设置为high 1表示熄灭 我们将pa9引脚连接为推挽接法 生成代码时设置为 out put push pull Gpio out put level 设置为low 0 表示熄灭 代码使其亮起再延时0.5秒再熄灭再延时0.5秒

矩阵运算提速——玩转opencv::Mat

介绍:用Eigen或opencv::Mat进行矩阵的运算&#xff0c;比用cpp的vector或vector进行矩阵运算要快吗? 使用 Eigen 或 OpenCV 的 cv::Mat 进行矩阵运算通常比使用 std::vector<int> 或 std::vector<double> 更快。这主要有以下几个原因&#xff1a; 优化的底层实现…