我正在使用其官方docker-compose file运行minio,它创建了4个服务(容器):minio1,minio2,minio3,minio4。 Traefik将它们视为4种独特的服务,但实际上,应该将它们视为单个后端,也就是说,我希望Traefik为minio生成1个前端和1个后端(具有4个服务器)。 我尝试将它们放在一个组中(servicefabric.groupname),但无济于事。 我为每个minio服务设置了以下标签:
labels:
- "traefik.servicefabric.groupname=minio"
- "traefik.basic.frontend.rule=Host:foo.bar.com"
- "traefik.weight=10" # 10,20,30,40 incremented per service
- "traefik.frontend.rule=Host:traefik"
- "traefik.port=9000"
container_name: minio*
有什么办法可以做到这一点?
答案 0 :(得分:2)
所有minio服务必须具有相同的前端规则和相同的后端名称。
labels:
- "traefik.frontend.rule=Host:minio.${DOMAIN}"
- "traefik.backend=minio"
- "traefik.port=9000"
我还认为您误解了“后端”的含义。后端是Traefik根据前端规则将流量路由到的服务器。与nginx中的“上游” /“位置”相同。
编辑
如评论中所述,此配置创建了多个都指向同一个后端的前端,尽管在功能上看起来很丑。一种快速的解决方案是仅使用一项带有“前端”的服务,但是如果该服务出现故障,那么前端也将消失。
一种更好的方法是在配置文件traefik.toml中进行设置:
[frontends]
[frontends.frontend1]
backend = "minio"
[frontends.frontend1.minio]
rule = "Host: minio.${DOMAIN}”
答案 1 :(得分:0)
@河人
我遇到了与您相同的问题,并且由于没有在Traefik文档中完整记录,所以我通过反复尝试解决了该问题。您需要做的是为所有服务指定traefik.backend
值,并使用相同的名称,并将traefik.frontend.backend
设置为该traefik.backend
值。您不能为此使用维修件。下面是一个示例。
services:
minio01:
image: minio/minio
hostname: minio01
restart: always
volumes:
- minio01-data:/export
networks:
- minio
- traefik
command: server http://minio01/export http://minio02/export
labels:
- 'traefik.enable=true'
- 'traefik.docker.network=traefik'
- 'traefik.frontend.rule=Host:minio.local'
- 'traefik.frontend.backend=minio'
- 'traefik.port=9000'
- 'traefik.protocol=http'
- 'traefik.backend=minio'
minio02:
image: minio/minio
hostname: minio02
restart: always
volumes:
- minio02-data:/export
networks:
- minio
- traefik
command: server http://minio01/export http://minio02/export
labels:
- 'traefik.enable=true'
- 'traefik.docker.network=traefik'
- 'traefik.frontend.rule=Host:minio.local'
- 'traefik.frontend.backend=minio'
- 'traefik.port=9000'
- 'traefik.protocol=http'
- 'traefik.backend=minio'