Rolling-updates in Docker Swarm with disabled internal load-balancer?

Viewed 100

Is it possible to use rolling-updates (update-order: start-first) when the Docker Swarm internal load-balancer is disabled for a service (DNS Round Robin (DNSRR) mode)?

My service configuration looks like this:

  api:
    image: "..."
    networks:
      - api-network
    ports:
      - target: 9292
        published: 9292
        protocol: tcp
        mode: host
    deploy:
      mode: global
      endpoint_mode: dnsrr
      update_config:
        order: start-first

With this configuration I get the error host-mode port already in use on 1 node" update start-first when trying to deploy a new version. Using stop-first is not really a good solution because requests will fail while the new container is starting up.

My motivation to disable the internal load-balancer is, that I want to detect faulty servers in the reverse-proxy (nginx) and disable them. But together with the Docker Swarm load-balancer I'm worried that if for example nginx sends a request to server A, where the Swarm load-balancer will forward the request to a faulty server B, nginx would mark server A as faulty while actually server A is fine.

0 Answers
Related