diff options
| author | Craig Jennings <c@cjennings.net> | 2024-04-07 13:41:34 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2024-04-07 13:41:34 -0500 |
| commit | 754bbf7a25a8dda49b5d08ef0d0443bbf5af0e36 (patch) | |
| tree | f1190704f78f04a2b0b4c977d20fe96a828377f1 /devdocs/docker/engine%2Fswarm%2Fingress%2Findex.html | |
new repository
Diffstat (limited to 'devdocs/docker/engine%2Fswarm%2Fingress%2Findex.html')
| -rw-r--r-- | devdocs/docker/engine%2Fswarm%2Fingress%2Findex.html | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/devdocs/docker/engine%2Fswarm%2Fingress%2Findex.html b/devdocs/docker/engine%2Fswarm%2Fingress%2Findex.html new file mode 100644 index 00000000..ffdaeb45 --- /dev/null +++ b/devdocs/docker/engine%2Fswarm%2Fingress%2Findex.html @@ -0,0 +1,66 @@ +<h1>Use swarm mode routing mesh</h1> + +<p>Docker Engine swarm mode makes it easy to publish ports for services to make them available to resources outside the swarm. All nodes participate in an ingress <strong>routing mesh</strong>. The routing mesh enables each node in the swarm to accept connections on published ports for any service running in the swarm, even if there’s no task running on the node. The routing mesh routes all incoming requests to published ports on available nodes to an active container.</p> <p>To use the ingress network in the swarm, you need to have the following ports open between the swarm nodes before you enable swarm mode:</p> <ul> <li>Port <code class="language-plaintext highlighter-rouge">7946</code> TCP/UDP for container network discovery.</li> <li>Port <code class="language-plaintext highlighter-rouge">4789</code> UDP for the container ingress network.</li> </ul> <p>You must also open the published port between the swarm nodes and any external resources, such as an external load balancer, that require access to the port.</p> <p>You can also <a href="#bypass-the-routing-mesh">bypass the routing mesh</a> for a given service.</p> <h2 id="publish-a-port-for-a-service">Publish a port for a service</h2> <p>Use the <code class="language-plaintext highlighter-rouge">--publish</code> flag to publish a port when you create a service. <code class="language-plaintext highlighter-rouge">target</code> is used to specify the port inside the container, and <code class="language-plaintext highlighter-rouge">published</code> is used to specify the port to bind on the routing mesh. If you leave off the <code class="language-plaintext highlighter-rouge">published</code> port, a random high-numbered port is bound for each service task. You need to inspect the task to determine the port.</p> <div class="highlight"><pre class="highlight" data-language="">$ docker service create \ + --name <SERVICE-NAME> \ + --publish published=<PUBLISHED-PORT>,target=<CONTAINER-PORT> \ + <IMAGE> +</pre></div> <blockquote> <p><strong>Note</strong>: The older form of this syntax is a colon-separated string, where the published port is first and the target port is second, such as <code class="language-plaintext highlighter-rouge">-p 8080:80</code>. The new syntax is preferred because it is easier to read and allows more flexibility.</p> </blockquote> <p>The <code class="language-plaintext highlighter-rouge"><PUBLISHED-PORT></code> is the port where the swarm makes the service available. If you omit it, a random high-numbered port is bound. The <code class="language-plaintext highlighter-rouge"><CONTAINER-PORT></code> is the port where the container listens. This parameter is required.</p> <p>For example, the following command publishes port 80 in the nginx container to port 8080 for any node in the swarm:</p> <div class="highlight"><pre class="highlight" data-language="">$ docker service create \ + --name my-web \ + --publish published=8080,target=80 \ + --replicas 2 \ + nginx +</pre></div> <p>When you access port 8080 on any node, Docker routes your request to an active container. On the swarm nodes themselves, port 8080 may not actually be bound, but the routing mesh knows how to route the traffic and prevents any port conflicts from happening.</p> <p>The routing mesh listens on the published port for any IP address assigned to the node. For externally routable IP addresses, the port is available from outside the host. For all other IP addresses the access is only available from within the host.</p> <p><img src="data:image/png;base64,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" alt="service ingress image"></p> <p>You can publish a port for an existing service using the following command:</p> <div class="highlight"><pre class="highlight" data-language="">$ docker service update \ + --publish-add published=<PUBLISHED-PORT>,target=<CONTAINER-PORT> \ + <SERVICE> +</pre></div> <p>You can use <code class="language-plaintext highlighter-rouge">docker service inspect</code> to view the service’s published port. For instance:</p> <div class="highlight"><pre class="highlight" data-language="">$ docker service inspect --format="{{json .Endpoint.Spec.Ports}}" my-web + +[{"Protocol":"tcp","TargetPort":80,"PublishedPort":8080}] +</pre></div> <p>The output shows the <code class="language-plaintext highlighter-rouge"><CONTAINER-PORT></code> (labeled <code class="language-plaintext highlighter-rouge">TargetPort</code>) from the containers and the <code class="language-plaintext highlighter-rouge"><PUBLISHED-PORT></code> (labeled <code class="language-plaintext highlighter-rouge">PublishedPort</code>) where nodes listen for requests for the service.</p> <h3 id="publish-a-port-for-tcp-only-or-udp-only">Publish a port for TCP only or UDP only</h3> <p>By default, when you publish a port, it is a TCP port. You can specifically publish a UDP port instead of or in addition to a TCP port. When you publish both TCP and UDP ports, If you omit the protocol specifier, the port is published as a TCP port. If you use the longer syntax (recommended), set the <code class="language-plaintext highlighter-rouge">protocol</code> key to either <code class="language-plaintext highlighter-rouge">tcp</code> or <code class="language-plaintext highlighter-rouge">udp</code>.</p> <h4 id="tcp-only">TCP only</h4> <p><strong>Long syntax:</strong></p> <div class="highlight"><pre class="highlight" data-language="">$ docker service create --name dns-cache \ + --publish published=53,target=53 \ + dns-cache +</pre></div> <p><strong>Short syntax:</strong></p> <div class="highlight"><pre class="highlight" data-language="">$ docker service create --name dns-cache \ + -p 53:53 \ + dns-cache +</pre></div> <h4 id="tcp-and-udp">TCP and UDP</h4> <p><strong>Long syntax:</strong></p> <div class="highlight"><pre class="highlight" data-language="">$ docker service create --name dns-cache \ + --publish published=53,target=53 \ + --publish published=53,target=53,protocol=udp \ + dns-cache +</pre></div> <p><strong>Short syntax:</strong></p> <div class="highlight"><pre class="highlight" data-language="">$ docker service create --name dns-cache \ + -p 53:53 \ + -p 53:53/udp \ + dns-cache +</pre></div> <h4 id="udp-only">UDP only</h4> <p><strong>Long syntax:</strong></p> <div class="highlight"><pre class="highlight" data-language="">$ docker service create --name dns-cache \ + --publish published=53,target=53,protocol=udp \ + dns-cache +</pre></div> <p><strong>Short syntax:</strong></p> <div class="highlight"><pre class="highlight" data-language="">$ docker service create --name dns-cache \ + -p 53:53/udp \ + dns-cache +</pre></div> <h2 id="bypass-the-routing-mesh">Bypass the routing mesh</h2> <p>You can bypass the routing mesh, so that when you access the bound port on a given node, you are always accessing the instance of the service running on that node. This is referred to as <code class="language-plaintext highlighter-rouge">host</code> mode. There are a few things to keep in mind.</p> <ul> <li> <p>If you access a node which is not running a service task, the service does not listen on that port. It is possible that nothing is listening, or that a completely different application is listening.</p> </li> <li> <p>If you expect to run multiple service tasks on each node (such as when you have 5 nodes but run 10 replicas), you cannot specify a static target port. Either allow Docker to assign a random high-numbered port (by leaving off the <code class="language-plaintext highlighter-rouge">published</code>), or ensure that only a single instance of the service runs on a given node, by using a global service rather than a replicated one, or by using placement constraints.</p> </li> </ul> <p>To bypass the routing mesh, you must use the long <code class="language-plaintext highlighter-rouge">--publish</code> service and set <code class="language-plaintext highlighter-rouge">mode</code> to <code class="language-plaintext highlighter-rouge">host</code>. If you omit the <code class="language-plaintext highlighter-rouge">mode</code> key or set it to <code class="language-plaintext highlighter-rouge">ingress</code>, the routing mesh is used. The following command creates a global service using <code class="language-plaintext highlighter-rouge">host</code> mode and bypassing the routing mesh.</p> <div class="highlight"><pre class="highlight" data-language="">$ docker service create --name dns-cache \ + --publish published=53,target=53,protocol=udp,mode=host \ + --mode global \ + dns-cache +</pre></div> <h2 id="configure-an-external-load-balancer">Configure an external load balancer</h2> <p>You can configure an external load balancer for swarm services, either in combination with the routing mesh or without using the routing mesh at all.</p> <h3 id="using-the-routing-mesh">Using the routing mesh</h3> <p>You can configure an external load balancer to route requests to a swarm service. For example, you could configure <a href="https://www.haproxy.org">HAProxy</a> to balance requests to an nginx service published to port 8080.</p> <p><img src="data:image/png;base64,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" alt="ingress with external load balancer image"></p> <p>In this case, port 8080 must be open between the load balancer and the nodes in the swarm. The swarm nodes can reside on a private network that is accessible to the proxy server, but that is not publicly accessible.</p> <p>You can configure the load balancer to balance requests between every node in the swarm even if there are no tasks scheduled on the node. For example, you could have the following HAProxy configuration in <code class="language-plaintext highlighter-rouge">/etc/haproxy/haproxy.cfg</code>:</p> <div class="highlight"><pre class="highlight" data-language="">global + log /dev/log local0 + log /dev/log local1 notice +...snip... + +# Configure HAProxy to listen on port 80 +frontend http_front + bind *:80 + stats uri /haproxy?stats + default_backend http_back + +# Configure HAProxy to route requests to swarm nodes on port 8080 +backend http_back + balance roundrobin + server node1 192.168.99.100:8080 check + server node2 192.168.99.101:8080 check + server node3 192.168.99.102:8080 check +</pre></div> <p>When you access the HAProxy load balancer on port 80, it forwards requests to nodes in the swarm. The swarm routing mesh routes the request to an active task. If, for any reason the swarm scheduler dispatches tasks to different nodes, you don’t need to reconfigure the load balancer.</p> <p>You can configure any type of load balancer to route requests to swarm nodes. To learn more about HAProxy, see the <a href="https://cbonte.github.io/haproxy-dconv/">HAProxy documentation</a>.</p> <h3 id="without-the-routing-mesh">Without the routing mesh</h3> <p>To use an external load balancer without the routing mesh, set <code class="language-plaintext highlighter-rouge">--endpoint-mode</code> to <code class="language-plaintext highlighter-rouge">dnsrr</code> instead of the default value of <code class="language-plaintext highlighter-rouge">vip</code>. In this case, there is not a single virtual IP. Instead, Docker sets up DNS entries for the service such that a DNS query for the service name returns a list of IP addresses, and the client connects directly to one of these. You are responsible for providing the list of IP addresses and ports to your load balancer. See <a href="https://docs.docker.com/network/overlay#configure-service-discovery">Configure service discovery</a>.</p> <h2 id="learn-more">Learn more</h2> <ul> <li><a href="../services/index">Deploy services to a swarm</a></li> </ul> +<p><a href="https://docs.docker.com/search/?q=guide">guide</a>, <a href="https://docs.docker.com/search/?q=swarm%20mode">swarm mode</a>, <a href="https://docs.docker.com/search/?q=swarm">swarm</a>, <a href="https://docs.docker.com/search/?q=network">network</a>, <a href="https://docs.docker.com/search/?q=ingress">ingress</a>, <a href="https://docs.docker.com/search/?q=routing%20mesh">routing mesh</a></p> +<div class="_attribution"> + <p class="_attribution-p"> + © 2019 Docker, Inc.<br>Licensed under the Apache License, Version 2.0.<br>Docker and the Docker logo are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries.<br>Docker, Inc. and other parties may also have trademark rights in other terms used herein.<br> + <a href="https://docs.docker.com/engine/swarm/ingress/" class="_attribution-link">https://docs.docker.com/engine/swarm/ingress/</a> + </p> +</div> |
