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

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

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

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

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

До начала, please do not use this setup in productionпоскольку он используется только в демонстрационных целях. Docker - это контейнерная служба, с помощью которой мы можем легко развертывать наши приложения. Для использования Consul мы будем использовать изображение по следующей ссылке –0

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

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

$ docker pull progrium/consul

Результат будет таким, как показано на следующем снимке экрана.

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

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

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

$ 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. Следующий снимок экрана дает вам лучшее представление о выводе на основе пользовательского интерфейса.

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

На узле 1

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

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

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

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

На узле 2

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

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

На узле 3

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

Строительный регистратор для обнаружения сервисов

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

$ docker pull gliderlabs/registrator:latest

Результат будет таким, как показано на следующем снимке экрана.

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

Результат будет таким, как показано на следующем снимке экрана.

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

$ docker ps -a

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

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

$ docker logs registrator

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

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

Что касается Consul, мы можем использовать Rkt Registrator для работы над обнаружением сервисов с Consul. Этот конкретный проект регистратора, который распространяется на rkt, находится в стадии разработки иnot recommended for production level use.

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

$ ./rkt

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

Чтобы попробовать rkt и Consul, пожалуйста, посетите - https://github.com/r3boot/rkt-registrator.

Инструмент кочевника

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