Учебники

Консул — Работа с микросервисами

В этой главе мы поймем, как работают микросервисы с Consul. Мы также узнаем, как следующие компоненты влияют на Консул.

  • Использование докера
  • Регистратор зданий для службы Discovery
  • Использование rkt и Nomad

Давайте теперь обсудим каждый из них в деталях.

Использование Docker

Перед началом, пожалуйста, не используйте эту настройку в производстве, так как она используется только для демонстрационных целей. Docker — это сервис на основе контейнеров, с помощью которого мы можем легко развернуть наши приложения. Для использования Consul, мы будем использовать изображение по следующей ссылке –0

https://hub.docker.com/r/progrium/consul/ .

Предполагается, что в вашей системе установлен и правильно настроен Docker. Давайте попробуем вытащить образ из концентратора Docker, выполнив следующую команду —

$ docker pull progrium/consul

Вывод будет таким, как показано на следующем скриншоте.

Pull Progrium

Мы собираемся опубликовать некоторые интерфейсы с их портами (используя опцию -p в Docker) следующим образом.

  • 8400 (RPC)
  • 8500 (HTTP)
  • 8600 (DNS)

Также в соответствии с выполнением запроса мы собираемся установить имя хоста в качестве узла 1. Вы можете изменить его на что угодно, используя флаг -h с некоторым собственным именем хоста, как показано ниже.

$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap

Вывод будет таким, как показано на следующем скриншоте.

Вытащить Сделано

Вы также можете включить режим пользовательского интерфейса для Консула, используя —

$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap -ui-dir /ui

Вы можете проверить вывод на основе пользовательского интерфейса на http: // localhost: 8500 . Следующий снимок экрана дает вам лучшее представление о выводе на основе пользовательского интерфейса.

Основанный на интерфейсе

Чтобы использовать консул для разных контейнеров докеров на разных узлах, мы можем запустить следующие команды на разных узлах:

На Node1

$ docker run -d --name node1 -h node1 progrium/consul -server -bootstrap-expect 3

Где -bootstrap-Ожидайте 3 означает, что сервер консула будет ждать, пока не будут подключены 3 равноправных узла, прежде чем самозагрузиться и стать работающим кластером.

Прежде чем идти дальше, нам нужно узнать внутренний IP-адрес контейнера, проверив его. Для нашего случая, мы будем объявлять $ JOIN_IP .

$ JOIN_IP = "$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)"

На Node2

Итак, давайте запустим Node2 и скажем ему присоединиться к Node1, используя переменную, объявленную в программе, приведенной выше.

$docker run -d --name node2 -h node2 progrium/consul -server -join $JOIN_IP

На Node3

$ docker run -d --name node3 -h node3 progrium/consul -server -join $JOIN_IP

Регистратор зданий для службы Discovery

Регистратор автоматически регистрирует и отменяет регистрацию служб для любого контейнера Docker, проверяя контейнеры, когда они подключаются к сети. Регистратор, который мы собираемся использовать, в настоящее время поддерживает подключаемые сервисные реестры, в которые в настоящее время входят Consul, Etcd и SkyDNS2 . Использование Регистратора настоятельно рекомендуется, когда мы взаимодействуем с различными службами по сети.

$ docker pull gliderlabs/registrator:latest

Вывод будет таким, как показано на следующем скриншоте.

gliderlabs

$ docker run -d \
--name = registrator \
--net = host \
--volume = /var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator:latest \
 consul://localhost:8500

Вывод будет таким, как показано на следующем скриншоте.

gliderlabs

Вывод, который вы получили, — это идентификатор Docker-контейнера, который вы только что запустили. Вы можете проверить, работает ли контейнер, с помощью команды —

$ docker ps -a

вывод будет таким, как показано на следующем скриншоте.

докер PS

Вы также можете просмотреть журналы Регистратора, используя следующую команду.

$ docker logs registrator

Использование rkt и Nomad

Rkt — это еще один сервис на основе контейнеров, который вы можете использовать в своей среде. Он построен CoreOS . Основной причиной создания rkt было улучшение безопасности, что было одной из проблем кризиса для Docker, когда он еще находился в разработке в 2013-14 годах.

Что касается Консула, мы можем использовать Регистратор Rkt для работы над обнаружением услуг с Консулом. Этот конкретный проект регистратора, который распространяется на rkt, находится в стадии разработки и не рекомендуется для использования на производственном уровне .

Вы можете проверить, установлен ли rkt или нет, перейдя по его пути и выполнив следующую команду.

$ ./rkt

Вы можете проверить вывод, чтобы проверить, правильно ли он установлен или нет, как показано на следующем снимке экрана.

Rkt Registrator

Для ознакомления с rkt и консулом, пожалуйста, проверьте — https://github.com/r3boot/rkt-registrator .

Кочевой инструмент

Одним из наиболее часто используемых и любимых вариантов является инструмент Nomad. Nomad — это инструмент для управления кластером машин и запуска приложений на них. Это похоже на Месос или Кубернетес . По умолчанию Nomad покрывает драйвер Docker и rkt внутри себя. Итак, если вы ищете масштабное развертывание контейнеров с помощью Consul. Кочевник может быть хорошим решением для этого. Проверьте — https://www.nomadproject.io/docs/drivers/rkt.html для получения дополнительной информации о Nomad.