Coolify logoCoolify

Hetzner 上的负载均衡

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

简介

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

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

提示

整套基础设施每月成本约为 15 欧元。

前提条件

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

步骤

  1. 购买服务器

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

注意

请确保为您的服务器创建并附加一个私有网络。这将允许您的服务器通过私有网络相互通信。

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

  1. 在 Coolify 中添加并验证它们

    购买服务器后,您需要将它们添加到 Coolify。您可以在 Coolify 仪表板中点击 Add Server 按钮并按照说明操作。

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

  2. 可选:部署您的数据库

    建议为应用使用独立的数据库服务器。这不仅出于性能考虑,也出于安全考虑。此外,这样您还可以将应用连接到集中的数据库服务器。

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

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

注意

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

您可以在 Server 选项卡中停止它们,并将代理类型切换为 None

请确保正确设置 Ports Mappings,以允许应用服务器连接到数据库服务器。

  • PostgreSQL: 5432:5432
  • MySQL: 3306:3306
  • MariaDB: 3306:3306
  • MongoDB: 27017:27017
  1. 部署您的应用

    现在是将应用部署到应用服务器上的时候了。部署细节将取决于您部署的应用类型。

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

注意

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

您可以在 Server 选项卡中停止它们,并将代理类型切换为 None

请确保正确设置 Ports Mappings,以将应用端口转发到服务器的公网 IP 地址。

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

提示

Hetzner Cloud 提供私有网络功能,允许您通过私有网络连接服务器。这有助于提高应用的安全性和性能。

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

在浏览器中访问服务器的公网 IP 地址和端口,测试应用是否正常工作。

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

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

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

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

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

    1. 进入 Hetzner Cloud 控制台,在左侧边栏点击 Load Balancers
    2. 点击 Create Load Balancer 按钮。
    3. 选择服务器所在的区域。
    4. 选择为您服务器创建的私有网络。
    5. 在目标部分选择所有服务器。**重要提示:(use the private network)
    6. 在服务(services)部分,删除默认服务并添加 TLS Termination 预定义服务。
    7. Destination Port 中输入 8000(源端口应为 443)。
    8. 为您的域名添加证书。系统将使用 Let's Encrypt 为您的域名生成证书。
    9. health check 部分,将健康检查端点配置为您的应用健康检查端点。(只需一个返回 200 OK 的端点即可)。
    10. 可选:可以启用粘性会话(Sticky sessions),这将确保用户在一段时间内始终被路由到同一台服务器,否则负载均衡器将随机将流量分发到多台服务器。
    11. 选择一种算法。
    12. 最后,为您的负载均衡器命名并点击 Create & Buy now

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

  2. 设置 DNS

    现在是将您的域名指向 load balancer's IP address 的时候了。您可以通过在域名提供商的 DNS 设置中添加 A 记录来实现。

    1. 进入您的 DNS 设置。
    2. 添加一条 A 记录,域名为您的域名,值为负载均衡器的 IP 地址。
    3. 保存更改并等待 DNS 更改生效。

    DNS 更改生效后,您应该能够通过域名访问您的应用。

  3. 设置防火墙

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

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

    Inbound(入站)规则包含所有允许的内容。默认情况下,其他所有流量均被阻止。

    1. 进入 Hetzner Cloud 控制台,在左侧边栏点击 Firewalls
    2. 点击 Create Firewall 按钮。
    3. Inbound 规则中添加针对您 IP 地址的 SSH 访问规则。
    4. 将您的服务器添加到 Apply rule 部分。
    5. 为您的防火墙命名并点击 Create Firewall

提示

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

On this page