В этой главе мы поймем, как работают микросервисы с Consul. Мы также узнаем, как следующие компоненты влияют на Консул.
- Использование докера
- Регистратор зданий для службы Discovery
- Использование rkt и Nomad
Давайте теперь обсудим каждый из них в деталях.
Использование Docker
Перед началом, пожалуйста, не используйте эту настройку в производстве, так как она используется только для демонстрационных целей. Docker — это сервис на основе контейнеров, с помощью которого мы можем легко развернуть наши приложения. Для использования Consul, мы будем использовать изображение по следующей ссылке –0
https://hub.docker.com/r/progrium/consul/ .
Предполагается, что в вашей системе установлен и правильно настроен Docker. Давайте попробуем вытащить образ из концентратора Docker, выполнив следующую команду —
$ docker pull progrium/consul
Вывод будет таким, как показано на следующем скриншоте.
Мы собираемся опубликовать некоторые интерфейсы с их портами (используя опцию -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
Вывод будет таким, как показано на следующем скриншоте.
$ 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 годах.
Что касается Консула, мы можем использовать Регистратор Rkt для работы над обнаружением услуг с Консулом. Этот конкретный проект регистратора, который распространяется на rkt, находится в стадии разработки и не рекомендуется для использования на производственном уровне .
Вы можете проверить, установлен ли rkt или нет, перейдя по его пути и выполнив следующую команду.
$ ./rkt
Вы можете проверить вывод, чтобы проверить, правильно ли он установлен или нет, как показано на следующем снимке экрана.
Для ознакомления с rkt и консулом, пожалуйста, проверьте — https://github.com/r3boot/rkt-registrator .
Кочевой инструмент
Одним из наиболее часто используемых и любимых вариантов является инструмент Nomad. Nomad — это инструмент для управления кластером машин и запуска приложений на них. Это похоже на Месос или Кубернетес . По умолчанию Nomad покрывает драйвер Docker и rkt внутри себя. Итак, если вы ищете масштабное развертывание контейнеров с помощью Consul. Кочевник может быть хорошим решением для этого. Проверьте — https://www.nomadproject.io/docs/drivers/rkt.html для получения дополнительной информации о Nomad.