Учебники

Консул — Краткое руководство

Консул — Введение

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 в кластере. Этот адрес должен быть доступен всем остальным узлам.

В следующей главе мы разберем архитектуру Консула.

Консул — Архитектура

Диаграмму архитектуры для консула, работающего в одном центре обработки данных, лучше всего описать, как показано ниже:

Архитектура

Как мы видим, есть три разных сервера, которые управляются консулом. Рабочая архитектура работает с использованием алгоритма raft, который помогает нам выбрать лидера из трех разных серверов. Эти серверы затем маркируются в соответствии с тегами, такими как Follower и Leader . Как следует из названия, последователь несет ответственность за следование решениям лидера. Все эти три сервера дополнительно связаны друг с другом для любого общения.

Каждый сервер взаимодействует со своим клиентом, используя концепцию RPC. Общение между Клиентами возможно благодаря Протоколу Сплетни, как упомянуто ниже. Связь с Интернетом может быть доступна с использованием протокола TCP или сплетни. Это сообщение находится в прямом контакте с любым из трех серверов.

Алгоритм Рафта

Raft — это согласованный алгоритм для управления реплицированным журналом. Он основан на принципе теоремы CAP , который гласит, что при наличии сетевого раздела приходится выбирать между согласованностью и доступностью. Не все три основы теоремы CAP могут быть достигнуты в любой момент времени. Нужно обменять на любые два из них в лучшем случае.

Raft Cluster содержит несколько серверов, обычно с нечетным числом. Например, если у нас пять серверов, это позволит системе выдерживать два сбоя. В любой момент времени каждый сервер находится в одном из трех состояний: Лидер, Последователь или Кандидат . При нормальной работе есть ровно один лидер, а все остальные серверы являются последователями. Эти последователи находятся в пассивном состоянии, то есть они не подают никаких запросов самостоятельно, а просто отвечают на запросы лидеров и кандидата.

На следующем рисунке описана модель рабочего процесса, в которой работает алгоритм рафта.

Алгоритм Рафта

Ключевые данные ценности

Начиная с версии 0.7.1 Консула, были введены отдельные данные значения ключа. Команда KV используется для взаимодействия с хранилищем ключей консула через командную строку. Он предоставляет команды верхнего уровня для вставки, обновления, чтения и удаления из хранилища. Чтобы получить хранилище объектов Key / Value, мы вызываем метод KV, доступный для клиента консула —

kv := consul.KV()

Структура KVPair используется для представления одной записи ключа / значения. Мы можем просмотреть структуру Consul KV Pair в следующей программе.

type KVPair struct {
   Key string
   CreateIndex uint64
   ModifyIndex uint64
   LockIndex uint64
   Flags uint64
   Value []byte
   Session string
}

Здесь различные структуры, упомянутые в приведенном выше коде, могут быть определены следующим образом:

  • Ключ — это косая черта. Например — sites / 1 / domain.

  • CreateIndex — номер индекса, назначенный при первом создании ключа.

  • ModifyIndex — номер индекса, назначенный при последнем обновлении ключа.

  • LockIndex — индексный номер, созданный при получении новой блокировки для записи ключ / значение

  • Флаги — могут использоваться приложением для установки пользовательского значения.

  • Значение — это байтовый массив максимум 512 КБ.

  • Сеанс — это можно установить после создания объекта сеанса.

Ключ — это косая черта. Например — sites / 1 / domain.

CreateIndex — номер индекса, назначенный при первом создании ключа.

ModifyIndex — номер индекса, назначенный при последнем обновлении ключа.

LockIndex — индексный номер, созданный при получении новой блокировки для записи ключ / значение

Флаги — могут использоваться приложением для установки пользовательского значения.

Значение — это байтовый массив максимум 512 КБ.

Сеанс — это можно установить после создания объекта сеанса.

Типы протокола

В Консуле есть два типа протокола, которые называются —

  • Протокол о согласии и
  • Протокол сплетни

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

Консенсусный протокол

Консенсусный протокол используется Консулом для обеспечения согласованности, как описано в теореме CAP. Этот протокол основан на алгоритме Плот. При реализации согласованного протокола используется алгоритм Плот, в котором узлы плот всегда находятся в любом из трех состояний: «Подписчик», «Кандидат» или «Лидер».

Протокол сплетни

Протокол сплетен может быть использован для управления членством, отправки и получения сообщений по всему кластеру. В консуле использование протокола сплетен происходит двумя способами: WAN (беспроводная сеть) и LAN (локальная сеть). Существует три известные библиотеки, которые могут реализовать алгоритм Gossip для обнаружения узлов в одноранговой сети —

  • teknek-gossip — работает с UDP и написан на Java.

  • gossip-python — он использует стек TCP и позволяет обмениваться данными через построенную сеть.

  • Smudge — написано на Go и использует UDP для обмена информацией о статусе.

teknek-gossip — работает с UDP и написан на Java.

gossip-python — он использует стек TCP и позволяет обмениваться данными через построенную сеть.

Smudge — написано на Go и использует UDP для обмена информацией о статусе.

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

Удаленные вызовы процедур

