Выполнение [домашнего задания](https://github.com/netology-code/virt-homeworks/blob/virt-11/05-virt-05-docker-swarm/README.md) 
по теме "5.5. Оркестрация кластером Docker контейнеров на примере Docker Swarm".

## Q/A

### Задача 1

> Дайте письменные ответы на следующие вопросы:

> - В чём отличие режимов работы сервисов в Docker Swarm кластере: replication и global?

В режиме `replication` для сервиса указывается количество реплик, которые необходимо запустить.
И именно такое количество копий сервиса будет запущено, не зависимо от количества нод в кластере.
    
В режиме `global` указанный сервис будет запущен на каждой ноде кластера. При этом невозможно указать конкретное количество реплик.

> - Какой алгоритм выбора лидера используется в Docker Swarm кластере?

Для выбора лидера docker swarm использует алгоритм поддержания распределенного консенсуса — [`Raft`](https://raft.github.io/).

Верхне-уровневый принцип работы `Raft` (основано на [примере](http://thesecretlivesofdata.com/raft/)):

- Каждая нода может находиться в одном из 3-х состояний: `Follower`, `Candidate`, `Leader`.
- В начале работы кластера все ноды находятся в состоянии `Follower`.
- Если нода в состоянии `Follower` не получает информации от `Leader`, то она переходит в состояние `Candidate`.
- После перехода в состояние `Candidate` нода запрашивает "голосование" от других нод кластера.
- Ноды отвечают на опрос кандидату, который инициировал голосование. Если данный кандидат получил большинство положительных ответов, то он переходит в состояние `Leader`.

> - Что такое Overlay Network?

`Overlay Network` - это особый тип docker-сети, который позволяет связать контейнеры, запущенные на разных нодах. 
То есть, данная сеть позволяет направить трафик на определённый контейнер на определённой ноде только по имени контейнера. 