You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以Docker为服务发现提供商连接两台服务器的Traefik实例?

跨服务器Traefik实例互联与Docker服务发现配置

一、主从Traefik实例基础互联配置

要通过主服务器Traefik访问从服务器的Traefik,核心是让主Traefik能路由请求到从Traefik的服务端口,同时确保从服务器的Traefik端口允许主服务器访问:

  1. 确保从服务器Traefik可被主服务器访问

    • 从服务器的Traefik容器需暴露API/dashboard端口(比如8080),并且服务器防火墙允许主服务器IP访问该端口。
    • 从服务器Traefik静态配置需开启API和dashboard:
      api:
        dashboard: true
      
  2. 主服务器Traefik添加路由规则
    在主服务器Traefik的动态配置中添加路由,指向从服务器的Traefik地址:

    http:
      routers:
        slave-traefik:
          rule: "Host(`slave-traefik.your-domain.com`)"
          service: slave-traefik-service
      services:
        slave-traefik-service:
          loadBalancer:
            servers:
              - url: "http://<从服务器IP>:8080"
    

二、基于Docker的服务发现方案(Docker Swarm集群)

如果想通过Docker原生服务发现来管理两台Traefik实例,需要将两台服务器加入同一个Docker Swarm集群,利用Swarm的服务发现能力实现自动互联:

步骤1:搭建Docker Swarm集群

  • 在主服务器执行初始化命令:
    docker swarm init --advertise-addr <主服务器IP>
    
  • 复制输出的docker swarm join命令,在从服务器执行,完成集群加入。

步骤2:在Swarm集群中部署Traefik实例

创建docker-compose.yml文件,配置Traefik使用Docker Swarm作为服务发现提供商,可指定部署到主/从节点或全局部署:

version: "3.8"

services:
  traefik:
    image: traefik:v2.10
    command:
      - "--api.insecure=true" # 生产环境建议关闭,改用HTTPS
      - "--providers.docker=true"
      - "--providers.docker.swarmMode=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
    deploy:
      placement:
        constraints:
          - node.role == <worker/manager> # 去掉约束则全局部署到所有节点

执行部署命令:

docker stack deploy -c docker-compose.yml traefik-cluster

步骤3:通过Swarm服务发现实现Traefik互联

在Swarm集群中,每个Traefik实例作为Swarm服务存在,可直接通过服务名访问。在主Traefik的路由配置中,直接指向从Traefik的Swarm服务名即可:

http:
  routers:
    slave-traefik:
      rule: "Host(`slave-traefik.your-domain.com`)"
      service: traefik-cluster_traefik # Swarm服务名格式为<stack名>_<服务名>
  services:
    traefik-cluster_traefik:
      loadBalancer:
        serversTransport:
          insecureSkipVerify: true # 如果从Traefik使用自签证书需添加

这样无需手动配置从服务器IP,Swarm会自动维护服务的地址信息,实现动态服务发现。

内容的提问来源于stack exchange,提问作者Anish kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:43:39