New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add overlay networking guide #25420

Merged
merged 1 commit into from Aug 12, 2016

Conversation

Projects
None yet
9 participants
@sfsmithcha
Copy link
Contributor

sfsmithcha commented Aug 4, 2016

- What I did
Add overlay networking guide to manage a swarm guide
- How I did it
added networking.md
- How to verify it
read networking.md for accuracy/correctness

Depends on #25135 for reference to Docker swarm mode overlay network security model

Signed-off-by: Charles Smith charles.smith@docker.com

@sfsmithcha

This comment has been minimized.

Copy link
Contributor Author

sfsmithcha commented Aug 4, 2016

@sfsmithcha sfsmithcha force-pushed the sfsmithcha:add_networking_guide branch 2 times, most recently from 8983295 to 5d785da Aug 4, 2016

Docker Engine swarm mode provides networking features to help you attach services to a user-defined network:

* Swarm mode natively supports **overlay networks**, so you can enable
container-to-conatiner networks. When you use swarm mode, you don't need an

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

s/conatiner/container/

* Swarm mode natively supports **overlay networks**, so you can enable
container-to-conatiner networks. When you use swarm mode, you don't need an
external key-value store.
* By default, **service discovery** assigns a virtual IP address and DNS

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

virtual IP address (VIP)

$ docker network create \
--driver overlay \
--subnet=10.0.9.0/24 \
--opt encrypted \

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

