首页 > 解决方案 > Docker 提供程序和 url 上的服务器之间的 Traefik 负载平衡

问题描述

我目前有一个 Traefik 设置,其中一个 nodejs 服务在 docker 容器中本地运行,其中包含 docker-compose.yml 文件,如下所示:

container_name: nestjs-server
build:
  context: ./
  dockerfile: Dockerfile
networks:
  - traefik-global-proxy
labels:
  - "traefik.enable=true"
  - "traefik.http.routers.nestjs-server.rule=Host(`mydomain.com`) || Host(`www.mydomain.com`)"
  - "traefik.http.routers.nestjs-server.entrypoints=websecure"
  - "traefik.http.routers.nestjs-server.tls.certresolver=letsencrypt"
  - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"

我在 1vCPU / 2GB 云实例上运行。现在我想在另一个 VM 上添加第二个节点应用程序实例。我已经看到可以像这样将服务器实例添加到负载均衡器:

  services:
    my-service:
      loadBalancer:
        servers:
        - url: "http://<private-ip-server-1>:<private-port-server-1>/"
        - url: "http://<private-ip-server-2>:<private-port-server-2>/"

但我不确定如何在本地 docker 实例旁边的另一个服务上的实例之间进行负载平衡。我已经读到不可能将基于标签的配置与文件配置混合在一起,所以我认为我需要执行以下操作:

    my-service:
      loadBalancer:
        servers:
        - url: "http://<private-ip-server-1>:<private-port-server-1>/"
        - port: "<local-port-server-2>"

这可能吗?除了让所有东西都在 docker 中的同一台机器上运行之外,实现此目的的正确方法是什么?

标签: traefik

解决方案


推荐阅读