Установка Consul · 6 min read · Sep 10, 2025

Как установить сервер Consul на AlmaLinux 9

Consul — это современная платформа для обнаружения сервисов, которая позволяет регистрировать сервисы через DNS и HTTP интерфейс. Она также предлагает функцию Service mesh, которая обеспечивает безопасные соединения через TLS и предоставляет авторизацию между сервисами. Кроме того, Consul также предоставляет API Gateway для управления доступом к сервисам и KV (Key/Value) хранилище для хранения конфигурации сервисов.

В этом руководстве мы пошагово проведем вас через установку кластера Consul с несколькими серверами на AlmaLinux 9.

Предварительные требования

Чтобы завершить это руководство, убедитесь, что у вас есть следующее:

  • Два или более сервера AlmaLinux в одной сети.
  • Непривилегированный пользователь с правами администратора.

Настройка системы

На этом первом этапе вы подготовите свои серверы AlmaLinux для установки Consul, что включает в себя:

  • Настройку Firewalld для открытия портов.
  • Настройку SELinux в режим Permissive.

Настройка Firewalld

Перед установкой пакетов вам необходимо открыть порты на ваших серверах Consul. Для операционной системы на базе RHEL вы будете использовать Firewalld для открытия портов.

Выполните команду ниже, чтобы открыть порты 8300, 8301, 8302, 8400, 8500 и 8600 на ваших серверах AlmaLinux. Если все прошло успешно, вы должны получить вывод, подобный успеху.

sudo firewall-cmd --permanent --zone=public --add-port={8300,8301,8302,8400,8500,8600}/tcp

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

sudo firewall-cmd --reload

Наконец, проверьте свои правила firewalld, используя следующую команду. Убедитесь, что порты 8300, 8301, 8302, 8400, 8500, 8600 доступны на вашем firewalld.

sudo firewall-cmd --zone=public --list-all

настройка firewalld

Изменение SELinux на Permissive

После настройки firewalld вы измените режим SELinux по умолчанию на permissive. Это будет генерировать журналы ошибок на SELinux, не блокируя действия.

Выполните следующую команду, чтобы изменить режим SELinux на permissive.

sudo setenforce 0  
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

Затем перезагрузите ваши серверы, чтобы изменения вступили в силу.

sudo reboot

Теперь, когда вы настроили все свои серверы AlmaLinux, вы можете начать установку Consul.

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

Consul — это платформа сетевого взаимодействия сервисов, которая поддерживает несколько операционных систем. Также Consul предоставляет репозиторий пакетов для дистрибутивов Linux, включая дистрибутивы на базе RHEL. На этом этапе вы установите Consul из репозитория Consul через DNF.

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

sudo dnf install dnf-plugins-core nano

установка основных пакетов

Теперь выполните команду DNF ниже, чтобы добавить репозиторий Consul на ваши серверы Alma Linux. Затем проверьте список доступных репозиториев на каждом сервере.

sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo  
sudo dnf repolist

Следующий вывод подтверждает, что вы добавили репозиторий HashiCorp в ваши системы.

добавить репозиторий hoshicorp

Далее установите Consul, выполнив следующую команду. Наберите y, чтобы продолжить установку Consul.

sudo dnf install consul

установка consul

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

which consul  
consul version

Вывод ниже подтверждает, что исполняемый файл Consul доступен по адресу /bin/consul, и текущая версия Consul 1.17.

Настройка Consul

На этом этапе вы установили Consul на всех своих серверах AlmaLinux. Давайте начнем настраивать кластер Consul с несколькими серверами без дальнейших задержек. Для иллюстрации мы будем использовать три сервера AlmaLinux.

|  Хостнейм  |    IP-адрес   |  
| ---------  |  -------------- |  
|  consul1   |  192.168.10.41  |  
|  consul2   |  192.168.10.42  |  
|  consul3   |  192.168.10.43  |

Сначала остановите службу consul на каждом сервере, выполнив команду ниже.

sudo systemctl stop consul

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

consul keygen

На всех ваших серверах Consul откройте файл конфигурации по умолчанию Consul /etc/consul.d/consul.hcl с помощью следующей команды редактора nano.

sudo nano /etc/consul.d/consul.hcl

Измените конфигурацию по умолчанию на следующую и обратите внимание на некоторые параметры ниже:

  • server: True означает, что узел будет действовать как сервер Consul.
  • advertise_addr: Измените это на соответствующий IP-адрес сервера Consul.
  • bootstrap_expect: Сколько серверов будет в вашем кластере?
  • encrypt: Каждый сервер должен иметь одинаковый ключ.
  • retry_join: Введите IP-адреса кластера Consul в этот параметр.
