Консул - Работа с микросервисами
В этой главе мы поймем, как микросервисы работают с 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.