nit: be consequent in using = or not (perhaps using = is more understandable here, so that's clear that they "belong" together, but either way should be fine

This comment has been minimized.

@sfsmithcha

sfsmithcha Aug 4, 2016

Author Contributor

that was a cp/paste from another guide :/ (I think i'm typically leaving out =) Good catch.

you don't specify a subnet, the swarm manager automatically chooses a subnet and
assigns it to the network. If automatically assigned adresses overlap with
another subnet in your infrastructure, you may experience connectivity issues or
failures with containers connected to the network.

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

Should we mention that this is only on older kernels, or too much info?

This comment has been minimized.

@sfsmithcha

sfsmithcha Aug 4, 2016

Author Contributor

Are you saying that the conflict only happens on older kernels? If it doesn't happen on current kernels, i could remove the option from the command example and then just mention it afterward for only that use case.

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

Unfortunately it conflicts on kernel 3.10, which is in use by RHEL/CentOS, so for those distros it's the "current" kernel

This comment has been minimized.

@sfsmithcha

sfsmithcha Aug 5, 2016

Author Contributor

Tried to clarify this PTAL at update.

another subnet in your infrastructure, you may experience connectivity issues or
failures with containers connected to the network.

Before you attach a service to the network, the network only extends to manager nodes. You can run `docker network ls` to view the network:

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

80-chars

bd0befxwiva4 my-network overlay swarm
```

The `swarm` scope indicates that the network is available or use with services

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

s/or use/for use/

## Attach a service to an overlay network

To attach a service to an overlay network, pass the `--network` flag when you
run create a service. For example to create a nginx service attached to a

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

s/a nginx/an nginx/

This comment has been minimized.

@ralphtheninja

ralphtheninja Aug 5, 2016

Contributor

s/when you run create/when you create

overlay network. The swarm extends the network to all the nodes with `Running`
tasks for the service.

Run `docker service ps <SERVICE>` to view the nodes where tasks are running for the service:

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

From a manager node, run ...

Run `docker service ps <SERVICE>` to view the nodes where tasks are running for the service:

```bash
# From a manager node:

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

this can then be removed

attached to the network:

```bash
docker network inspect <NETWORK>

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

missing $

--format=='{{json .Endpoint.VirtualIPs}}' \
my_web
=[{"NetworkID":"7m2rjx0a97n88wzr4nu8772r3" "Addr":"10.0.0.2/24"}]

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

stray = here at the start of the line?

This comment has been minimized.

@sfsmithcha

sfsmithcha Aug 4, 2016

Author Contributor

think that's caused by the ==


```bash
$ docker service inspect \
--format=='{{json .Endpoint.VirtualIPs}}' \

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

s/==/=/

among the active tasks.

For example, you can add a `busybox` service on the same network as the `nginx`
service. The busybox service can access `nginx` using the DNS name `my_web`:

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

it may be good to replace the underscores in our examples with dashes; Some software doesn't like that in DNS names, so better not use it in our examples (change to my-web, my-busybox)

```

3. From the node where the busybox task is running, open an interactive shell to
the busybox conatiner:

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

s/conatiner/container/

4. Query the DNS to view the VIP for the `my_web` service:

```bash
# From inside the busybox container:

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

Better put this outside the code-block

service:

```bash
# From inside the busybox container:

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

same here

the `my_web` service:

```bash
# From inside the busybox conatiner

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

and here

...snip...
```

The swarm load balancer automatically routes the HTTP request to the service

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

service's


You can configure the service to use DNS round-robin directly without using a
VIP, by setting the `--endpoint-mode dnsrr` when you create the service. For example:

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

Perhaps a short explanation why you would want to do this (DNS RR), e.g. to use your own load balancer, that needs to connect directly with the individual containers

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

Also possibly the downsides - not all software properly does round-robin (Madhu or Jana should be better able to confirm/explain this 😄)

This comment has been minimized.

@sanimej

sanimej Aug 10, 2016

@thaJeztah I don't think we have to go into the disadvantages of DNS-RR in this doc. It depends on the deployment and DNS-RR might very well be ok for some deployments.

You can configure the service to use DNS round-robin directly without using a
VIP, by setting the `--endpoint-mode dnsrr` when you create the service. For example:

```

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

missing "bash" hint

When you query the DNS for the service name, the DNS service returns the IP
addresses for all the task containers:

```

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

missing "bash" hint

```

The `--opt encrypted` flag is optional. It configures the overlay driver to
encrypt vxlan traffic between the nodes.

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

Haven't had time yet to catch up on our networking deep-dive part 2, but without --opt encrypted, can someone "snoop" the network traffic? I think it would be good to add slightly more information; this is something people will ask ("why is it not the default"? "should I enable this"? "is it secure out of the box"?)

This comment has been minimized.

@sfsmithcha

sfsmithcha Aug 4, 2016

Author Contributor

maybe a good place to link to overlay network security?

This comment has been minimized.

@thaJeztah

thaJeztah Aug 4, 2016

Member

Yes, that would be good. (Perhaps a tiny bit more info here as well, so that people don't have to jump between those sections)

This comment has been minimized.

@ralphtheninja

ralphtheninja Aug 5, 2016

Contributor

Haven't had time yet to catch up on our networking deep-dive part 2, but without --opt encrypted, can someone "snoop" the network traffic? I think it would be good to add slightly more information; this is something people will ask ("why is it not the default"? "should I enable this"? "is it secure out of the box"?)

@thaJeztah Yes they can. I've seen issues reported on this. See #24253

@thaJeztah

This comment has been minimized.

Copy link
Member

thaJeztah commented Aug 4, 2016

Thanks @sfsmithcha, good read!

@thaJeztah thaJeztah added this to the 1.12.0 milestone Aug 4, 2016

@sfsmithcha

This comment has been minimized.

Copy link
Contributor Author

sfsmithcha commented Aug 4, 2016

@sfsmithcha sfsmithcha force-pushed the sfsmithcha:add_networking_guide branch 2 times, most recently from 28a49b8 to be74395 Aug 5, 2016

@twang2218

This comment has been minimized.

Copy link

twang2218 commented Aug 9, 2016

A typo found in docs/swarm/images/service-vip.png, my1-web.1 should be my-web.1.

@sfsmithcha sfsmithcha force-pushed the sfsmithcha:add_networking_guide branch from be74395 to e11d3df Aug 9, 2016

@SvenDowideit SvenDowideit modified the milestones: 1.12.1, 1.12.0 Aug 9, 2016

@sfsmithcha sfsmithcha force-pushed the sfsmithcha:add_networking_guide branch 2 times, most recently from ac478a0 to 190c1aa Aug 10, 2016

@@ -0,0 +1 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="872.0888761605971" height="616.5246403801868"><style xmlns="http://www.w3.org/1999/xhtml"></style><defs/><g transform="translate(0,0)"><g><rect fill="#ffffff" stroke="none" x="0" y="0" width="872.0888761605971" height="616.5246403801868"/></g><g transform="translate(0,0) matrix(1,0,0,1,30.01527419063106,360)"><g><g transform="translate(0,0) scale(2.227454370699169,1.2993483829078496)"><g><path fill="#ccf4f4" stroke="none" d="M 0 0 L 100 0 Q 100 0 100 0 L 100 100 Q 100 100 100 100 L 0 100 Q 0 100 0 100 L 0 0 Q 0 0 0 0 Z"/><g transform="scale(0.4489429786550972,0.7696165348373089)"><path fill="none" stroke="none" d="M 0 0 L 222.7454370699169 0 Q 222.7454370699169 0 222.7454370699169 0 L 222.7454370699169 129.93483829078497 Q 222.7454370699169 129.93483829078497 222.7454370699169 129.93483829078497 L 0 129.93483829078497 Q 0 129.93483829078497 0 129.93483829078497 L 0 0 Q 0 0 0 0 Z"/><path fill="none" stroke="#00a2a2" d="M 0 0 M 0 0 L 222.7454370699169 0 Q 222.7454370699169 0 222.7454370699169 0 L 222.7454370699169 129.93483829078497 Q 222.7454370699169 129.93483829078497 222.7454370699169 129.93483829078497 L 0 129.93483829078497 Q 0 129.93483829078497 0 129.93483829078497 L 0 0 Q 0 0 0 0 Z" stroke-miterlimit="10" stroke-width="2"/></g></g></g></g></g><g transform="matrix(1,0,0,1,42,415)"><g transform="translate(148,0) matrix(1,0,0,1,0,0) translate(-148,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="200" height="20" fill-opacity="0"/></g></g><g transform="translate(148,0) matrix(1,0,0,1,0,0) translate(-148,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="200" height="20" fill-opacity="0"/></g></g><g transform="translate(148,0) matrix(1,0,0,1,0,0) translate(-148,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="74" y="0" width="51" height="20" fill-opacity="0"/></g></g><g transform="translate(148,0) matrix(1,0,0,1,0,0) translate(-148,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="74" y="0" width="51" height="20" fill-opacity="0"/></g><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="74" y="17">node1</text></g></g><g transform="translate(0,0) matrix(1,0,0,1,625.3933561283152,359.9125925797616)"><g><g transform="translate(0,0) scale(2.227454370699169,1.2993483829078496)"><g><path fill="#ccf4f4" stroke="none" d="M 0 0 L 100 0 Q 100 0 100 0 L 100 100 Q 100 100 100 100 L 0 100 Q 0 100 0 100 L 0 0 Q 0 0 0 0 Z"/><g transform="scale(0.4489429786550972,0.7696165348373089)"><path fill="none" stroke="none" d="M 0 0 L 222.7454370699169 0 Q 222.7454370699169 0 222.7454370699169 0 L 222.7454370699169 129.93483829078497 Q 222.7454370699169 129.93483829078497 222.7454370699169 129.93483829078497 L 0 129.93483829078497 Q 0 129.93483829078497 0 129.93483829078497 L 0 0 Q 0 0 0 0 Z"/><path fill="none" stroke="#00a2a2" d="M 0 0 M 0 0 L 222.7454370699169 0 Q 222.7454370699169 0 222.7454370699169 0 L 222.7454370699169 129.93483829078497 Q 222.7454370699169 129.93483829078497 222.7454370699169 129.93483829078497 L 0 129.93483829078497 Q 0 129.93483829078497 0 129.93483829078497 L 0 0 Q 0 0 0 0 Z" stroke-miterlimit="10" stroke-width="2"/></g></g></g></g></g><g transform="matrix(1,0,0,1,637,415)"><g transform="translate(148,0) matrix(1,0,0,1,0,0) translate(-148,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="200" height="20" fill-opacity="0"/></g></g><g transform="translate(148,0) matrix(1,0,0,1,0,0) translate(-148,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="200" height="20" fill-opacity="0"/></g></g><g transform="translate(148,0) matrix(1,0,0,1,0,0) translate(-148,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="74" y="0" width="51" height="20" fill-opacity="0"/></g></g><g transform="translate(148,0) matrix(1,0,0,1,0,0) translate(-148,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="74" y="0" width="51" height="20" fill-opacity="0"/></g><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="74" y="17">node3</text></g></g><g transform="translate(0,0) matrix(1,0,0,1,326,359.7245006145894)"><g><g transform="translate(0,0) scale(2.227454370699169,1.2993483829078496)"><g><path fill="#ccf4f4" stroke="none" d="M 0 0 L 100 0 Q 100 0 100 0 L 100 100 Q 100 100 100 100 L 0 100 Q 0 100 0 100 L 0 0 Q 0 0 0 0 Z"/><g transform="scale(0.4489429786550972,0.7696165348373089)"><path fill="none" stroke="none" d="M 0 0 L 222.7454370699169 0 Q 222.7454370699169 0 222.7454370699169 0 L 222.7454370699169 129.93483829078497 Q 222.7454370699169 129.93483829078497 222.7454370699169 129.93483829078497 L 0 129.93483829078497 Q 0 129.93483829078497 0 129.93483829078497 L 0 0 Q 0 0 0 0 Z"/><path fill="none" stroke="#00a2a2" d="M 0 0 M 0 0 L 222.7454370699169 0 Q 222.7454370699169 0 222.7454370699169 0 L 222.7454370699169 129.93483829078497 Q 222.7454370699169 129.93483829078497 222.7454370699169 129.93483829078497 L 0 129.93483829078497 Q 0 129.93483829078497 0 129.93483829078497 L 0 0 Q 0 0 0 0 Z" stroke-miterlimit="10" stroke-width="2"/></g></g></g></g></g><g transform="matrix(1,0,0,1,338,415)"><g transform="translate(148,0) matrix(1,0,0,1,0,0) translate(-148,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="200" height="20" fill-opacity="0"/></g></g><g transform="translate(148,0) matrix(1,0,0,1,0,0) translate(-148,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="200" height="20" fill-opacity="0"/></g></g><g transform="translate(148,0) matrix(1,0,0,1,0,0) translate(-148,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="74" y="0" width="51" height="20" fill-opacity="0"/></g></g><g transform="translate(148,0) matrix(1,0,0,1,0,0) translate(-148,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="74" y="0" width="51" height="20" fill-opacity="0"/></g><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="74" y="17">node2</text></g></g><g transform="translate(0,0) matrix(1,0,0,1,325.9187498337799,270)"><g><g transform="translate(0,0) scale(0.9095438680354939,0.7610469099888831)"><g><path fill="none" stroke="none" d="M 10 0 L 90 0 Q 100 0 100 10 L 100 90 Q 100 100 90 100 L 10 100 Q 0 100 0 90 L 0 10 Q 0 0 10 0 Z"/><g transform="scale(1.099452192624728,1.313979449722235)"><path fill="#ffc400" stroke="none" d="M 10 0 L 80.9543868035494 0 Q 90.9543868035494 0 90.9543868035494 10 L 90.9543868035494 66.10469099888832 Q 90.9543868035494 76.10469099888832 80.9543868035494 76.10469099888832 L 10 76.10469099888832 Q 0 76.10469099888832 0 66.10469099888832 L 0 10 Q 0 0 10 0 Z" opacity="0.5"/><path fill="none" stroke="#ffc400" d="M 10 0 M 10 0 L 80.9543868035494 0 Q 90.9543868035494 0 90.9543868035494 10 L 90.9543868035494 66.10469099888832 Q 90.9543868035494 76.10469099888832 80.9543868035494 76.10469099888832 L 10 76.10469099888832 Q 0 76.10469099888832 0 66.10469099888832 L 0 10 Q 0 0 10 0 Z" stroke-miterlimit="10" stroke-width="2" opacity="0.5"/></g></g></g></g></g><g transform="matrix(1,0,0,1,336,293)"><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="72" height="31" fill-opacity="0"/></g></g><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="72" height="16" fill-opacity="0"/></g></g><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="6" y="0" width="61" height="16" fill-opacity="0"/></g></g><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="6" y="0" width="61" height="16" fill-opacity="0"/></g><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="6" y="12">my</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="24" y="12">-</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="29" y="12">web</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="54" y="12">.</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="59" y="12">2</text></g><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="16" width="72" height="16" fill-opacity="0"/></g></g><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="11" y="16" width="52" height="16" fill-opacity="0"/></g></g><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="11" y="16" width="52" height="16" fill-opacity="0"/></g><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="11" y="28">10</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="27" y="28">.</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="30" y="28">0</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="38" y="28">.</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="42" y="28">9</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="50" y="28">.</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="53" y="28">4</text></g></g><g transform="translate(0,0) matrix(1,0,0,1,29.852953890121896,269.13194106831963)"><g><g transform="translate(0,0) scale(0.9095438680354939,0.7610469099888831)"><g><path fill="none" stroke="none" d="M 10 0 L 90 0 Q 100 0 100 10 L 100 90 Q 100 100 90 100 L 10 100 Q 0 100 0 90 L 0 10 Q 0 0 10 0 Z"/><g transform="scale(1.099452192624728,1.313979449722235)"><path fill="#ffc400" stroke="none" d="M 10 0 L 80.9543868035494 0 Q 90.9543868035494 0 90.9543868035494 10 L 90.9543868035494 66.10469099888832 Q 90.9543868035494 76.10469099888832 80.9543868035494 76.10469099888832 L 10 76.10469099888832 Q 0 76.10469099888832 0 66.10469099888832 L 0 10 Q 0 0 10 0 Z" opacity="0.5"/><path fill="none" stroke="#ffc400" d="M 10 0 M 10 0 L 80.9543868035494 0 Q 90.9543868035494 0 90.9543868035494 10 L 90.9543868035494 66.10469099888832 Q 90.9543868035494 76.10469099888832 80.9543868035494 76.10469099888832 L 10 76.10469099888832 Q 0 76.10469099888832 0 66.10469099888832 L 0 10 Q 0 0 10 0 Z" stroke-miterlimit="10" stroke-width="2" opacity="0.5"/></g></g></g></g></g><g transform="matrix(1,0,0,1,40,292)"><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="72" height="31" fill-opacity="0"/></g></g><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="72" height="16" fill-opacity="0"/></g></g><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="6" y="0" width="61" height="16" fill-opacity="0"/></g></g><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="6" y="0" width="61" height="16" fill-opacity="0"/></g><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="6" y="12">my</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="24" y="12">-</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="29" y="12">web</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="54" y="12">.</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="59" y="12">1</text></g><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="16" width="72" height="16" fill-opacity="0"/></g></g><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="11" y="16" width="52" height="16" fill-opacity="0"/></g></g><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="11" y="16" width="52" height="16" fill-opacity="0"/></g><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="11" y="28">10</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="27" y="28">.</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="30" y="28">0</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="38" y="28">.</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="42" y="28">9</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="50" y="28">.</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="53" y="28">3</text></g></g><g transform="translate(0,0) matrix(1,0,0,1,625.6969980521498,270.3694165382551)"><g><g transform="translate(0,0) scale(0.9095438680354939,0.7610469099888831)"><g><path fill="none" stroke="none" d="M 10 0 L 90 0 Q 100 0 100 10 L 100 90 Q 100 100 90 100 L 10 100 Q 0 100 0 90 L 0 10 Q 0 0 10 0 Z"/><g transform="scale(1.099452192624728,1.313979449722235)"><path fill="#ffc400" stroke="none" d="M 10 0 L 80.9543868035494 0 Q 90.9543868035494 0 90.9543868035494 10 L 90.9543868035494 66.10469099888832 Q 90.9543868035494 76.10469099888832 80.9543868035494 76.10469099888832 L 10 76.10469099888832 Q 0 76.10469099888832 0 66.10469099888832 L 0 10 Q 0 0 10 0 Z" opacity="0.5"/><path fill="none" stroke="#ffc400" d="M 10 0 M 10 0 L 80.9543868035494 0 Q 90.9543868035494 0 90.9543868035494 10 L 90.9543868035494 66.10469099888832 Q 90.9543868035494 76.10469099888832 80.9543868035494 76.10469099888832 L 10 76.10469099888832 Q 0 76.10469099888832 0 66.10469099888832 L 0 10 Q 0 0 10 0 Z" stroke-miterlimit="10" stroke-width="2" opacity="0.5"/></g></g></g></g></g><g transform="matrix(1,0,0,1,636,293)"><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="72" height="31" fill-opacity="0"/></g></g><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="72" height="16" fill-opacity="0"/></g></g><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="6" y="0" width="61" height="16" fill-opacity="0"/></g></g><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="6" y="0" width="61" height="16" fill-opacity="0"/></g><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="6" y="12">my</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="24" y="12">-</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="29" y="12">web</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="54" y="12">.</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="59" y="12">3</text></g><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="16" width="72" height="16" fill-opacity="0"/></g></g><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="11" y="16" width="52" height="16" fill-opacity="0"/></g></g><g transform="translate(34,48) matrix(1,0,0,1,0,0) translate(-34,-48)"><g><rect fill="rgb(0,0,0)" stroke="none" x="11" y="16" width="52" height="16" fill-opacity="0"/></g><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="11" y="28">10</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="27" y="28">.</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="30" y="28">0</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="38" y="28">.</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="42" y="28">9</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="50" y="28">.</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="14px" font-style="normal" font-weight="normal" text-decoration="" line-height="16.5px" x="53" y="28">5</text></g></g><g transform="matrix(1,0,0,1,25.352953890121906,274.92248898178724)"><g transform="translate(0,0)"><g transform="translate(-48.41504532240131,-275.1139954723511) translate(23.062091432279406,0.19150649056388147) matrix(1,0,0,1,0,0)"><g><path fill="none" stroke="#254356" d="M 29.852953890121906 279.42248898178724 L 716.6513848556991 280.65996445172266" stroke-miterlimit="10" stroke-width="2"/></g></g></g></g><g transform="translate(0,0) matrix(1,0,0,1,30,520.4199493812985)"><g><g transform="translate(0,0) scale(0.9095438680354939,0.7610469099888831)"><g><path fill="none" stroke="none" d="M 10 0 L 90 0 Q 100 0 100 10 L 100 90 Q 100 100 90 100 L 10 100 Q 0 100 0 90 L 0 10 Q 0 0 10 0 Z"/><g transform="scale(1.099452192624728,1.313979449722235)"><path fill="#ffc400" stroke="none" d="M 10 0 L 80.9543868035494 0 Q 90.9543868035494 0 90.9543868035494 10 L 90.9543868035494 66.10469099888832 Q 90.9543868035494 76.10469099888832 80.9543868035494 76.10469099888832 L 10 76.10469099888832 Q 0 76.10469099888832 0 66.10469099888832 L 0 10 Q 0 0 10 0 Z" opacity="0.5"/><path fill="none" stroke="#ffc400" d="M 10 0 M 10 0 L 80.9543868035494 0 Q 90.9543868035494 0 90.9543868035494 10 L 90.9543868035494 66.10469099888832 Q 90.9543868035494 76.10469099888832 80.9543868035494 76.10469099888832 L 10 76.10469099888832 Q 0 76.10469099888832 0 66.10469099888832 L 0 10 Q 0 0 10 0 Z" stroke-miterlimit="10" stroke-width="2" opacity="0.5"/></g></g></g></g></g><g transform="matrix(1,0,0,1,129,539)"><g transform="translate(160,60) matrix(1,0,0,1,0,0) translate(-160,-60)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="200" height="40" fill-opacity="0"/></g></g><g transform="translate(160,60) matrix(1,0,0,1,0,0) translate(-160,-60)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="200" height="20" fill-opacity="0"/></g></g><g transform="translate(160,60) matrix(1,0,0,1,0,0) translate(-160,-60)"><g><rect fill="rgb(0,0,0)" stroke="none" x="69" y="0" width="64" height="20" fill-opacity="0"/></g></g><g transform="translate(160,60) matrix(1,0,0,1,0,0) translate(-160,-60)"><g><rect fill="rgb(0,0,0)" stroke="none" x="69" y="0" width="64" height="20" fill-opacity="0"/></g><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="69" y="17">my</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="92" y="17">-</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="99" y="17">web</text></g><g transform="translate(160,60) matrix(1,0,0,1,0,0) translate(-160,-60)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="20" width="200" height="20" fill-opacity="0"/></g></g><g transform="translate(160,60) matrix(1,0,0,1,0,0) translate(-160,-60)"><g><rect fill="rgb(0,0,0)" stroke="none" x="11" y="20" width="180" height="20" fill-opacity="0"/></g></g><g transform="translate(160,60) matrix(1,0,0,1,0,0) translate(-160,-60)"><g><rect fill="rgb(0,0,0)" stroke="none" x="11" y="20" width="180" height="20" fill-opacity="0"/></g><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="11" y="37">3</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="26" y="37">replica</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="84" y="37">nginx</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="132" y="37">service</text></g></g><g transform="matrix(1,0,0,1,70.3301472918966,224.20369466145834)"><g transform="translate(0,0)"><g transform="translate(-79.99998474121094,-257.15277099609375) translate(9.669837449314343,32.94907633463541) matrix(1,0,0,1,0,0)"><g><path fill="none" stroke="#254356" d="M 75.3301472918966 269.13194106831963 M 75.3301472918966 269.13194106831963 L 78.30449045482098 268.7404276596541 M 78.30449045482098 268.7404276596541 M 81.27883361774536 268.3489142509885 L 84.25317678066975 267.95740084232295 M 84.25317678066975 267.95740084232295 M 87.22751994359413 267.5658874336574 L 90.20186310651852 267.17437402499183 M 90.20186310651852 267.17437402499183 M 93.1762062694429 266.7828606163263 L 96.15054943236728 266.3913472076607 M 96.15054943236728 266.3913472076607 M 99.12489259529167 265.99983379899516 L 102.09923575821605 265.6083203903296 M 102.09923575821605 265.6083203903296 M 105.07357892114044 265.21680698166404 L 108.04792208406482 264.8252935729985 M 108.04792208406482 264.8252935729985 M 111.0222652469892 264.4337801643329 L 113.99660840991359 264.04226675566736 M 113.99660840991359 264.04226675566736 M 116.97095157283798 263.6507533470018 L 119.94529473576236 263.25923993833624 M 119.94529473576236 263.25923993833624 M 122.91963789868674 262.8677265296707 L 125.89398106161113 262.4762131210051 M 125.89398106161113 262.4762131210051 M 128.8683242245355 262.08469971233956 L 131.8426673874599 261.693186303674 M 131.8426673874599 261.693186303674 M 134.81701055038428 261.30167289500844 L 137.79135371330867 260.9101594863429 M 137.79135371330867 260.9101594863429 M 140.76569687623305 260.5186460776773 L 143.74004003915744 260.12713266901176 M 143.74004003915744 260.12713266901176 M 146.71438320208182 259.7356192603462 L 149.6887263650062 259.34410585168064 M 149.6887263650062 259.34410585168064 M 152.6630695279306 258.9525924430151 L 155.63741269085497 258.5610790343495 M 155.63741269085497 258.5610790343495 M 158.61175585377936 258.16956562568396 L 161.58609901670374 257.7780522170184 M 161.58609901670374 257.7780522170184 M 164.56044217962813 257.38653880835284 L 167.5347853425525 256.9950253996873 M 167.5347853425525 256.9950253996873 M 170.5091285054769 256.6035119910217 L 173.48347166840128 256.2119985823561 M 173.48347166840128 256.2119985823561 M 176.45781483132566 255.8204851736905 L 179.43215799425005 255.42897176502493 M 179.43215799425005 255.42897176502493 M 182.40650115717443 255.03745835635934 L 185.38084432009882 254.64594494769375 M 185.38084432009882 254.64594494769375 M 188.3551874830232 254.25443153902816 L 191.32953064594759 253.86291813036257 M 191.32953064594759 253.86291813036257 M 194.30387380887197 253.47140472169698 L 197.27821697179635 253.0798913130314 M 197.27821697179635 253.0798913130314 M 200.25256013472074 252.6883779043658 L 203.22690329764512 252.29686449570022 M 203.22690329764512 252.29686449570022 M 206.2012464605695 251.90535108703463 L 209.1755896234939 251.51383767836904 M 209.1755896234939 251.51383767836904 M 212.14993278641828 251.12232426970346 L 215.12427594934266 250.73081086103787 M 215.12427594934266 250.73081086103787 M 218.09861911226704 250.33929745237228 L 221.07296227519143 249.9477840437067 M 221.07296227519143 249.9477840437067 M 224.0473054381158 249.5562706350411 L 227.0216486010402 249.1647572263755 M 227.0216486010402 249.1647572263755 M 229.99599176396458 248.77324381770993 L 232.97033492688897 248.38173040904434 M 232.97033492688897 248.38173040904434 M 235.94467808981335 247.99021700037875 L 238.91902125273774 247.59870359171316 M 238.91902125273774 247.59870359171316 M 241.89336441566212 247.20719018304757 L 244.8677075785865 246.81567677438198 M 244.8677075785865 246.81567677438198 M 247.8420507415109 246.4241633657164 L 250.81639390443527 246.0326499570508 M 250.81639390443527 246.0326499570508 M 253.79073706735966 245.64113654838522 L 256.76508023028407 245.24962313971963 M 256.76508023028407 245.24962313971963 M 259.7394233932085 244.85810973105404 L 262.7137665561329 244.46659632238845 M 262.7137665561329 244.46659632238845 M 265.6881097190573 244.07508291372287 L 268.6624528819817 243.68356950505728 M 268.6624528819817 243.68356950505728 M 271.63679604490613 243.2920560963917 L 274.61113920783055 242.9005426877261 M 274.61113920783055 242.9005426877261 M 277.58548237075496 242.5090292790605 L 280.5598255336794 242.11751587039493 M 280.5598255336794 242.11751587039493 M 283.5341686966038 241.72600246172934 L 286.5085118595282 241.33448905306375 M 286.5085118595282 241.33448905306375 M 289.4828550224526 240.94297564439816 L 292.457198185377 240.55146223573257 M 292.457198185377 240.55146223573257 M 295.43154134830144 240.15994882706698 L 298.40588451122585 239.7684354184014 M 298.40588451122585 239.7684354184014 M 301.38022767415026 239.3769220097358 L 304.3545708370747 238.98540860107022 M 304.3545708370747 238.98540860107022 M 307.3289139999991 238.59389519240463 L 310.3032571629235 238.20238178373904 M 310.3032571629235 238.20238178373904 M 313.2776003258479 237.81086837507345 L 316.2519434887723 237.41935496640787 M 316.2519434887723 237.41935496640787 M 319.22628665169674 237.02784155774228 L 322.20062981462115 236.6363281490767 M 322.20062981462115 236.6363281490767 M 325.17497297754556 236.2448147404111 L 328.14931614047 235.8533013317455 M 328.14931614047 235.8533013317455 M 331.1236593033944 235.46178792307992 L 334.0980024663188 235.07027451441434 M 334.0980024663188 235.07027451441434 M 337.0723456292432 234.67876110574875 L 340.04668879216763 234.28724769708316 M 340.04668879216763 234.28724769708316 M 343.02103195509204 233.89573428841757 L 345.99537511801645 233.50422087975198 M 345.99537511801645 233.50422087975198 M 348.96971828094087 233.1127074710864 L 351.9440614438653 232.7211940624208 M 351.9440614438653 232.7211940624208 M 354.9184046067897 232.32968065375522 L 357.8927477697141 231.93816724508963 M 357.8927477697141 231.93816724508963 M 360.8670909326385 231.54665383642404 L 363.84143409556293 231.15514042775845 M 363.84143409556293 231.15514042775845 M 366.81577725848734 230.76362701909284 L 369.79012042141176 230.37211361042722 M 369.79012042141176 230.37211361042722 M 372.76446358433617 229.98060020176163 L 375.7388067472606 229.58908679309602 M 375.7388067472606 229.58908679309602" stroke-miterlimit="10" stroke-width="3"/></g></g></g></g><g transform="matrix(1,0,0,1,369.99998474121094,224.15277099609375)"><g transform="translate(0,0)"><g transform="translate(-407.99998474121094,-243.15277099609375) translate(38,19) matrix(1,0,0,1,0,0)"><g><path fill="none" stroke="#254356" d="M 374.99998474121094 229.15277099609375 M 374.99998474121094 229.15277099609375 L 377.97135025984255 229.56627668491436 M 377.97135025984255 229.56627668491436 M 380.94271577847417 229.97978237373496 L 383.9140812971058 230.39328806255557 M 383.9140812971058 230.39328806255557 M 386.8854468157374 230.80679375137618 L 389.856812334369 231.22029944019678 M 389.856812334369 231.22029944019678 M 392.8281778530006 231.6338051290174 L 395.79954337163224 232.047310817838 M 395.79954337163224 232.047310817838 M 398.77090889026385 232.4608165066586 L 401.74227440889547 232.8743221954792 M 401.74227440889547 232.8743221954792 M 404.7136399275271 233.28782788429982 L 407.6850054461587 233.70133357312042 M 407.6850054461587 233.70133357312042 M 410.6563709647903 234.11483926194103 L 413.6277364834219 234.52834495076164 M 413.6277364834219 234.52834495076164 M 416.59910200205354 234.94185063958224 L 419.57046752068516 235.35535632840285 M 419.57046752068516 235.35535632840285 M 422.54183303931677 235.76886201722346 L 425.5131985579484 236.18236770604406 M 425.5131985579484 236.18236770604406 M 428.48456407658 236.59587339486467 L 431.4559295952116 237.00937908368527 M 431.4559295952116 237.00937908368527 M 434.42729511384323 237.42288477250588 L 437.39866063247484 237.8363904613265 M 437.39866063247484 237.8363904613265 M 440.37002615110646 238.2498961501471 L 443.3413916697381 238.6634018389677 M 443.3413916697381 238.6634018389677 M 446.3127571883697 239.0769075277883 L 449.2841227070013 239.4904132166089 M 449.2841227070013 239.4904132166089 M 452.2554882256329 239.90391890542952 L 455.22685374426453 240.31742459425013 M 455.22685374426453 240.31742459425013 M 458.19821926289615 240.73093028307073 L 461.16958478152776 241.14443597189134 M 461.16958478152776 241.14443597189134 M 464.1409503001594 241.55794166071195 L 467.112315818791 241.97144734953255 M 467.112315818791 241.97144734953255 M 470.0836813374226 242.38495303835316 L 473.0550468560542 242.79845872717377 M 473.0550468560542 242.79845872717377 M 476.02641237468583 243.21196441599437 L 478.99777789331745 243.62547010481498 M 478.99777789331745 243.62547010481498 M 481.96914341194906 244.0389757936356 L 484.9405089305807 244.4524814824562 M 484.9405089305807 244.4524814824562 M 487.9118744492123 244.86598717127683 L 490.8832399678439 245.27949286009743 M 490.8832399678439 245.27949286009743 M 493.8546054864755 245.69299854891807 L 496.82597100510714 246.10650423773868 M 496.82597100510714 246.10650423773868 M 499.79733652373875 246.52000992655928 L 502.76870204237036 246.93351561537992 M 502.76870204237036 246.93351561537992 M 505.740067561002 247.34702130420055 L 508.7114330796336 247.76052699302116 M 508.7114330796336 247.76052699302116 M 511.6827985982652 248.17403268184177 L 514.6541641168968 248.5875383706624 M 514.6541641168968 248.5875383706624 M 517.6255296355284 249.001044059483 L 520.59689515416 249.41454974830364 M 520.59689515416 249.41454974830364 M 523.5682606727917 249.82805543712425 L 526.5396261914233 250.24156112594488 M 526.5396261914233 250.24156112594488 M 529.5109917100549 250.6550668147655 L 532.4823572286865 251.0685725035861 M 532.4823572286865 251.0685725035861 M 535.4537227473181 251.48207819240673 L 538.4250882659497 251.89558388122734 M 538.4250882659497 251.89558388122734 M 541.3964537845814 252.30908957004797 L 544.367819303213 252.72259525886858 M 544.367819303213 252.72259525886858 M 547.3391848218446 253.13610094768921 L 550.3105503404762 253.54960663650982 M 550.3105503404762 253.54960663650982 M 553.2819158591078 253.96311232533046 L 556.2532813777394 254.37661801415106 M 556.2532813777394 254.37661801415106 M 559.224646896371 254.7901237029717 L 562.1960124150027 255.2036293917923 M 562.1960124150027 255.2036293917923 M 565.1673779336343 255.6171350806129 L 568.1387434522659 256.03064076943355 M 568.1387434522659 256.03064076943355 M 571.1101089708975 256.4441464582542 L 574.0814744895291 256.8576521470748 M 574.0814744895291 256.8576521470748 M 577.0528400081607 257.27115783589545 L 580.0242055267923 257.6846635247161 M 580.0242055267923 257.6846635247161 M 582.995571045424 258.0981692135367 L 585.9669365640556 258.51167490235736 M 585.9669365640556 258.51167490235736 M 588.9383020826872 258.925180591178 L 591.9096676013188 259.3386862799986 M 591.9096676013188 259.3386862799986 M 594.8810331199504 259.75219196881926 L 597.852398638582 260.1656976576399 M 597.852398638582 260.1656976576399 M 600.8237641572136 260.57920334646053 L 603.7951296758453 260.99270903528117 M 603.7951296758453 260.99270903528117 M 606.7664951944769 261.4062147241018 L 609.7378607131085 261.81972041292244 M 609.7378607131085 261.81972041292244 M 612.7092262317401 262.23322610174307 L 615.6805917503717 262.6467317905637 M 615.6805917503717 262.6467317905637 M 618.6519572690033 263.06023747938434 L 621.623322787635 263.4737431682049 M 621.623322787635 263.4737431682049 M 624.5946883062666 263.88724885702555 L 627.5660538248982 264.30075454584613 M 627.5660538248982 264.30075454584613 M 630.5374193435298 264.71426023466677 L 633.5087848621614 265.12776592348735 M 633.5087848621614 265.12776592348735 M 636.480150380793 265.541271612308 L 639.4515158994246 265.95477730112856 M 639.4515158994246 265.95477730112856 M 642.4228814180562 266.3682829899492 L 645.3942469366879 266.7817886787698 M 645.3942469366879 266.7817886787698 M 648.3656124553195 267.19529436759035 L 651.3369779739511 267.608800056411 M 651.3369779739511 267.608800056411 M 654.3083434925827 268.02230574523156 L 657.2797090112143 268.4358114340522 M 657.2797090112143 268.4358114340522 M 660.2510745298459 268.8493171228728 L 663.2224400484776 269.2628228116934 M 663.2224400484776 269.2628228116934 M 666.1938055671092 269.676328500514 L 669.1651710857408 270.0898341893346 M 669.1651710857408 270.0898341893346" stroke-miterlimit="10" stroke-width="3"/></g></g></g></g><g transform="matrix(1,0,0,1,373.66664632161456,222.7879785817978)"><g transform="translate(0,0)"><g transform="translate(-107.99998474121094,-177.1527709960937) translate(-265.6666615804036,-45.63520758570411) matrix(1,0,0,1,0,0)"><g><path fill="none" stroke="#254356" d="M 378.66664632161456 270 M 378.66664632161456 270 L 378.66664632161456 267 M 378.66664632161456 267 M 378.66664632161456 264 L 378.66664632161456 261 M 378.66664632161456 261 M 378.66664632161456 258 L 378.66664632161456 255 M 378.66664632161456 255 M 378.66664632161456 252 L 378.66664632161456 249 M 378.66664632161456 249 M 378.66664632161456 246 L 378.66664632161456 243 M 378.66664632161456 243 M 378.66664632161456 240 L 378.66664632161456 237 M 378.66664632161456 237 M 378.66664632161456 234 L 378.66664632161456 231 M 378.66664632161456 231 M 378.66664632161456 228 L 378.66664632161456 227.7879785817978" stroke-miterlimit="10" stroke-width="3"/></g></g></g></g><g transform="matrix(1,0,0,1,253,184)"><g transform="translate(386,60) matrix(1,0,0,1,0,0) translate(-386,-60)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="272" height="40" fill-opacity="0"/></g></g><g transform="translate(386,60) matrix(1,0,0,1,0,0) translate(-386,-60)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="272" height="20" fill-opacity="0"/></g></g><g transform="translate(386,60) matrix(1,0,0,1,0,0) translate(-386,-60)"><g><rect fill="rgb(0,0,0)" stroke="none" x="104" y="0" width="64" height="20" fill-opacity="0"/></g></g><g transform="translate(386,60) matrix(1,0,0,1,0,0) translate(-386,-60)"><g><rect fill="rgb(0,0,0)" stroke="none" x="104" y="0" width="64" height="20" fill-opacity="0"/></g><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="104" y="17">my</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="129" y="17">-</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="134" y="17">web</text></g><g transform="translate(386,60) matrix(1,0,0,1,0,0) translate(-386,-60)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="20" width="272" height="20" fill-opacity="0"/></g></g><g transform="translate(386,60) matrix(1,0,0,1,0,0) translate(-386,-60)"><g><rect fill="rgb(0,0,0)" stroke="none" x="89" y="20" width="96" height="20" fill-opacity="0"/></g></g><g transform="translate(386,60) matrix(1,0,0,1,0,0) translate(-386,-60)"><g><rect fill="rgb(0,0,0)" stroke="none" x="89" y="20" width="96" height="20" fill-opacity="0"/></g><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="89" y="37">VIP</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="118" y="37">:</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="128" y="37">1</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="138" y="37">.</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="143" y="37">0</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="153" y="37">.</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="158" y="37">9</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="168" y="37">.</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="173" y="37">2</text></g></g><g transform="matrix(1,0,0,1,103,287)"><g transform="translate(118,0) matrix(1,0,0,1,0,0) translate(-118,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="210" height="20" fill-opacity="0"/></g></g><g transform="translate(118,0) matrix(1,0,0,1,0,0) translate(-118,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="210" height="20" fill-opacity="0"/></g></g><g transform="translate(118,0) matrix(1,0,0,1,0,0) translate(-118,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="59" y="0" width="94" height="20" fill-opacity="0"/></g></g><g transform="translate(118,0) matrix(1,0,0,1,0,0) translate(-118,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="59" y="0" width="94" height="20" fill-opacity="0"/></g><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="59" y="17">my</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="82" y="17">-</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="89" y="17">network</text></g></g><g transform="matrix(1,0,0,1,400,286)"><g transform="translate(118,0) matrix(1,0,0,1,0,0) translate(-118,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="210" height="20" fill-opacity="0"/></g></g><g transform="translate(118,0) matrix(1,0,0,1,0,0) translate(-118,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="210" height="20" fill-opacity="0"/></g></g><g transform="translate(118,0) matrix(1,0,0,1,0,0) translate(-118,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="59" y="0" width="94" height="20" fill-opacity="0"/></g></g><g transform="translate(118,0) matrix(1,0,0,1,0,0) translate(-118,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="59" y="0" width="94" height="20" fill-opacity="0"/></g><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="59" y="17">my</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="82" y="17">-</text><text fill="rgb(37, 67, 86)" stroke="none" font-family="Arial" font-size="18px" font-style="normal" font-weight="normal" text-decoration="" line-height="20.5px" x="89" y="17">network</text></g></g></g></svg>

This comment has been minimized.

@mavenugo

mavenugo Aug 12, 2016

Contributor

VIP in the picture above is pointing to 1.0.9.2, it should be 10.0.9.2


# Attach services to an overlay network

Docker Engine swarm mode provides networking features to help you attach services to a user-defined network:

This comment has been minimized.

@mavenugo

mavenugo Aug 12, 2016

Contributor

Please remove this sentence. Currently swarm-mode doesnt support user-defined networks using any other driver other than overlay driver.

* You can configure the service to use DNS round-robin instead of a VIP.

In order to use overlay networks in the swarm, you need to have the following
ports open before you create the overlay network:

This comment has been minimized.

@mavenugo

mavenugo Aug 12, 2016

Contributor

Pls change the above to
ports open between the swarm nodes before you enable swarm-mode.

Thats because ingress network is created by default.

you don't specify a subnet, the swarm manager automatically chooses a subnet and
assigns it to the network. On some older kernels, including kernel 3.10,
automatically assigned adresses may overlap with another subnet in your
infrastructure. Such orverlaps can cause connectivity issues or failures with containers connected to the network.

This comment has been minimized.

@mavenugo

mavenugo Aug 12, 2016

Contributor

type on orverlaps

The `swarm` scope indicates that the network is available for use with services
deployed to the swarm. After you create a service attached to the network, the
swarm only extends the network to nodes where the scheduler places tasks for the
service. On nodes without tasks running for a service attached to the network,

This comment has been minimized.

@mavenugo

mavenugo Aug 12, 2016

Contributor

this is true only for worker nodes. Can you pls make that explicit ?

>**Note:** the examples here use `nslookup`, but you can use `dig` or any
available DNS query tool.
5. From inside the busybox container, query the DNS to find the IP addresses of all the containers for the `my-web`

This comment has been minimized.

@mavenugo

mavenugo Aug 12, 2016

Contributor

just mention that query the DNS using a special query tasks.<service-name>

```

6. From inside the busybox container, run `wget` to access the nginx web server
running in the `my-web` service:

This comment has been minimized.

@mavenugo

mavenugo Aug 12, 2016

Contributor

Should we add a note here that ping is not expected to work with VIP ?

containers using [Linux IPVS load balancing](http://www.linuxvirtualserver.org/software/ipvs.html).
IPVS load balancing works only for TCP/UDP protocols. You can use ping to
access the service because the swarm adds the service VIP as second IP address
on the overlay network interface.

This comment has been minimized.

@mavenugo

mavenugo Aug 12, 2016

Contributor

We have a few issues here. Pls check with @mrjana on this point. But i think it is safe to just mention that ping is not a reliable way to confirm the VIP connectivity.

add overlay networking guide
Signed-off-by: Charles Smith <charles.smith@docker.com>

@sfsmithcha sfsmithcha force-pushed the sfsmithcha:add_networking_guide branch from 190c1aa to e56dd0e Aug 12, 2016

@sfsmithcha

This comment has been minimized.

Copy link
Contributor Author

sfsmithcha commented Aug 12, 2016

CI error refers to a link that has already been corrected in CS docs

@sfsmithcha sfsmithcha merged commit 84ef31a into moby:master Aug 12, 2016

1 of 2 checks passed

documentation fail
Details
docker/dco-signed All commits signed
Details

@sfsmithcha sfsmithcha deleted the sfsmithcha:add_networking_guide branch Aug 12, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment