Консул - Начальная загрузка и 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
Результат будет таким, как показано на следующем снимке экрана.