蚊章汇 - Jim O'connell
type: channel
link: https://linuxcn.bwsl.wang/author/1623/
description: Jim O'connell
items: 用 HAProxy 实现网络流量的负载平衡

用 HAProxy 实现网络流量的负载平衡
type: item
date: 2022-02-06T19:40:10+08:00
description: 安装、配置和运行 HAProxy，在几个网络或应用服务器之间分配网络流量。不是只有在一个大型公司工作才需要使用负载平衡器。你可能是一个业余爱好者，用几台树莓派电脑自我托管一个网站。也许你是一个小企业的服务器管理员；也许你确实在一家大公司工作。无论你的情况如何，你都可以使用 HAProxy 负载平衡器来管理你的流量。HAProxy 被称为“世界上最快和使用最广泛的软件负载平衡器”。它包含了许多可以使你的应用程序更加安全可靠的功能，包括内置的速率限制、异常检测、连接排队、健康检查以及详细的日志和指标。学习本教程中所涉及的基本技能和概念，将有助于你使用 HAProxy 建立一个更强大的、远为强大的基础设施。为什么需要一个负载平衡器？负载平衡器是一种在几个网络或应用服务器之间轻松分配连接的方法。事实上，HAProxy 可以平衡任何类型的传输控制协议（TCP）流量，包括 RDP、FTP、WebSockets 或数据库连接。分散负载的能力意味着你不需要因为你的网站流量比谷歌大就购买一个拥有几十万 G 内存的大型网络服务器。负载平衡器还为你提供了灵活性。也许你现有的网络服务器不够强大，无法满足一年中繁忙时期的峰值需求，你想增加一个，但只是暂时的。也许你想增加一些冗余，以防一个服务器出现故障。有了 HAProxy，你可以在需要时向后端池添加更多的服务器，在不需要时删除它们。你还可以根据情况将请求路由到不同的服务器。例如，你可能想用几个缓存服务器（如 Varnish）来处理你的静态内容，但把任何需要动态内容的东西，如 API 端点，路由到一个更强大的机器。在这篇文章中，我将通过设置一个非常基本的 HAProxy 环境，使用 HTTPS 来监听安全端口 443，并利用几个后端 Web 服务器。它甚至会将所有进入预定义 URL（如 /api/）的流量发送到不同的服务器或服务器池。安装 HAProxy要开始安装，请启动一个新的 CentOS 8 服务器或实例，并使系统达到最新状态：$ sudo yum update -y 这通常会持续一段时间。在等待的时候给自己拿杯咖啡。这个安装有两部分：第一部分是安装 yum 版本的 HAProxy，第二部分是编译和安装你的二进制文件，用最新的版本覆盖以前的 HAProxy。用 yum 安装，在生成 systemd 启动脚本等方面做了很多繁重的工作，所以运行 yum install，然后从源代码编译，用最新的版本覆盖 HAProxy 二进制：$ sudo yum install -y haproxy 启用 HAProxy 服务：$ sudo systemctl enable haproxy 要升级到最新版本（版本 2.2，截至本文写作为止），请编译源代码。许多人认为从源代码编译和安装一个程序需要很高的技术能力，但这是一个相当简单的过程。首先，使用 yum 安装一些提供编译代码工具的软件包：$ sudo yum install dnf-plugins-core $ sudo yum config-manager --set-enabled PowerTools $ sudo yum install -y git ca-certificates gcc glibc-devel \ lua-devel pcre-devel openssl-devel systemd-devel \ make curl zlib-devel 使用 git 获得最新的源代码，并改变到 haproxy 目录：$ git clone http://git.haproxy.org/git/ haproxy $ cd haproxy 运行以下三个命令来构建和安装具有集成了 Prometheus 支持的 HAProxy：$ make TARGET=linux-glibc USE_LUA=1 USE_OPENSSL=1 USE_PCRE=1 \ PCREDIR= USE_ZLIB=1 USE_SYSTEMD=1 \ EXTRA_OBJS="contrib/prometheus-exporter/service-prometheus.o" $ sudo make PREFIX=/usr install # 安装到 /usr/sbin/haproxy 通过查询版本来测试它：$ haproxy -v 你应该看到以下输出：HA-Proxy version 2.2.4-b16390-23 2020/10/09 - https://haproxy.org/ 创建后端服务器HAProxy 并不直接提供任何流量，这是后端服务器的工作，它们通常是网络或应用服务器。在这个练习中，我使用一个叫做 Ncat 的工具，它是网络领域的“瑞士军刀”，用来创建一些极其简单的服务器。安…