traefik 对单个容器启多个实例会自动负载均衡。注意docker-ompose 需要修改。在第一章节中的docker-compose 继续修改。
有以下几个注意点

  1. 不要命名 container_name 让docker-compose 自动生成,否则启动会名字冲突。
  2. 端口号开放一定范围,避免端口号冲突
    1. app1:
    2. #container_name: app1
    3. image: app1:v1
    4. ports:
    5. # The Web UI (enabled by --api.insecure=true)
    6. - "10183-10185:3000"
    7. expose:
    8. - "10183-10185"
    9. networks:
    10. - mynet
    11. labels:
    12. - "traefik.http.routers.app1.rule=PathPrefix(`/app1`)"
    启动命令 app1 启动两个实例
    1. docker-compose up -d --force-recreate --scale app1=2 app1
    测试
    image.png
    traefik 可以看到该endpoint 有两个service
    postman 测试
    image.png
    可以看到请求被轮询分配到两个服务上

    注意

    如下为一种错误的配置示范。这样达不到负载均衡的效果。traefik 会将请求全部转发到其中的一个服务上。
    image.png