Гид по технологиям

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

• 5 min read • DevOps • Обновлено 24 Nov 2025
Consul на Ubuntu 22.04: установка кластера
Consul на Ubuntu 22.04: установка кластера

Схема установки кластера Consul на трёх узлах

Введение

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

Установка зависимостей 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.gpg
echo "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

Установка пакета Consul через apt

Проверьте установку и версию:

which consul
consul version

Вы увидите расположение бинарника и номер версии.

Проверка версии Consul и расположения двоичного файла

Настройка UFW (брандмауэра)

Consul использует ряд TCP‑портов для межузлового взаимодействия, DNS и HTTP. Откройте их на всех узлах.

Сначала разрешите OpenSSH и включите UFW:

sudo ufw allow OpenSSH
sudo ufw enable

Подтвердите включение (y) при запросе.

Подтверждение включения UFW и профиля OpenSSH

Откройте порты 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

Статус UFW с открытыми портами Consul

Важно: в продуктивной среде ограничьте правила так, чтобы порты были открыты только для доверенной сети или 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 на первом узле

Статус сервиса Consul на втором узле

Статус сервиса 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

Проверка DNS Consul через dig

Доступ к веб‑интерфейсу Consul

По умолчанию веб‑UI доступен на порту 8500 по пути /ui. Откройте URL вида http://192.168.5.36:8500/ui/ в браузере.

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

Консоль администратора Consul с отображением трёх узлов

Список узлов и их статусы в Consul UI

Просмотр ключей в разделе Key/Value Consul 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 и правилами безопасности.

Короткая методология внедрения (шаги)

  1. Подготовьте 3 сервера и сеть.
  2. Установите зависимости и пакет Consul.
  3. Сгенерируйте encrypt‑ключ и разнесите по серверам.
  4. Создайте /etc/consul.d/consul.hcl на каждом узле с корректным advertise_addr.
  5. Проверяйте конфигурацию и запускайте сервисы последовательно.
  6. Проверяйте raft, members, KV и UI.
  7. Включите 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 и мониторинг.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро