Установка кластера Consul на Ubuntu 22.04

Введение
Consul — современная платформа для обнаружения сервисов, предоставляющая регистрацию через DNS и HTTP, встроенную сервисную сетку (service mesh) для TLS‑соединений и авторизации между сервисами, API‑Gateway и KV‑хранилище для конфигураций. Эта инструкция рассчитана на Ubuntu 22.04 и демонстрирует развертывание простого кластера из трёх серверов.
Важно: пример использует три узла в одной внутренней сети, с root‑доступом на каждом узле.
Требования
- Три сервера с Ubuntu 22.04, взаимно доступные по внутренней сети.
- Права root или sudo на каждом сервере.
- Базовые навыки командной строки Linux.
Примечание: IP‑адреса серверов в примерах — 192.168.5.36, 192.168.5.37, 192.168.5.38. Замените их на реальные адреса вашей сети.
Установка зависимостей и репозитория
Перед установкой Consul подготовьте систему: установите транспорт HTTPS, GPG и утилиты загрузки.
sudo apt install apt-transport-https gnupg curl wget
Добавьте GPG‑ключ HashiCorp и репозиторий:
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpgecho "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.listОбновите индекс пакетов и установите Consul:
sudo apt update
sudo apt install consul
Проверьте установку и версию:
which consul
consul versionВы увидите расположение бинарника и номер версии.

Настройка UFW (брандмауэра)
Consul использует ряд TCP‑портов для межузлового взаимодействия, DNS и HTTP. Откройте их на всех узлах.
Сначала разрешите OpenSSH и включите UFW:
sudo ufw allow OpenSSH
sudo ufw enableПодтвердите включение (y) при запросе.

Откройте порты Consul (8300, 8301, 8302, 8400, 8500, 8600) на всех узлах:
for i in 8300/tcp 8301/tcp 8302/tcp 8400/tcp 8500/tcp 8600/tcp
do sudo ufw allow $i
doneПроверьте статус UFW:
sudo ufw status
Важно: в продуктивной среде ограничьте правила так, чтобы порты были открыты только для доверенной сети или IP‑адресов узлов Consul.
Создание конфигурации кластера
Остановите сервис Consul перед внесением конфигурации:
sudo systemctl stop consulНа первом сервере сгенерируйте ключ шифрования для межузлового трафика и распространите его на остальные узлы (как файл или через безопасный канал):
consul keygenСоздайте файл конфигурации /etc/consul.d/consul.hcl на каждом узле. В примере используются параметры, важные для работы кластера:
# Полные опции: https://www.consul.io/docs/agent/config
# datacenter
datacenter = "my-dc-1"
# data_dir
# Каталог для хранения состояний агента.
data_dir = "/opt/consul"
# client_addr
# Адрес, к которому будут привязаны клиентские интерфейсы (HTTP и DNS).
client_addr = "0.0.0.0"
# ui
# Включение встроенного веб UI.
ui_config{
enabled = true
}
# default domain
domain = "consul"
# dns_config
dns_config{
enable_truncate = true
only_passing = true
}
# server
# Режим сервера. В кластере должно быть >=1 и желательно не больше 5 серверов на датацентр.
server = true
# advertise_addr
# IP, который другие узлы будут использовать для подключения к этому узлу.
advertise_addr = "192.168.5.36"
# bootstrap_expect
# Ожидаемое число серверов в кластере (в примере 3).
bootstrap_expect = 3
# encrypt
# Общий ключ шифрования TLS/ Gossip. Один и тот же на всех серверах.
encrypt = "t/r8+jTHbMd9u/bD63i70e+h4pLUSRprn2mXKTKJXEY="
# retry_join
# Список IP адресов серверов для автоматического присоединения.
retry_join = ["192.168.5.36", "192.168.5.37", "192.168.5.38"]Сохраните файл и проверьте синтаксис:
sudo consul validate /etc/consul.d/Если синтаксис правильный, вы увидите сообщение “Configuration is valid!”.
Запустите Consul на каждом узле (сначала consul01, затем consul02, потом consul03):
sudo systemctl start consul
sudo systemctl status consul


