Coolify logoCoolify

负载均衡

您可以轻松使用 Traefik 在以下环境中为应用程序实现负载均衡:

  • 2 台或更多服务器
  • 单台服务器上的 2 个或更多容器

2 台或更多服务器

前提条件

  1. 确保为您的域名设置了正确的 DNS 记录。您的负载均衡域名应指向您正在设置负载均衡器的服务器的 IP 地址。
  2. 您必须将应用程序部署到多台服务器上:更多信息请参见此处
  3. 确保 Traefik 在所有服务器上运行。
  4. 将您的 fqdn 设置为您希望用于访问应用程序的完全限定域名 (FQDN)。
  5. 在您的应用程序部署到所有服务器后,您需要为 Traefik 创建动态配置,以便在您的服务器之间进行负载均衡,配置文件位于 /data/coolify/proxy/dynamic 目录。

动态配置

在 Coolify 的用户界面中,您可以进入服务器设置 / 代理 (Proxy) 选项卡,在那里添加动态配置。

如果您希望使用 HTTPS,以下配置有效。

http:
  middlewares:
    redirect-to-https:
      redirectscheme:
        scheme: https
    gzip:
      compress: true
  routers:
    lb-http:
      middlewares:
        - redirect-to-https
      entryPoints:
        - http
      service: noop
      # 将 <CHANGE_THIS_TO_YOUR_DOMAIN> 更改为您的域名,例如 `example.com`,不包含 `https://`
      rule: Host(`<CHANGE_THIS_TO_YOUR_DOMAIN>`)
    lb-https:
      middlewares:
        - gzip
      entryPoints:
        - https
      service: lb-https
      tls:
        certResolver: letsencrypt
      # 将 <CHANGE_THIS_TO_YOUR_DOMAIN> 更改为您的域名,例如 `example.com`,不包含 `https://`
      rule: Host(`<CHANGE_THIS_TO_YOUR_DOMAIN>`)
  services:
    lb-https:
      loadBalancer:
        servers:
          # 将 <CHANGE_THIS_TO_YOUR_IP_ADDRESS> 更改为您的服务器 IP 地址
          - url: 'http://<CHANGE_THIS_TO_YOUR_IP_ADDRESS>'
          - url: 'http://<CHANGE_THIS_TO_YOUR_IP_ADDRESS>'
          # 添加任意数量的服务器以进行负载均衡
    noop:
      loadBalancer:
        servers:
          - url: ''

如果您希望使用 HTTP,以下配置有效。

http:
  middlewares:
    gzip:
      compress: true
  routers:
    lb-http:
      middlewares:
        - gzip
      entryPoints:
        - http
      service: lb-http
      # 将 <CHANGE_THIS_TO_YOUR_DOMAIN> 更改为您的域名,例如 `example.com`,不包含 `http://`
      rule: Host(`<CHANGE_THIS_TO_YOUR_DOMAIN>`)
  services:
    lb-http:
      loadBalancer:
        servers:
          # 将 <CHANGE_THIS_TO_YOUR_IP_ADDRESS> 更改为您的服务器 IP 地址
          - url: 'http://<CHANGE_THIS_TO_YOUR_IP_ADDRESS>'
          - url: 'http://<CHANGE_THIS_TO_YOUR_IP_ADDRESS>'
          # 添加任意数量的服务器以进行负载均衡

单台服务器上的 2 个或更多容器

前提条件

  1. 确保为您的域名设置了正确的 DNS 记录。您的负载均衡域名应指向您正在设置负载均衡器的服务器的 IP 地址。
  2. 您必须将应用程序部署到单台服务器上的多个容器中。
  3. 确保 Traefik 在该服务器上运行。

动态配置

如果您希望使用 HTTPS,以下配置有效。

http:
  middlewares:
    redirect-to-https:
      redirectscheme:
        scheme: https
    gzip:
      compress: true
  routers:
    lb-https:
      tls:
        certResolver: letsencrypt
      middlewares:
        - gzip
      entryPoints:
        - https
      service: lb-https
      # 将 <CHANGE_THIS_TO_YOUR_DOMAIN> 更改为您的域名,例如 `example.com`,不包含 `http://`
      rule: Host(`<CHANGE_THIS_TO_YOUR_DOMAIN>`)
    lb-http:
      middlewares:
        - redirect-to-https
      entryPoints:
        - http
      service: noop
      # 将 <CHANGE_THIS_TO_YOUR_DOMAIN> 更改为您的域名,例如 `example.com`,不包含 `http://`
      rule: Host(`<CHANGE_THIS_TO_YOUR_DOMAIN>`)
  services:
    lb-https:
      loadBalancer:
        servers:
          # 将 <UUID_OR_HOST.DOCKER.INTERNAL>:<PORT> 更改为您的容器 UUID 或 host.docker.internal 以及端口
          # UUID 适用于将端口映射到主机系统的情况
          # host.docker.internal 适用于未向主机系统暴露任何端口的情况
          - url: 'http://<UUID_OR_HOST.DOCKER.INTERNAL>:<PORT>'
          - url: 'http://<UUID_OR_HOST.DOCKER.INTERNAL>:<PORT>'
          # 添加任意数量的容器以进行负载均衡
    noop:
      loadBalancer:
        servers:
          - url: ''

如果您希望使用 HTTP,以下配置有效。

http:
  middlewares:
    gzip:
      compress: true
  routers:
    lb-http:
      middlewares:
        - gzip
      entryPoints:
        - http
      service: lb-http
      # 将 <CHANGE_THIS_TO_YOUR_DOMAIN> 更改为您的域名,例如 `example.com`,不包含 `http://`
      rule: Host(`<CHANGE_THIS_TO_YOUR_DOMAIN>`)
  services:
    lb-http:
      loadBalancer:
        servers:
          # 将 <UUID_OR_HOST.DOCKER.INTERNAL>:<PORT> 更改为您的容器 UUID 或 host.docker.internal 以及端口
          # UUID 适用于将端口映射到主机系统的情况
          # host.docker.internal 适用于未向主机系统暴露任何端口的情况
          - url: 'http://<UUID_OR_HOST.DOCKER.INTERNAL>:<PORT>'
          - url: 'http://<UUID_OR_HOST.DOCKER.INTERNAL>:<PORT>'
          # 添加任意数量的容器以进行负载均衡

On this page