RPC можно обозначить как краткую форму для удаленных вызовов процедур. Это протокол, который одна программа использует для запроса услуги у другой программы. Этот протокол может быть расположен на другом компьютере в сети без необходимости подтверждения деталей сети.

Настоящая прелесть использования RPC в Консуле заключается в том, что он помогает нам избежать проблем с задержкой, которые были у большинства инструментов службы обнаружения некоторое время назад. До RPC Консул имел обыкновение иметь только соединения на основе TCP и UDP , что было хорошо для большинства систем, но не в случае распределенных систем. RPC решает такие проблемы путем сокращения периода времени передачи пакетной информации из одного места в другое. В этой области GRPC от Google — это отличный инструмент, который можно рассчитывать на случай, если кто-то захочет соблюдать критерии и сравнить производительность.

Консул — Установка

В демонстрационных целях мы будем использовать консул агента в режиме разработчика, используя режим -dev. Просто для настройки локальной машины, мы собираемся выполнить настройку единого системного консула. Пожалуйста, не используйте этот консольный кластер в вашем производстве . Как уже упоминалось в Hashicorp в случае сценария с одним узлом консольного кластера, потеря данных неизбежна .

Установка Консул

Консул можно установить на странице загрузок по адресу www.consul.io/downloads.html.

Установка Консул

Вы можете извлечь двоичный пакет в разделе загрузок на вашем компьютере.

$ cd Downloads
$ chmod +x consul
$ sudo mv consul /usr/bin/

Теперь давайте начнем использовать консул, используя флаг -dev .

$ consul agent -dev -data-dir=/tmp/consul

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

Dev Flag

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

$ consul members

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

члены Ассоциации

Если вы хотите присоединить другие узлы к этому узлу —

$ consul join <Node 2> <Node 3>

Кроме того, вы можете выполнить следующую команду на узлах 2 и 3 —

$ consul join <Node 1>

Использование командной строки

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

  • агент — который управляет агентом консула.

  • configtest — для проверки файла конфигурации.

  • событие — запустить новое событие.

  • exec — выполнить команду на узлах Consul.

  • принудительный выход — вынуждает члена кластера покинуть кластер.

  • info — предоставляет нам отладочную информацию для операторов.

  • присоединиться — чтобы агент Консул присоединился к кластеру.

  • keygen — для генерации нового ключа шифрования.

  • keyring — для управления ключами шифрования сплетни.

  • kv — для взаимодействия с хранилищем ключ-значение.

  • уйти — покинуть консул кластера и закрыть его без силы.

  • lock — выполнить команду для удержания блокировки.

  • maint — для управления узлом или режимом обслуживания сервиса.

  • члены — это список членов кластера Консул.

  • монитор — это потоковые журналы от агента Консул.

  • оператор — он предоставляет нам набор инструментов для операторов Консул.

  • reload — запускает агент для перезагрузки файлов конфигурации.

  • RTT — оценивает время прохождения сети между узлами.

  • снимок — сохраняет, восстанавливает и проверяет снимки состояния сервера Consul.

  • версия — распечатать текущую версию Консула.

  • следить — следить за изменениями в консуле.

агент — который управляет агентом консула.

configtest — для проверки файла конфигурации.

событие — запустить новое событие.

exec — выполнить команду на узлах Consul.

принудительный выход — вынуждает члена кластера покинуть кластер.

info — предоставляет нам отладочную информацию для операторов.

присоединиться — чтобы агент Консул присоединился к кластеру.

keygen — для генерации нового ключа шифрования.

keyring — для управления ключами шифрования сплетни.

kv — для взаимодействия с хранилищем ключ-значение.

уйти — покинуть консул кластера и закрыть его без силы.

lock — выполнить команду для удержания блокировки.

maint — для управления узлом или режимом обслуживания сервиса.

члены — это список членов кластера Консул.

монитор — это потоковые журналы от агента Консул.

оператор — он предоставляет нам набор инструментов для операторов Консул.

reload — запускает агент для перезагрузки файлов конфигурации.

RTT — оценивает время прохождения сети между узлами.

снимок — сохраняет, восстанавливает и проверяет снимки состояния сервера Consul.

версия — распечатать текущую версию Консула.

следить — следить за изменениями в консуле.

Консул Шаблон

Консул-шаблон предоставляет нам демон, который запрашивает экземпляр Консула и обновляет любое количество указанных шаблонов в файловой системе. Консул-шаблон может при желании запускать произвольные команды после завершения процесса обновления. Эта опция помогает нам настроить консул кластера, не делая все вручную самостоятельно.

Шаблон консула должен быть сформирован в /tmp/<name-of-file>.conf.tmpfl . Язык, на котором написан шаблон в соответствии с Hashicorp Configuration Language (HCL).

Вы можете скачать шаблон консула с этой страницы .

шаблон

Попробуйте это с помощью следующей команды —

$ ./consul-template -h

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

Вывод шаблона

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

$ chmod +x consul-template
$ sudo mv consul-template /usr/share/bin/

В демонстрационных целях мы будем использовать пример конфигурации nginx, которая будет использоваться в качестве нашего сервиса. Вы можете попробовать больше демонстраций по адресу https://github.com/hashicorp/consul-template/tree/master/examples или лучше написать свой собственный шаблон.