Критерии приёмки
- Служба consul запущена на всех узлах (systemctl status active).
- Команда consul members показывает все 3 узла.
- consul operator raft list-peers возвращает как минимум 3 voters.
- KV‑пара может быть записана и прочитана с любого узла.
- Веб‑UI доступен по порту 8500 с одного из узлов.
Проверка и работа с кластером
Просмотрите список участников:
consul membersПроверьте состояние Raft:
consul operator raft list-peersСоздайте KV‑ключ и получите его значение:
consul kv put consul/configuration/test_db testkv
consul kv get consul/configuration/test_dbПроверьте DNS Consul (локально на узле):
dig @127.0.0.1 -p 8600 consul.service.consul
Доступ к веб‑интерфейсу Consul
По умолчанию веб‑UI доступен на порту 8500 по пути /ui. Откройте URL вида http://192.168.5.36:8500/ui/ в браузере.
В веб‑интерфейсе можно просмотреть узлы, сервисы, ключ‑значения и статус кластера.



Рекомендации по безопасности и эксплуатации
Важно обеспечить безопасность хранения конфигураций и межузлового трафика.
- Используйте общий ключ encrypt для Gossip и включите TLS в service mesh.
- Рассмотрите включение ACL (Access Control Lists) Consul для контроля доступа к KV и API.
- Храните секреты в специализированных хранилищах (Vault) вместо KV для чувствительных данных.
- Ограничьте правила UFW только доверенной подсетью.
- Включите аудит логов и настройте ротацию логов.
Примечание: хранение персональных данных в KV может подпадать под требования GDPR; используйте шифрование и минимизацию данных.
Отладка и распространённые ошибки
- Если узлы не видят друг друга: проверьте маршрутизацию и firewall, убедитесь, что advertise_addr правильный.
- Если raft не формируется: проверьте bootstrap_expect и убедитесь, что все серверы в списке retry_join запущены одновременно при первом запуске.
- Ошибка в конфигурации: запустите sudo consul validate /etc/consul.d/ и исправьте синтаксис.
- Проблемы с DNS (порт 8600): проверьте, что UFW открывает 8600/tcp и локальный dig отправляется на 127.0.0.1.
Мини‑чеклист для диагностики
- systemctl status consul
- sudo journalctl -u consul –no-pager | tail -n 200
- consul members
- consul operator raft list-peers
- sudo consul validate /etc/consul.d/
Роли и обязанности (короткие чек‑листы)
Администратор кластера:
- Подготовить и защитить сети между узлами.
- Управлять ключами шифрования и ACL.
- Резервировать и восстанавливать data_dir.
Оператор (DevOps):
- Разворачивать пакет и обновлять конфигурации.
- Мониторить состояние Raft и использование ресурсов.
- Автоматизировать создание/удаление сервисов и проверку работоспособности.
Разработчик:
- Регистрировать сервисы через API или DNS.
- Читать/писать KV только для конфигов приложения (не для секретов).
- Тестировать интеграцию с service mesh и правилами безопасности.
Короткая методология внедрения (шаги)
- Подготовьте 3 сервера и сеть.
- Установите зависимости и пакет Consul.
- Сгенерируйте encrypt‑ключ и разнесите по серверам.
- Создайте /etc/consul.d/consul.hcl на каждом узле с корректным advertise_addr.
- Проверяйте конфигурацию и запускайте сервисы последовательно.
- Проверяйте raft, members, KV и UI.
- Включите ACL и TLS для продовой среды.
Полезные команды (cheat sheet)
# Проверка установки
which consul
consul version
# Проверка и валидация конфигов
sudo consul validate /etc/consul.d/
# Управление сервисом
sudo systemctl start|stop|restart consul
sudo systemctl status consul
# Инструменты отладки
consul members
consul operator raft list-peers
consul kv put key value
consul kv get keyКому подходит этот гайд
- Инженерам DevOps, которые разворачивают сервисную сетку или хотят централизованное KV‑хранилище.
- Командам, начинающим использовать Consul в тестовой или пред‑продакшн среде.
Заключение
Поздравляю — вы развернули базовый кластер Consul на трёх серверах Ubuntu 22.04, открыли порты, проверили членов кластера, Raft, KV и веб‑интерфейс. Для продакшна дополните настройку ACL, TLS, мониторинг и резервное копирование data_dir.
Ключевые шаги на будущее: автоматизация конфигураций (Ansible/Terraform), интеграция с Vault для секретов и настройка SSO для доступа к UI.
Сводка
- Установите Consul через официальный репозиторий HashiCorp.
- Откройте необходимые порты и настройте advertise_addr на каждом узле.
- Сгенерируйте и распространяйте encrypt‑ключ.
- Проверьте raft, members, KV и UI.
Важно: для боевого использования дополнительно настройте ACL, TLS и мониторинг.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента