Consul — это инструмент на основе Hashicorp для поиска и настройки различных сервисов в вашей инфраструктуре. Он основан и построен на Голанге. Одной из основных причин создания Consul была поддержка сервисов, присутствующих в распределенных системах. Некоторые важные функции, которые предоставляет Консул, заключаются в следующем.
-
Обнаружение служб — используя DNS или HTTP, приложения могут легко найти службы, от которых зависят.
-
Состояние проверки работоспособности — может предоставить любое количество проверок работоспособности. Он используется компонентами обнаружения служб для маршрутизации трафика от нездоровых хостов.
-
Хранилище ключей / значений — может использовать иерархическое хранилище ключей / значений Consul для любого числа целей, включая динамическую настройку, маркировку функций, координацию, выбор лидера и т. Д.
-
Развертывание нескольких центров обработки данных — Консул поддерживает несколько центров обработки данных. Он используется для создания дополнительных слоев абстракции для расширения до нескольких регионов.
-
Веб-интерфейс — Консул предоставляет своим пользователям прекрасный веб-интерфейс, с помощью которого можно легко использовать и управлять всеми функциями в консуле.
Обнаружение служб — используя DNS или HTTP, приложения могут легко найти службы, от которых зависят.
Состояние проверки работоспособности — может предоставить любое количество проверок работоспособности. Он используется компонентами обнаружения служб для маршрутизации трафика от нездоровых хостов.
Хранилище ключей / значений — может использовать иерархическое хранилище ключей / значений Consul для любого числа целей, включая динамическую настройку, маркировку функций, координацию, выбор лидера и т. Д.
Развертывание нескольких центров обработки данных — Консул поддерживает несколько центров обработки данных. Он используется для создания дополнительных слоев абстракции для расширения до нескольких регионов.
Веб-интерфейс — Консул предоставляет своим пользователям прекрасный веб-интерфейс, с помощью которого можно легко использовать и управлять всеми функциями в консуле.
Сервис Discovery
Обнаружение услуг — одна из важнейших функций Консула. Он определяется как обнаружение различных служб и сетевых протоколов, с помощью которых обнаруживается услуга. Использование службы обнаружения является благом для распределенных систем. Это одна из основных проблем, с которыми сталкиваются современные крупные отрасли промышленности с развитием распределенных систем в своей среде.
Сравнение с Etcd и Zookeeper
Когда мы рассмотрим другие инструменты обнаружения служб в этой области, у нас есть два популярных варианта. Некоторые крупные игроки в индустрии программного обеспечения использовали его в прошлом. Это инструменты Etcd и Zookeeper .
Давайте рассмотрим следующую таблицу для сравнения различных аспектов каждого инструмента. Мы также поймем, что каждый из них использует внутри.
свойства | консул | Etcd | Работник зоопарка |
---|---|---|---|
Пользовательский интерфейс | Имеется в наличии | ||
RPC | Имеется в наличии | Имеется в наличии | |
Проверка здоровья | HTTP API | HTTP API | TCP |
Значение ключа | 3 режима согласованности | Хорошая последовательность | Сильная последовательность |
Система токенов | Имеется в наличии | ||
язык | Golang | Golang | Джава |
Консул — Члены и Агенты
Члены консула могут быть определены как список различных агентов и режимов сервера, в которых развернут кластер консула. Консул предоставляет нам функцию командной строки, с помощью которой мы можем легко перечислить всех агентов, связанных с консулом.
Консул агент является основным процессом Консул. Агент хранит информацию о членстве, регистрирует службы, запускает проверки, отвечает на запросы и т. Д. Любой агент может работать в одном из двух режимов: клиент или сервер . Эти два режима могут использоваться в соответствии с их ролью, определенной при использовании консула. Консул помогает, предоставляя нам информацию, которая указана ниже.
-
Имя узла — это имя хоста машины.
-
Центр обработки данных. Центр обработки данных, в котором настроен агент. Каждый узел должен быть настроен для отправки отчетов в свой центр обработки данных.
-
Сервер — указывает, работает ли агент в режиме сервера или клиента. Узлы сервера участвуют в согласованном кворуме, сохраняя состояние кластера и обрабатывая запросы.
-
Client Addr — это адрес, используемый агентом для клиентских интерфейсов. Он включает в себя порты для интерфейсов HTTP, DNS и RPC.
-
Cluster Addr — это адрес и набор портов, используемых для связи между агентами Consul в кластере. Этот адрес должен быть доступен всем остальным узлам.
Имя узла — это имя хоста машины.
Центр обработки данных. Центр обработки данных, в котором настроен агент. Каждый узел должен быть настроен для отправки отчетов в свой центр обработки данных.
Сервер — указывает, работает ли агент в режиме сервера или клиента. Узлы сервера участвуют в согласованном кворуме, сохраняя состояние кластера и обрабатывая запросы.
Client Addr — это адрес, используемый агентом для клиентских интерфейсов. Он включает в себя порты для интерфейсов HTTP, DNS и RPC.
Cluster Addr — это адрес и набор портов, используемых для связи между агентами Consul в кластере. Этот адрес должен быть доступен всем остальным узлам.
В следующей главе мы разберем архитектуру Консула.