$ vim /tmp/nginx.conf.ctmpl

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

Nginx

Файл конфигурации может выглядеть так:

{{range services}} {{$name := .Name}} {{$service := service .Name}}

upstream {{$name}} {
   zone upstream-{{$name}} 64k;
   {{range $service}}server {{.Address}}:{{.Port}} max_fails = 3 fail_timeout = 60
   weight = 1;
   {{else}}server 127.0.0.1:65535; # force a 502{{end}}
} {{end}}

server {
   listen 80 default_server;
   location / {
      root /usr/share/nginx/html/;
      index index.html;
   }
   location /stub_status {
      stub_status;
   }
   {{range services}} {{$name := .Name}}
   location /{{$name}} {
      proxy_pass http://{{$name}};
   }
   {{end}}
}

Теперь, используя двоичный файл шаблона консула, выполните следующие команды:

$ consul-template \
 -template = "/tmp/nginx.conf.ctmpl:/etc/nginx/conf.d/default.conf"

С предыдущей командой процесс начался. Позже вы можете открыть другой терминал и просмотреть файл nginx.conf, который полностью отображается с помощью следующей команды.

$ cat /etc/nginx/conf.d/default.conf

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

Выход

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

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

Консул — Самозагрузка и DNS

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

  • Автоматическая загрузка
  • Ручная начальная загрузка
  • Использование пересылки DNS
  • DNS-кеширование

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

Автоматическая начальная загрузка

Самозагрузка — одна из основных особенностей Консула. Когда вы устанавливаете консул впервые, он автоматически настраивается на обнаружение, идентификацию и соединение узлов, с которыми он сталкивается. Во время формирования кластера автоматическая начальная загрузка является встроенной функцией Consul. Чтобы получить больше информации о консуле, лучше всего использовать команду ниже —

$ sudo consul info

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

Автоматическая начальная загрузка

Эта команда покажет фактическую работу консула в реальных рабочих сценариях . Он отобразит алгоритм Рафта, работающий в Консуле. Команда автоматической загрузки может быть показана с помощью следующей команды —

$ consul agent -server -data-dir = ”/tmp/consul” -bootstrap-expect 3

Автоматическую загрузку нельзя выполнить в режиме -dev.

Эта опция информирует Consul об ожидаемом количестве узлов сервера и автоматически загружает серверы, когда серверы доступны.

Ручная начальная загрузка

Ручная начальная загрузка — старая и полезная функция Consul. На самом деле, в более ранней версии Consul начальная загрузка должна выполняться вручную при первоначальной установке и использовании consul. Позже стало понятно, что эту операцию командной строки невозможно выполнить в разное время. Следовательно, была введена автоматическая начальная загрузка. Вы всегда можете использовать загрузку вручную, используя следующие команды.

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

Есть два варианта ручной загрузки

  • Запуск команд на 2 узлах: на узле B и узле C вы можете сделать следующее:

Запуск команд на 2 узлах: на узле B и узле C вы можете сделать следующее:

$ consul join <Node A Address>
  • Запуск команды над 1 узлом —

Запуск команды над 1 узлом —

$ consul join <Node B Address> <Node C Address>

Использование пересылки DNS

DNS обслуживается с порта 53 . Переадресация DNS может быть выполнена с использованием BIND, dnsmasq и iptables . По умолчанию агент Consul запускает DNS-сервер, прослушивающий порт 8600. Отправляя запросы DNS на DNS-сервер агента Consul, вы можете получить IP-адрес узла, на котором работает интересующая вас служба.

DNS-интерфейс Consul делает информацию о порте для службы доступной через записи SRV . Без добавления логики в коде вы обычно ограничены только информацией об IP-адресе (то есть записи) запрашиваемой вами услуги.

Наилучшим вариантом является наличие нескольких серверов BIND, на каждом из которых агент Consul работает локально. Любые запросы, полученные сервером BIND, будут перенаправлены на его локальный DNS-сервер агента Consul.

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

Мы можем использовать пересылку DNS с помощью функции Bind. Это можно сделать с помощью следующей команды.

$ sudo apt-get install bind9 bind9utils bind9-doc

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

Функция привязки

Давайте отредактируем файл /etc/bind/named.conf с помощью следующей команды.

$ sudo vim /etc/bind/named.conf

В файле, пожалуйста, добавьте следующие строки ниже последней строки кода.

options {
   directory "/var/cache/bind";
   recursion yes;
   allow-query { localhost; };
   
   forwarders {
      8.8.8.8;
      8.8.4.4;
   };
   dnssec-enable no;
   dnssec-validation no;
   auth-nxdomain no; # conform to RFC1035
   listen-on-v6 { any; };
};
include "/etc/bind/consul.conf";

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

Команда Bind

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

$ sudo vim /etc/bind/consul.conf

Добавьте следующие строки при создании файла —

zone "consul" IN {
   type forward;
   forward only;
   forwarders { 127.0.0.1 port 8600; };
};

Теперь вы можете запустить свой консул-агент с помощью следующей команды. (Не забудьте также перезапустить службу bind9.)

$ sudo service bind9 restart
$ consul agent -server -bootstrap-expect 1 -data-dir = /tmp/consul -configdir = [Path]

Система должна быть настроена на отправку запросов на DNS-сервер локального агента Консула. Это делается путем обновления файла resolv.conf в системе, чтобы он указывал на 127.0.0.1. В большинстве случаев необходимо настроить Consul для работы через порт 53.

Вы можете добавить следующую информацию в /etc/resolv.conf:

nameserver 127.0.0.1

DNS-кеширование

Consul обслуживает все результаты DNS со значением «0 TTL» (время жизни). Это предотвращает любое кеширование. Однако из-за значений TTL его можно настроить так, чтобы результаты DNS кэшировались в нисходящем направлении от Consul. Более высокие значения TTL уменьшают количество запросов на серверы Consul и ускоряют поиск для клиентов за счет все более устаревших результатов.

Для этого мы будем использовать DNS-кеширование, используя метод ниже:

$ sudo apt-get install dnsmasq

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

Dnsmasq

Теперь мы можем сделать очень простую конфигурацию —

$ echo "server = /consul/127.0.0.1#8600" > /etc/dnsmasq.d/10-consul

Все, что мы здесь делаем, — это указание DNS-запросов на услуги консула, которые должны обрабатываться DNS-сервером 127.0.0.1 на порту 8600. Если вы не измените значения консула по умолчанию, это должно сработать.

В обычных случаях следует использовать следующую команду.

$ dig @127.0.0.1 -p 8600 web.service.consul

С Dnsmasq вы должны использовать следующую команду.

$ dig web.service.consul

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

веб-сервис

Консул — Запрос узлов

В этой главе мы узнаем, как запрашивать узлы с помощью следующих функций:

  • Используя копать
  • Использование команды Monitor
  • Использование команды Watch
  • Регистрация внешних служб

Давайте разберемся с каждой из этих функций в деталях.

Используя Dig

Консул прослушивает 127.0.0.1:8600 для DNS-запросов в консуле. То, как он определяет, какие узлы доступны для предоставления услуги, использует проверки, которые могут быть:

  • Сценарий, который выполняется и возвращает код, совместимый с nagios .

  • Проверка HTTP, которая возвращает код ответа HTTP.

  • Проверка TCP, которая проверяет, открыт ли порт.

Сценарий, который выполняется и возвращает код, совместимый с nagios .

Проверка HTTP, которая возвращает код ответа HTTP.

Проверка TCP, которая проверяет, открыт ли порт.

Общая команда для тестирования копать

$ dig @127.0.0.1 -p <port> <service-name>.consul

Теперь давайте попробуем пример команды dig

$ dig @127.0.0.1 -p 8600 web.service.consul

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

копать землю

Использование команды Monitor

Он используется для подключения и отображения журналов работающего агента Consul. Эта команда покажет последние журналы. Это также позволяет вам регистрировать агента на относительно высоком уровне регистрации. Он состоит из различных уровней журнала, которым вы можете следовать, таких как — Trace, Debug, Info, Warn и Err.

Давайте попробуем следующую команду —

$ consul monitor

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

Команда монитора

Вы также можете установить команду монитора, используя подкоманды, такие как -log-level и -rpc-address. По умолчанию адрес RPC — 127.0.0.1:8400. Для получения дополнительной информации, нажмите здесь .

Использование команды Watch

Эта команда предоставляет нам механизм для отслеживания изменений в списке узлов, членов службы, значения ключа и т. Д. Она также вызывает процесс с последними значениями представления. Если процесс не указан, текущие значения обрабатываются в STDOUT , что может быть полезным способом проверки данных в Консуле. Справка команды Consul Watch Command имеет множество различных параметров, как показано на следующем снимке экрана —

Смотреть Команда

Давайте попробуем демонстрацию с -type = service, как показано в следующей команде.

$ consul watch -type = service -service = consul

Тип часов

Для получения дополнительной информации по этой теме, вы можете нажать здесь .

Регистрация внешних служб

После регистрации интерфейс DNS сможет возвращать соответствующие записи «A» или «CNAME» для службы. Давайте зарегистрируем внешний сервис, такой как Amazon, как показано в следующем блоке кода и на снимке экрана.

$ sudo curl -X PUT -d '{"Datacenter": "dc1", "Node": "amazon",
"Address": "www.amazon.com",
"Service": {"Service": "shop", "Port": 80}}'
http://127.0.0.1:8500/v1/catalog/register

Регистрация внешних сервисов

Приведенная выше команда указывает сервис, называемый магазином. Этот узел называется amazon с его URL-адресом, доступным по адресу www.amazon.com на порте 80. Давайте проверим вывод на консуле, чтобы убедиться, что мы правильно установили этот сервис. Для этого, пожалуйста, откройте окно браузера по адресу localhost: 8500.

Регистрация внешних сервисов

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

$ curl -X PUT -d '{"Datacenter": "dc1", "Node": "amazon"}'
http://127.0.0.1:8500/v1/catalog/deregister

Удалить Сервис

Давайте проверим пользовательский интерфейс, как показано на следующем снимке экрана.

Удалить Сервис

Консул — Отказоустойчивые события

В этой главе мы узнаем о событиях отработки отказа в Консуле. Это будет сделано с помощью следующих функций —

  • Отказ одного кластера
  • Тестирование Jepsen
  • Многократный отказ кластера
  • Делать снимки

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

Отказ одного кластера

В случае сбоя одного кластера кластер, помещенный в один из центров обработки данных, начинает отказывать. В каждом случае важно удостовериться, что в случае сбоя система не только может предотвратить ее, но и имеет резервную копию, на которую она может положиться. Для предотвращения событий отказа Консульства мы будем использовать то, что называется Консул-оповещения. Основной проект можно найти по адресу — https://github.com/AcalephStorage/consul-alerts .

Consul-alerts — это высокодоступный демон для отправки уведомлений и напоминаний, основанный на проверках здоровья Consul. Этот проект запускает демон и API по адресу localhost: 9000 и подключается к агенту локального консула (localhost: 8500) с центром данных по умолчанию (dc1).

Есть два способа начать работу с проектом. Первый способ — установить его через GO . Для пользователей, которые установили и настроили GO, они могут выполнить шаги, указанные ниже:

$ go get github.com/AcalephStorage/consul-alerts
$ go install
$ consul-alerts start

Последняя команда может быть легко использована для переопределения портов по умолчанию для cons-alert, опции центра обработки данных, токена consul-acl и т. Д. Команду также можно записать, как указано ниже —

$ consul-alerts start --alert-addr = localhost:9000 --consul-addr = localhost:8500
--consul-dc = dc1 --consul-acl-token = ""

Второй метод предполагает использование пользователем Docker. Оба метода одинаково полезны в разных сценариях. Чтобы использовать Consul-alert через Docker, давайте извлечем изображение из Docker Hub с помощью следующей команды.

$ docker pull acaleph/consul-alerts

Консул-Alerts

В методе Docker мы можем рассмотреть следующие три варианта:

  • Использование Consul Agent, встроенного в сам контейнер.
  • Использование агента Консул, работающего над другим Docker-контейнером.
  • Использование Консул-оповещений для связи через удаленный экземпляр Консула.

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

Использование Consul Agent, встроенного в сам контейнер

Давайте запустим консул агента с помощью следующей команды —

$ docker run -ti \
   --rm -p 9000:9000 \
   --hostname consul-alerts \
   --name consul-alerts \  
   --entrypoint = /bin/consul \
   acaleph/consul-alerts \
   agent -data-dir /data -server -bootstrap -client = 0.0.0.0

Здесь мы переопределяем точку входа для Консула, как указано флагом —entrypoint . Наряду с этим мы загружаем клиента, упоминая порт, используемый с помощью флага -p, каталог данных / data с использованием флага -data-dir и client как 0.0.0.0.

Точка входа

В новом окне терминала, давайте запустим опцию consul-alerts.

$ docker exec -ti consul-alerts /bin/consul-alerts start --alertaddr = 0.0.0.0:9000
--log-level = info --watch-events --watch-checks

Здесь, на вышеуказанных шагах, мы выполняем консул-оповещения для запуска в интерактивном режиме. Порт адреса оповещения упоминается как 9000. Часы проверяют, включены ли агенты консула или нет, вместе с консулом проверяет.

Опция Оповещения

Мы ясно видим, что оповещения консула легко начались, и он зарегистрировал новую проверку здоровья с добавлением агента консула. Центр обработки данных принят за dc1, который может быть изменен в зависимости от пользователя.

Использование агента Консул, работающего над другим Docker-контейнером

Здесь вы можете использовать любой тип образа консула для запуска через Docker Container. Используя изображение consul-alerts, мы можем легко связать контейнер консул с контейнером консул-предупреждений. Это делается с помощью флага —link .

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

$ docker run -ti \
   -p 9000:9000 \
   --hostname consul-alerts \
   --name consul-alerts \
   --link consul:consul \
   acaleph/consul-alerts start \
   --consul-addr=consul:8500 \
   --log-level = info --watch-events --watch-checks

Использование Consul-оповещений для связи через удаленный экземпляр Consul

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

$ docker run -ti \
   -p 9000:9000 \
   --hostname consul-alerts \
   --name consul-alerts \
   acaleph/consul-alerts start \
   --consul-addr = remote-consul-server.domain.tdl:8500 \
   --log-level = info --watch-events --watch-checks

Тестирование Jepsen

Jespen — это инструмент, написанный для проверки частичного допуска и работы в сети в любой системе. Он проверяет систему, создавая некоторые случайные операции в системе. Джепсен написан на Clojure . К сожалению, для демонстрации тестирование Jepsen требует огромного уровня формирования кластеров с системами баз данных и, следовательно, выходит за рамки, которые мы здесь рассмотрим.

Jepsen работает путем настройки тестируемого хранилища данных на пяти разных хостах. Он создает клиента для тестируемого хранилища данных, указывая каждый из пяти узлов для отправки запросов. Он также создает специальную серию клиентов, называемых «Немезида», которые создают хаос в кластере, например, обрезая связи между узлами с помощью iptables . Затем он выполняет одновременные запросы к различным узлам, поочередно разделяя и восстанавливая сеть.

