Найти в Дзене
Vseodevops

Установка Consul Server на AlmaLinux 9/el9

sudo dnf update -y sudo dnf install -y curl unzip
sudo firewall-cmd --permanent --zone=public --add-port={8300,8301,8302,8400,8500,8600}/tcp sudo firewall-cmd --reload sudo firewall-cmd --zone=public --list-all SELinux: sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config sudo reboot 2. Установка Consul из бинарника curl -O https://releases.hashicorp.com/consul/1.16.0/consul_1.16.0_linux_amd64.zip unzip consul_1.16.0_linux_amd64.zip sudo mv consul /usr/local/bin/ consul --version Ставим утилиту: sudo dnf install dnf-plugins-core nano Подключаем репозиторий: sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo dnf repolist Далее: sudo dnf install consul
which consul
consul version На этом этапе вы уже установили Consul на все серверы AlmaLinux. Давайте приступим к настройке кластера Consul с несколькими серверами. В качестве примера мы будем использовать три сервера AlmaLinux: Имя хостаIP-адресconsul1192.168.
Оглавление

Установка Consul Server на AlmaLinux 9

1. Подготовка системы

  • Обновите пакеты:
sudo dnf update -y
  • Установите необходимые зависимости:
sudo dnf install -y curl unzip

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

SELinux:

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

2. Установка Consul из бинарника

  1. Скачайте бинарник Consul (актуальную версию проверьте на официальном сайте):
curl -O https://releases.hashicorp.com/consul/1.16.0/consul_1.16.0_linux_amd64.zip
  1. Распакуйте архив:
unzip consul_1.16.0_linux_amd64.zip
  1. Переместите файл в /usr/local/bin:
sudo mv consul /usr/local/bin/
  1. Проверьте установку:
consul --version

2.1. Установка Consul из репозитория

Ставим утилиту:

sudo dnf install dnf-plugins-core nano
-4

Подключаем репозиторий:

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

Далее:

sudo dnf install consul
which consul
consul version
-6

Настройка Consul

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

Имя хостаIP-адресconsul1192.168.10.41consul2192.168.10.42consul3192.168.10.43

  1. Остановите службу Consul на всех серверах, выполнив команду:
sudo systemctl stop consul
  1. Сгенерируйте ключ шифрования для кластера. На сервере consul1 выполните:bashCopyconsul keygen
    Обязательно сохраните сгенерированный ключ - он понадобится для настройки всех серверов кластера.
Важно:
Ключ должен быть одинаковым на всех серверах кластера
Без правильного ключа серверы не смогут установить защищенное соединение
Храните ключ в безопасном месте - он используется для шифрования внутреннего трафика кластера

Следующим шагом будет настройка конфигурационных файлов на каждом сервере с использованием этого ключа шифрования.

-7

Настройка конфигурации Consul

На всех серверах Consul откройте основной конфигурационный файл с помощью редактора nano:

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

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

  • server: true - указывает, что нода будет работать как сервер Consul
  • advertise_addr - замените на IP-адрес текущего сервера
  • bootstrap_expect - количество серверов в кластере
  • encrypt - ключ шифрования (должен быть одинаковым на всех серверах)
  • retry_join - список IP-адресов серверов кластера
# Полный список параметров конфигурации:
# https://www.consul.io/docs/agent/config

# Название дата-центра
datacenter = "kitty-dc1"

# Директория для хранения данных
data_dir = "/opt/consul"

# Адрес для клиентских подключений
# (включая HTTP и DNS интерфейсы)
client_addr = "0.0.0.0"

# Включение веб-интерфейса
ui_config {
enabled = true
}

# Домен по умолчанию
domain = "consul"

# Настройки DNS
dns_config {
enable_truncate = true
only_passing = true
}

# Режим сервера
server = true

# Рекламный адрес (для клиентских подключений)
advertise_addr = "192.168.10.41"

# Ожидаемое количество серверов в кластере
bootstrap_expect = 3

# Ключ шифрования трафика
encrypt = "jFtV8jj4h1hnXGqTllWH+sOqLo/tw9xnnfDHcVxVnYg="

# Список серверов для подключения
retry_join = ["192.168.10.41", "192.168.10.42", "192.168.10.43"]

После внесения изменений сохраните файл и выйдите из редактора (Ctrl+X, затем Y и Enter).

Проверка конфигурации

Выполните следующую команду для проверки корректности конфигурации. При успешной проверке вы увидите сообщение "Configuration is valid":

sudo consul validate /etc/consul.d/

Важно:
Для каждого сервера укажите его собственный
advertise_addr
Ключ encrypt должен быть одинаковым на всех серверах кластера
Параметр
bootstrap_expect должен соответствовать фактическому количеству серверов
-8

Выполните следующие команды для запуска и настройки автозагрузки Consul:

# Запуск службы Consul
sudo systemctl start consul

# Включение автозагрузки при старте системы
sudo systemctl enable consul

После этого проверьте статус работы службы:

sudo systemctl status consul

Ожидаемый вывод для сервера consul1:

-9

После выполнения одинаковых шагов на всех серверах, убедитесь в корректной работе:

-10

После выполнения одинаковых шагов на всех серверах, убедитесь в корректной работе:

-11

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

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

Выполните следующую команду, чтобы проверить доступные серверы в кластере:

consul members

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

-12

Для проверки списка участников кластера выполните:

consul operator raft list-peers

Вы увидите детальную информацию о каждом сервере, включая ID, состояние, роль (voter) и версию RaftProtocol.

-13

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

Создайте новую базу данных ключ-значение с помощью команды:

consul kv put consul/configuration/db_name testdb

Чтобы получить значение для ключа db_name, выполните:

consul kv get consul/configuration/db_name

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

-14

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

Для проверки конфигурации DNS Consul используйте команду:

dig @127.0.0.1 -p 8600 consul.service.consul

Это подтвердит, что домен consul.service.consul содержит A-записи для серверов 192.168.10.41, 192.168.10.42 и 192.168.10.43.

-15

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

Откройте веб-браузер и перейдите по адресу сервера Consul с портом 8500, например:

http://192.168.10.41:8500/ui/

Вы увидите доступные серверы в кластере. Для получения детальной информации о каждом сервере перейдите в меню Nodes, а для просмотра списка ключей-значений — в меню Key/Value.

-16

-17

-18

Заключение

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

Теперь вы можете активировать ACL (Access Control Lists) и настроить TLS для безопасного соединения между серверами и клиентами Consul.