负载均衡
您可以轻松使用 Traefik 在以下环境之间为应用程序进行负载均衡:
- 2+ 台服务器
- 一台服务器中的 2+ 个容器
2+ 台服务器
先决条件
- 确保为您的域名设置了正确的 DNS 记录。您的负载均衡域名应指向您设置负载均衡器的服务器的 IP 地址。
- 您必须将应用程序部署到多台服务器:点击此处了解更多。
- 确保 Traefik 在所有服务器上运行。
- 将您的
fqdn设置为您想要用于访问应用程序的完全限定域名。 - 应用程序在所有服务器上部署后,您需要在
/data/coolify/proxy/dynamic目录中为 Traefik 创建动态配置,以便在服务器之间进行负载均衡。
动态配置
在 Coolify 的 UI 中,您可以转到服务器设置/代理选项卡,在那里您可以添加动态配置。
如果您想使用 https,以下配置有效。
yaml
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,以下配置有效。
yaml
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+ 个容器
先决条件
- 确保为您的域名设置了正确的 DNS 记录。您的负载均衡域名应指向您设置负载均衡器的服务器的 IP 地址。
- 您必须将应用程序部署到一台服务器中的多个容器。
- 确保 Traefik 在服务器上运行。
动态配置
如果您想使用 https,以下配置有效。
yaml
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,以下配置有效。
yaml
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>'
# 添加任意数量的容器进行负载均衡