В конце тестового прогона он лечит кластер, ожидает его восстановления и затем проверяет, соответствует ли промежуточное и конечное состояние системы ожидаемому. Некоторые выдержки были взяты отсюда .

Для получения дополнительной информации о Jepsen Testing, проверьте это здесь .

Многократный отказ кластера

Во время события отказоустойчивости нескольких кластеров кластеры, развернутые в нескольких центрах обработки данных, не поддерживают службы, поддерживаемые клиентом. Consul позволяет нам гарантировать, что при возникновении одного из таких условий у Consul есть функции, которые помогут вам включить услуги в таких условиях.

Чтобы это произошло, мы рассмотрим проект, который поможет нам включить репликацию Consul из одного кластера в несколько кластеров. Проект предоставляет нам способ репликации пар K / V в нескольких центрах обработки данных Consul с использованием демона консула-репликации. Вы можете просмотреть этот проект Hashicorp по адресуhttps://github.com/hashicorp/consul-replicate . Некоторые из предварительных условий для испытания этого проекта включают в себя —

  • Golang
  • докер
  • консул
  • Гит

Давайте начнем со следующих команд —

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

$ git clonehttps://github.com/hashicorp/consul-replicate.git

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

Git Clone

$ cd consul-replicate
$ make

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

копировать

Если у вас возникли проблемы со сборкой двоичного файла, вы также можете попробовать вручную извлечь образы Docker с помощью следующей команды:

$ docker pull library/golang:1.7.4

Вышеупомянутая команда создаст bin / consul-replicate, который может быть вызван как двоичный файл. В следующей таблице показан полный список подкоманд, которые он охватывает.

вариант Описание
авт Имя пользователя базовой аутентификации (и необязательный пароль), разделенные двоеточием. Там нет значения по умолчанию.
консул * Расположение экземпляра консула для запроса (может быть IP-адрес или полное доменное имя) с портом.
макс-несвежий Максимальная устаревание запроса. Если указано, Consule будет распределять работу по всем серверам, а не только по лидерам. Значение по умолчанию 0 (нет).
SSL Используйте HTTPS во время разговора с Консулом. Требует, чтобы потребительский сервер был настроен на безопасные соединения с сервером. Значение по умолчанию неверно.
SSL-проверить Проверяйте сертификаты при подключении через SSL. Это требует использования -ssl. Значение по умолчанию верно.
системный журнал Отправьте вывод журнала в syslog (в дополнение к stdout и stderr). Значение по умолчанию неверно
Syslog-объект Возможность использовать при отправке в системный журнал. Это требует использования -syslog. По умолчанию это МЕСТНОЕ
знак Консул API-токен. Там нет значения по умолчанию.
префикс * Префикс источника, включая префикс назначения с параметрами, разделенный двоеточием (:). Этот параметр является аддитивным и может указываться несколько раз для репликации нескольких префиксов.
исключать Префикс для исключения во время репликации. Этот параметр является аддитивным и может быть указан несколько раз для исключения нескольких префиксов.
Подождите Минимум (: максимум) для ожидания стабильности перед репликацией, разделенный двоеточием (:). Если необязательное максимальное значение опущено, предполагается, что оно в 4 раза превышает требуемое минимальное значение. Там нет значения по умолчанию.
повторить попытку Время ожидания, если Consule возвращает ошибку при взаимодействии с API. Значение по умолчанию составляет 5 секунд.
конфиг Путь к файлу конфигурации или каталогу файлов конфигурации на диске относительно текущего рабочего каталога. Значения, указанные в CLI, имеют приоритет над значениями, указанными в файле конфигурации. Там нет значения по умолчанию.
срубы уровень Уровень журнала для вывода. Это относится к ведению журнала stdout / stderr, а также к ведению журнала syslog (если возможно). Допустимые значения: «debug», «info», «warn» и «err». Значением по умолчанию является «warn».
один раз Запустите Consule Replicate один раз и выйдите (в отличие от поведения демона по умолчанию). (CLI-только)
версия Вывести информацию о версии и выйти. (CLI-только)

Снимки

Снимки являются важной и важной частью управления кластером Consul в случае резервного копирования. По умолчанию Консул предоставляет нам способ сохранения снимков кластера консула. Консул предоставляет нам четыре отдельных подкоманды, с помощью которых мы можем использовать консул для создания снимков, которые:

  • Консул снимок сохранить
  • Консул снимок агента
  • Консул снимок осмотреть
  • Консул восстановление снимка

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

Консул Снимок Сохранить

Эта команда настроена на получение атомарного моментального снимка состояния серверов Consul на момент времени, который включает в себя записи ключей / значений, каталог услуг, подготовленные запросы, сеансы и ACL. Снимок сохраняется в указанном имени файла.

$ consul snapshot save <name-of-the-file>.snap

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

Снимок Сохранить

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

$ consul snapshot save -stale <name-of-file>.snap

Консул Агент Снимков

Эта подкоманда запускает процесс, который делает снимки состояния серверов Consul и сохраняет их локально или передает их в дополнительную службу удаленного хранения.

Агент моментальных снимков

Консул Снимок Осмотреть

