Skip to content

Hetzner 上的负载均衡

Hetzner Cloud 是一家提供广泛服务的云托管提供商。在本指南中,我们将向您展示如何在 Hetzner Cloud 上使用 Coolify 部署负载均衡的应用程序。

介绍

您的应用程序正在增长,您需要对其进行扩展。扩展应用程序最常见的方法之一是使用负载均衡器。负载均衡器将传入的流量分配到多个服务器上,确保没有单个服务器过载。这有助于提高应用程序的性能和可靠性。

在本指南中,我们将向您展示如何在 Hetzner Cloud 上使用 Coolify 部署负载均衡的应用程序。我们将使用两台(或更多)服务器来托管我们的应用程序,并使用负载均衡器来分配传入的流量。我们还将向您展示如何设置数据库服务器(如果需要)。

提示

整个基础设施每月成本约为 ~15€。

要求

  • 由 Hetzner Cloud 管理的域名
  • Hetzner Cloud 上的 2 台(或更多)服务器
  • Hetzner Cloud 上的负载均衡器
  • 限制对服务器访问的防火墙规则
  • 可选:Hetzner Cloud 上的数据库服务器

步骤

  1. 购买服务器

    首先,您需要在 Hetzner Cloud 上购买两台(或更多)服务器。您可以根据自己的需求选择服务器类型和位置。确保选择具有足够资源来运行应用程序的服务器。

    注意

    确保您为服务器创建并附加了私有网络。这将允许您的服务器使用私有网络相互通信。

    如果您没有 Hetzner Cloud 账户,可以通过此 推荐链接 注册。

  2. 在 Coolify 中添加并验证服务器

    购买服务器后,您需要将它们添加到 Coolify 中。您可以通过点击 Coolify 仪表板中的 添加服务器 按钮并按照说明操作来完成此操作。

    Coolify 将自动在您的服务器上安装必要的软件。

  3. 可选:部署数据库

    最好为您的应用程序使用单独的数据库服务器。这不仅是出于性能原因,也是出于安全原因。此外,这样您可以将多个应用程序连接到一个集中的数据库服务器。

    如果您不需要数据库服务器或已经在其他地方托管了数据库,请跳过此步骤。

    购买数据库服务器并将其添加到 Coolify 后,在其上部署您首选的数据库类型(MySQL、PostgreSQL 等)。

    注意

    在本指南中,我们不会使用反向代理。我们将把数据库绑定到服务器的公共 IP 地址。我们将使用防火墙来限制对数据库服务器的访问。

    您可以在 服务器 选项卡上停止它们,然后切换到 代理类型。

    确保正确设置 端口映射 以允许应用程序服务器连接到数据库服务器。

    • PostgreSQL: 5432:5432
    • MySQL: 3306:3306
    • MariaDB: 3306:3306
    • MongoDB: 27017:27017
  4. 部署应用程序

    现在是时候在应用服务器上部署您的应用程序了。部署应用程序的详细步骤将取决于您要部署的应用程序类型。

    使用 Coolify,您可以将多个服务器附加到同一个应用程序。这将允许您在多个服务器上部署应用程序。

    注意

    在本指南中,我们不会使用反向代理。我们将把应用程序绑定到服务器的公共 IP 地址,因为负载均衡器将处理路由。

    您可以在 服务器 选项卡上停止它们,然后切换到 代理类型。

    确保正确设置 端口映射 以将应用程序端口转发到服务器的公共 IP 地址。

    如果您的应用程序使用数据库,请确保更新数据库连接字符串以指向数据库服务器。

    提示

    Hetzner Cloud 提供私有网络功能,允许您使用私有网络连接服务器。这可以帮助提高应用程序的安全性和性能。

    确保在服务器上启用私有网络功能,并在数据库连接字符串中使用它。

    通过在浏览器中访问服务器的公共 IP 地址和端口来测试应用程序是否正常工作。

  5. 添加并配置负载均衡器

    现在是时候添加负载均衡器来分配传入的流量到您的服务器了。

    这个负载均衡器将执行以下操作:

    • 将传入的流量分配到您的服务器
    • 终止 TLS 连接(使您的应用程序通过 HTTPS 安全,并通过 HTTP 将流量转发到您的服务器)
    • 对服务器进行健康检查,并将流量路由到健康的服务器

    您的应用程序在两台服务器上都运行在 端口 8000 上,并且您有一个域名 example.com

    1. 转到 Hetzner Cloud 控制台,点击左侧边栏中的 负载均衡器
    2. 点击 创建负载均衡器 按钮。
    3. 选择您的服务器所在的区域。
    4. 选择您为服务器创建的私有网络。
    5. 在目标部分选择所有服务器。重要:(使用私有网络)
    6. 在服务中,删除默认服务并添加一个 TLS 终止 预定义服务。
    7. 作为 目标端口 输入 8000(源端口应为 443)。
    8. 添加您域名的证书。它将使用 Let's Encrypt 为您的域名生成证书。
    9. 健康检查 部分,将健康检查端点配置为您的应用程序健康检查端点。(只需返回 200 OK 的端点)。
    10. 可选:可以启用粘性会话,这将确保用户在一段时间内始终被路由到同一台服务器,否则,负载均衡器将随机地将流量分配到您的服务器上。
    11. 选择一个算法。
    12. 最后,为您的负载均衡器命名并点击 创建并购买

    等待负载均衡器创建并健康。一旦健康,您可以检查应用程序是否可以通过负载均衡器的 IP 地址访问。

  6. 设置 DNS

    现在是时候将您的域名指向 负载均衡器的 IP 地址 了。您可以通过在域名提供商的 DNS 设置中添加 A 记录来完成此操作。

    1. 转到您的 DNS 设置。
    2. 添加一个 A 记录,域名和负载均衡器的 IP 地址值。
    3. 保存更改并等待 DNS 更改传播。

    DNS 更改传播后,您应该能够使用域名访问您的应用程序。

  7. 设置防火墙

    Hetzner Cloud 提供防火墙功能,允许您限制对服务器的访问。我们将使用此功能来限制对服务器的访问。

    由于负载均衡器通过私有网络与您的服务器通信,我们只需要为公共 IP 地址添加规则。

    入站 规则包括所有被允许的内容。默认情况下,其他所有内容都被阻止。

    1. 转到 Hetzner Cloud 控制台,点击左侧边栏中的 防火墙
    2. 点击 创建防火墙 按钮。
    3. 为您的 IP 地址添加 SSH 访问规则到 入站 规则。
    4. 将您的服务器添加到 应用规则 部分。
    5. 为您的防火墙命名并点击 创建防火墙

    提示

    可选:如果需要,您可以添加更多规则以允许访问特定端口或 IP 地址。