Консул - Начальная загрузка и DNS

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

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

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

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

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

$ sudo consul info

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

Эта команда покажет фактическую работу консула в real working scenarios. Он отобразит алгоритм Raft, работающий в Consul. Команду автоматической начальной загрузки можно показать с помощью следующей команды -

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

Automatic bootstrapping cannot be done in -dev mode.

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

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

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

In this case, we will assume that a 3-node consul cluster is to be built.

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

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

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

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

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

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

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

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

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

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

$ 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 для настройки 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-сервер локального агента Consul. Это делается путем обновления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

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

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

$ 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

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