Он используется для проверки моментального снимка состояния серверов Consul, который включает в себя записи ключа / значения, каталог услуг, подготовленные запросы, сеансы и ACL. Команда может быть выполнена следующим образом —

Примечание. Помните, что следующую команду можно выполнить только в каталоге, где сохранен снимок.

$ consul snapshot save <name-of-the-file>.snap

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

Снимок Осмотреть

Консул Восстановление Снимка

Команда восстановления моментального снимка используется для восстановления моментального снимка состояния серверов Consul, который включает записи ключа / значения, каталог услуг, подготовленные запросы, сеансы и списки ACL. Снимок считывается из сохраненного файла резервной копии.

Примечание. Помните, что следующую команду можно выполнить только в каталоге, в котором сохранен снимок.

$ consul snapshot restore <name-of-the-file>.snap

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

Восстановление снимка

Если вы работаете в Консуле с AWS, этот проект может помочь вам сэкономить время — https://github.com/pshima/consul-snapshot .

Консул — Использование пользовательского интерфейса

В этой главе мы узнаем, как использовать пользовательский интерфейс Consul (пользовательский интерфейс) и разберемся с его важными компонентами.

Консул UISetup

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

  • ACL — набор правил для легкой блокировки ваших кластеров

  • Центр обработки данных — позволяет вам легко управлять центрами обработки данных и работать с вашим кластером.

  • Узлы — Быстрое обновление на узлах, которые использует кластер Консул

ACL — набор правил для легкой блокировки ваших кластеров

Центр обработки данных — позволяет вам легко управлять центрами обработки данных и работать с вашим кластером.

Узлы — Быстрое обновление на узлах, которые использует кластер Консул

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

Чтобы использовать пользовательский интерфейс Консула, мы должны установить пакет пользовательского интерфейса, предоставленный командой Hashicorp, на сайте проекта Консула. Итак, давайте попробуем скачать его из источника и начать его использовать. Пожалуйста, используйте sudo перед каждой командой, если отображается ошибка Permission Denied .

$ mkdir /opt/consul-ui
$ cd /opt/consul-ui
$ wget https://releases.hashicorp.com/consul/0.7.2/consul_0.7.2_web_ui.zip
$ unzip consul_0.7.2_web_ui.zip
$ rm consul_0.7.2_web_ui.zip

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

$ consul agent -dev -ui -data-dir /tmp/consul

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

агент

По умолчанию вы будете наблюдать пользовательский интерфейс по адресу http: // localhost: 8500 / ui . Часть / ui такая же, как HTTP-консул API.

Для использования пользовательского интерфейса Consul через Docker, пожалуйста, выполните следующую команду для образа Docker (progrium / consul) —

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

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

progrium / Консул

Особенности Consul UI

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

  • Вершины
  • ACL
  • Key / Value
  • настройки
  • Дата центр
  • Сервисы

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

Вершины

Базовое использование узлов на панели управления пользовательским интерфейсом можно наблюдать, как показано на следующем снимке экрана.

UI Dashboard

Когда вы нажимаете на конкретный узел, такой как node1, в нашем случае, мы видим, что информацию об узле можно легко увидеть как —

node1

Вы можете в любое время отменить регистрацию узла в Консуле. Это позволяет легко управлять узлами с точки зрения кластера с высоким консулом.

ACL (списки контроля доступа)

Одна из лучших функций Consul — списки контроля доступа. Вы можете написать свои разные разрешения для разных кластеров в разных центрах обработки данных. Один из самых простых способов включить списки ACL — добавить новый файл json в каталог данных Консула. Чтобы включить и обновить ACL, вы можете добавить главный токен ACL в поле в настройках и обновить его, используя вкладку ACL.

Для получения дополнительной информации, пожалуйста, проверьте здесь

Вкладка ACL

Key / Value

Параметр Key Value для Consul по умолчанию присутствует в пользовательском интерфейсе Consul. Вы можете создать свой собственный ключ с помощью пользовательского интерфейса Консула. Он также предоставляет возможность создать папку для хранения вашего ключа.

Key / Value

настройки

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

настройки

Дата центр

Опцию центра обработки данных можно легко изменить и переключить по выбору. Пользовательский интерфейс Консула автоматически обновляет определение количества центров обработки данных, над которыми работает Консул.

Сервисы

Пользовательский интерфейс Консула также предоставляет вкладку «Службы» для настройки и просмотра служб, развернутых в данный момент с помощью Консула. Это дает нам возможность настраивать сервисы в зависимости от узлов.

Консул — Использование Консул на AWS

В этой главе мы узнаем, как использовать Consul в AWS (Amazon Web Services).

Особенности AWS

Некоторые функции, которые полезны при использовании Consul в AWS:

  • Легко поддерживать состояния кластера.
  • Масштабируемость и высокая доступность.
  • Отличный пользовательский интерфейс для управления кластерами в нескольких центрах обработки данных.
  • Простые в использовании параметры командной строки.

Если вы ищете решение, с помощью которого мы можем легко развернуть Consul на AWS с Docker. Проверьте следующую ссылку — https://github.com/dwmkerr/terraform-consul-cluster .

Развертывание AWS

Для использования AWS мы можем начать с создания VPC для него. Для развертывания консула в AWS мы будем использовать шаблон быстрого запуска, предоставляемый сервисом AWS. Этот шаблон можно легко найти по адресу — https://aws.amazon.com/quickstart/architecture/consul/ .

В этой главе мы предполагаем, что вы уже знакомы с основами AWS. Шаблон AWS CloudFormation создаст следующие компоненты:

  • VPC с общими и частными подсетями в трех зонах доступности.

  • Сервер Seed Consul и клиент Seed вместе с двумя группами автоматического масштабирования.

  • Вы можете создать 3, 5 или 7 серверов. Количество клиентов по умолчанию установлено на три, но оно настраивается пользователем.

  • Dnsmasq , который устанавливается и настраивается для Consul как часть установки.

  • Кластер Консул, использующий опцию bootstrap_expect .

VPC с общими и частными подсетями в трех зонах доступности.

Сервер Seed Consul и клиент Seed вместе с двумя группами автоматического масштабирования.

Вы можете создать 3, 5 или 7 серверов. Количество клиентов по умолчанию установлено на три, но оно настраивается пользователем.

Dnsmasq , который устанавливается и настраивается для Consul как часть установки.

Кластер Консул, использующий опцию bootstrap_expect .

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

Взаимосвязанное

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

Убедитесь, что вы уже вошли в свою инфраструктуру AWS с помощью веб-консоли. Теперь, пожалуйста, вставьте следующий URL в окно браузера. После ввода URL-адреса и нажатия клавиши ВВОД откроется веб-сайт AWS.

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

Для этой демонстрации мы выберем ее развертывание в новом VPC (Virtual Private Cloud). Вы всегда можете проверить свое Управление VPC в AWS по следующей ссылке — https: // <awsregion> .console.aws.amazon.com / vpc / home. Для пользователей в первый раз регионом по умолчанию является Западный Орегон в США. Таким образом, вы можете напрямую перейти по адресу: https: // us-west- 2.console.aws.amazon.com/vpc/home.

VPC Management

Как вы можете видеть, сервис VPC в AWS работает, и у вас нет VPC, т.е. он уже запущен / настроен для вашей учетной записи AWS. Теперь, пожалуйста, выберите опцию Deploy на AWS в новый VPC или Deploy в существующий VPC в соответствии с вашим выбором. Вы можете просмотреть эту опцию на сайте, как показано на следующем снимке экрана.

VPC сервис

Нажав на вышеописанную опцию, вы можете увидеть, что она открывает другое окно, аналогичное показанному ниже.

Создать стек

Как видно из шаблона, AWS уже выбрал URL-адрес от вашего имени. Это также дает вам свободу настраивать шаблон формирования облаков так, как вам нравится. Вы можете настроить его, если хотите, и нажмите кнопку «Далее», чтобы продолжить.

Укажите детали

Как вы можете видеть, есть различные значения и параметры, которые вы можете настроить здесь. Для некоторых изменений вы можете переименовать его по своему выбору вместо названия HashiCorp-Consul. Пожалуйста, не стесняйтесь изменять другие параметры в соответствии с вашими удобствами.

конфигурировать

Как вы можете видеть выше, несколько вариантов могут быть настроены по вашему выбору. Как вы можете видеть в разделе «Настройка Consul», тип экземпляра Consul Cluster по умолчанию — t2.medium . Вы можете изменить его по своему выбору.

Примечание. Заполните допустимый диапазон как 0.0.0.0/0 для разрешения любого IP-адреса.

По умолчанию количество консул серверов равно трем. Вы можете изменить его на пять для тестирования большего количества серверов в среде консула. Под конфигурацией быстрого запуска вы можете видеть, что корзина S3 также используется и по умолчанию именуется ссылкой быстрого запуска. Когда вы закончите с изменениями, нажмите на кнопку Далее в нижней части экрана.

Опции

На приведенном выше снимке экрана видно, что есть возможность использовать теги для лучшей идентификации и использования. Наряду с этим вам также предоставляется возможность выбрать роль IAM для предоставления доступа другим пользователям к вашему стеку VPC. Вы можете выбрать в соответствии с вашим выбором вариантов.

Чтобы получить дополнительные параметры, выберите вкладку «Дополнительно» , где вы можете включить Amazon SNS для своего VPC для уведомлений. Пожалуйста, перейдите к следующей опции, когда вы закончили детали.

Обзор

Приведенный выше экран показывает вам просмотренные данные стека консула, который вы выбрали. Вы можете просмотреть выбранные параметры стека VPC и перейти к нижней части экрана, установить флажок подтверждения создания ресурсов IAM и перейти к нажатию кнопки «Создать», чтобы завершить формирование стека.

Вы можете проверить вывод в разделе CloudFormation Stack консоли управления AWS. Что касается вывода VPC, вы также можете проверить его в разделе VPC консоли AWS, как показано на снимке экрана ниже.

CloudFormation

Если вы тестируете только шаблон Consul, убедитесь, что вы удалили использованные вами ресурсы. Это легко сделать, удалив стек CloudFormation в разделе CloudFormation и VPC на панели мониторинга VPC.