负载均衡
您可以轻松使用 Traefik 在以下环境中为应用程序实现负载均衡:
- 2 台或更多服务器
- 单台服务器上的 2 个或更多容器
2 台或更多服务器
前提条件
- 确保为您的域名设置了正确的 DNS 记录。您的负载均衡域名应指向您正在设置负载均衡器的服务器的 IP 地址。
- 您必须将应用程序部署到多台服务器上:更多信息请参见此处。
- 确保 Traefik 在所有服务器上运行。
- 将您的
fqdn设置为您希望用于访问应用程序的完全限定域名 (FQDN)。 - 在您的应用程序部署到所有服务器后,您需要为 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 个或更多容器
前提条件
- 确保为您的域名设置了正确的 DNS 记录。您的负载均衡域名应指向您正在设置负载均衡器的服务器的 IP 地址。
- 您必须将应用程序部署到单台服务器上的多个容器中。
- 确保 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>'
# 添加任意数量的容器以进行负载均衡