# Полные параметры конфигурации можно найти по адресу https://www.consul.io/docs/agent/config  
  
# datacenter  
datacenter = "kitty-dc1"  
  
# data_dir  
# Этот флаг предоставляет каталог данных для агента для хранения состояния.   
data_dir = "/opt/consul"  
  
# client_addr  
# Адрес, к которому Consul будет привязывать клиентские интерфейсы, включая HTTP и DNS  
# серверы.  
client_addr = "0.0.0.0"  
  
# ui  
# Включает встроенный веб-интерфейс и необходимые HTTP маршруты.  
ui_config{  
  enabled = true  
}  
  
# домен по умолчанию  
domain = "consul"  
  
# включить dns_config  
dns_config{  
  enable_truncate = true  
  only_passing = true  
}  
  
# сервер  
# Этот флаг используется для управления тем, находится ли агент в режиме сервера или клиента. Когда он предоставлен,  
# агент будет действовать как сервер Consul. Каждый кластер Consul должен иметь как минимум один  
# сервер и, в идеале, не более 5 на каждый дата-центр. Все серверы участвуют в алгоритме консенсуса Raft  
# для обеспечения того, чтобы транзакции происходили последовательно и линейно. Транзакции изменяют состояние кластера, которое  
# поддерживается на всех узлах сервера для  
# обеспечения доступности в случае сбоя узла. Узлы сервера также участвуют в  
# WAN gossip pool с узлами сервера в других дата-центрах. Серверы действуют как шлюзы к  
# другим дата-центрам и пересылают трафик по мере необходимости.  
server = true  
  
# Рекламируемый адрес - если вы хотите указать клиентам другой адрес, чем привязка или LB.  
advertise_addr = "192.168.10.41"  
  
# bootstrap_expect  
# Этот флаг предоставляет количество ожидаемых серверов в дата-центре.  
bootstrap_expect=3  
  
# encrypt  
# Указывает секретный ключ, который будет использоваться для шифрования сетевого трафика Consul.  
encrypt = "jFtV8jj4h1hnXGqTllWH+sOqLo/tw9xnnfDHcVxVnYg="  
  
# retry_join  
retry_join = ["192.168.10.41", "192.168.10.42", "192.168.10.43"]

Сохраните и выйдите из файла, когда закончите.

Далее выполните следующую команду, чтобы проверить конфигурации Consul. Если у вас правильный синтаксис, вы должны получить вывод, подобный ‘ Конфигурация действительна ‘.

sudo consul validate /etc/consul.d/

проверка consul

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

sudo systemctl start consul  
sudo systemctl enable consul

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

sudo systemctl status consul

В следующем выводе вы должны увидеть, что Consul работает на сервере consul1.

consul1 работает

В следующем выводе вы должны увидеть, что Consul работает на сервере consul2.

consul2 работает

В следующем выводе вы должны увидеть, что Consul работает на сервере consul3.

consul3 работает

Взаимодействие с кластером Consul

Теперь, когда вы настроили кластер Consul на серверах AlmaLinux, вы можете проверить и взаимодействовать с кластером Consul через командную строку consul.

Проверка кластера Consul

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

consul members

В этом примере кластер Consul состоит из трех серверов: consul1, consul2 и consul3.

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

consul operator raft list-peers

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

Добавление KV (Key-Value) хранилища в Consul

Далее выполните следующую команду consul, чтобы создать новую базу данных ключ-значение. В этом примере вы создадите новый ключ db_name со значением testdb.

consul kv put consul/configuration/db_name testdb

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

consul kv get consul/configuration/db_name

Вы должны получить значение testdb, как показано ниже:

добавить kv consul

Взаимодействие с DNS на Consul

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

dig @127.0.0.1 -p 8600 consul.service.consul

В этом примере вы настроили серверы Consul в кластере с тем же доменным именем, что и consul. Следующее подтверждает, что домен consul.service.consul с A записями 192.168.10.41, 192.168.10.42, 192.168.10.43.

consul dns

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

Наконец, откройте веб-браузер и перейдите по IP-адресу сервера Consul с портом 8500, например: http://192.168.10.41:8500/ui/, чтобы получить панель управления веб-администрированием Consul.

Ниже вы должны увидеть доступные серверы в кластере Consul.

веб-интерфейс consul

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

список узлов

Затем нажмите на меню Ключ/Значение, чтобы получить список доступных KV на ваших серверах Consul.

проверка kv

Заключение

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

С этого момента вы можете активировать ACL (Списки управления доступом) и реализовать TLS для соединений между серверами и клиентами Consul.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.