gpt4 book ai didi

docker - 带有traefik的docker中没有主机的不同站点中多个站点的负载均衡器

转载 作者:行者123 更新时间:2023-12-02 20:00:26 24 4
gpt4 key购买 nike

假设我有两个Web服务说它们是docker-compose部署的w1w2

现在,我想为它们中的每一个创建多个容器,并在它们前面创建一个负载平衡器,以使此服务可以访问:

http://localhost:8880 //for service w1

http://localhost:8888 //for service w2

我搜索了,然后得到 dockercloud-haproxynginx-proxy

但是,不建议使用前者,而后者必须与主机名一起使用以区分不同的服务。

设置不同的主机尤其复杂,尤其是在开发环境中。

然后我找到了traefik。似乎更可配置。这是我使用的配置文件:
version: "3"
services:
w1:
image: jwilder/whoami
labels:
- "traefik.backend=whoami"
- "traefik.protocol=http"
- "traefik.port=8080"
- "traefik.frontend.entryPoints=http_8080"

w2:
build: . # a simple node server which use port 80
labels:
- "traefik.backend=node"
- "traefik.protocol=http"
- "traefik.port=80"
- "traefik.frontend.entryPoints=http_80"

lb:
image: traefik
command: "--docker \
--logLevel=DEBUG \
--entryPoints='Name:http_80 Address::80' \
--entryPoints='Name:http_8080 Address::8080'"
ports:
- 8880:80
- 8888:8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock

虽然它仍然不能满足我的要求。

这可能还是任何其他替代解决方案?

最佳答案

您需要在w1和w2下添加匹配器-"traefik.frontend.rule=PathPrefixStrip:/"。否则,默认为Host:w1.project_name

另外,我相信jwilder / whoami使用端口8000而不是8080,因此将- "traefik.port=8080"更改为- "traefik.port=8000"

关于docker - 带有traefik的docker中没有主机的不同站点中多个站点的负载均衡器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54006729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com